• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 611
  • Last Modified:

Trying to insert record using flex 3 example

I'm trying to add a new record to the db but nohting gets inserted.  I can populate the datagrid and make a change to an existing record but can't add a new record into the table.  I got this file up on flexcf.com.  Any ideas experts?
mxml:
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="ro.getData()"  viewSourceURL="srcview/index.html">
	<mx:RemoteObject id="ro" destination="ColdFusion" showBusyCursor="true" source="cfc.crud">
		<mx:method name="getData" result="getDataResult(event)" />
		<mx:method name="saveNewData" result="getDataResult(event)" />
		<mx:method name="saveOldData" result="getDataResult(event)" />
		<mx:method name="deleteData" result="getDataResult(event)" />
	</mx:RemoteObject>
	<mx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.rpc.events.ResultEvent;
			
			private var isNew:Boolean = true;
			
			public function getDataResult(e:ResultEvent):void{
				dg.dataProvider = e.result as ArrayCollection;
				makeNew();
				
			}
			private function makeNew():void{
				firstNameFld.text = "";
				lastNameFld.text = "";
				officePhoneFld.text = "";
				isNew = true;
			}
			private function save():void{
				if(isNew){
					ro.saveNewData(firstNameFld.text,lastNameFld.text,officePhoneFld.text);
				}else{
					ro.saveOldData(firstNameFld.text,lastNameFld.text,officePhoneFld.text,dg.selectedItem.id);
				}
			}
			private function deleteData():void{
				if(dg.selectedIndex > -1 )ro.deleteData(dg.selectedItem.id);
			}
		]]>
	</mx:Script>
	<mx:DataGrid id="dg" change="isNew = false" width="366">
	</mx:DataGrid>
	<mx:Panel width="424" height="318" layout="absolute">
		<mx:Form top="0" bottom="0" right="0" left="0">
			<mx:FormItem label="First Name" id="firstnameLbl">
				<mx:TextInput id="firstNameFld" text="{dg.selectedItem.firstNameFld}"/>
			</mx:FormItem>
			<mx:FormItem label="Last Name" id="lastnameLbl">
				<mx:TextInput id="lastNameFld" text="{dg.selectedItem.lastNameFld}"/>
			</mx:FormItem>
			<mx:FormItem label="Office Phone" id="officephoneLbl">
				<mx:TextInput id="officePhoneFld" text="{dg.selectedItem.officePhoneFld}"/>
			</mx:FormItem>
		</mx:Form>
	</mx:Panel>
	<mx:Button label="New" click="makeNew()"/>
	<mx:Button label="Save" click="save()"/>
	<mx:Button label="Delete" click="deleteData()" />  
</mx:Application>
 
 
cfc:
<cfcomponent output="false">
	<cffunction name="getData" access="remote" returntype="Query">
		<cfset var local = {} />
		<cfquery name="local.q" datasource="media">
			select		id, firstNameFld, lastNameFld, officePhoneFld
			from		employees
		</cfquery>
		<cfreturn local.q/>
	</cffunction>
	
	<cffunction name="saveNewData" access="remote" returntype="Query">
		<cfargument name="firstNameFld" type="string" required="true"/>
		<cfargument name="lastNameFld" type="string" required="true"/>
		<cfargument name="officePhoneFld" type="string" required="true"/>
		
		<cfquery datasource="media">
			insert		
			into		employees
						( firstNameFld, lastNameFld, officePhoneFld )
			values		( <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.firstNameFld#"/>,
						  <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.lastNameFld#"/>,
						  <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.officePhoneFld#"/> )
		</cfquery>
		<cfreturn getData() />
	</cffunction>
	
	<cffunction name="saveOldData" access="remote" returntype="Query">
		<cfargument name="firstNameFld" type="string" required="true"/>
		<cfargument name="lastNameFld" type="string" required="true"/>
		<cfargument name="officePhoneFld" type="string" required="true"/>
		<cfargument name="id" type="Numeric" required="true" />
		
		<cfquery datasource="media">
			update		employees		
			set			firstNameFld = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.firstNameFld#" />,
						lastNameFld = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.lastNameFld#" />,
						officePhoneFld = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.officePhoneFld#" />
			where		id = <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.id#" />
		</cfquery>
		<cfreturn getData() />
	</cffunction>
	
	<cffunction name="deleteData" access="remote" returntype="Query">
		<cfargument name="id" type="string" required="true">
		
		<cfquery datasource="media">
			delete
			from		employees
			where		id = <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.id#" />
		</cfquery>
		<cfreturn getData() />
	</cffunction>
		
</cfcomponent>

Open in new window

0
COwebmaster
Asked:
COwebmaster
  • 4
2 Solutions
 
Gary BenadeCommented:
is the id field of your database an autoincrement field?
0
 
Jones911Commented:
Any errors?
0
 
COwebmasterAuthor Commented:
I'm just using a mdb file.  yes, the id field is Autonumber and is a PK.

There is no error.  The fields just become blank.
0
Get 10% Off Your First Squarespace Website

Ready to showcase your work, publish content or promote your business online? With Squarespace’s award-winning templates and 24/7 customer service, getting started is simple. Head to Squarespace.com and use offer code ‘EXPERTS’ to get 10% off your first purchase.

 
COwebmasterAuthor Commented:
This is the function on the New button..

private function makeNew():void{
firstNameFld.text = "";
lastNameFld.text = "";
officePhoneFld.text = "";
isNew = true;
}

So isnew is being set to true so shouldn't it call the save() method?..

private function save():void{
if(isNew){
ro.saveNewData(firstNameFld.text,lastNameFld.text,officePhoneFld.text);
}else{
ro.saveOldData(firstNameFld.text,lastNameFld.text,officePhoneFld.text,dg.selectedItem.id);
}
}
0
 
COwebmasterAuthor Commented:
actually, i figured it out.  The New button cleared the fields and the Save button, saved the record.
0
 
COwebmasterAuthor Commented:
Would you know how I could open a new window to insert new records into the datagrid?  So instead of those buttons on the root, the buttons and the fields would be in a seperate window.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now