?
Solved

Trying to insert record using flex 3 example

Posted on 2009-03-31
6
Medium Priority
?
610 Views
Last Modified: 2013-12-24
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
Comment
Question by:COwebmaster
  • 4
6 Comments
 
LVL 19

Accepted Solution

by:
Gary Benade earned 1000 total points
ID: 24037746
is the id field of your database an autoincrement field?
0
 
LVL 19

Assisted Solution

by:Jones911
Jones911 earned 1000 total points
ID: 24038762
Any errors?
0
 

Author Comment

by:COwebmaster
ID: 24039519
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
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 

Author Comment

by:COwebmaster
ID: 24040019
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
 

Author Comment

by:COwebmaster
ID: 24040149
actually, i figured it out.  The New button cleared the fields and the Save button, saved the record.
0
 

Author Comment

by:COwebmaster
ID: 24040178
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

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

One of the typical problems I have experienced is when you have to move a web server from one hosting site to another. You normally prepare all on the new host, transfer the site, change DNS and cross your fingers hoping all will be ok on new server…
When it comes to security, close monitoring is a must. According to WhiteHat Security annual report, a substantial number of all web applications are vulnerable always. Monitis offers a new product - fully-featured Website security monitoring and pr…
Integration Management Part 2
Despite its rising prevalence in the business world, "the cloud" is still misunderstood. Some companies still believe common misconceptions about lack of security in cloud solutions and many misuses of cloud storage options still occur every day. …
Suggested Courses
Course of the Month9 days, 16 hours left to enroll

569 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question