Solved

Trying to insert record using flex 3 example

Posted on 2009-03-31
6
600 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 250 total points
ID: 24037746
is the id field of your database an autoincrement field?
0
 
LVL 19

Assisted Solution

by:Jones911
Jones911 earned 250 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
Complete Microsoft Windows PC® & Mac Backup

Backup and recovery solutions to protect all your PCs & Mac– on-premises or in remote locations. Acronis backs up entire PC or Mac with patented reliable disk imaging technology and you will be able to restore workstations to a new, dissimilar hardware in minutes.

 

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

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Suggested Solutions

First things first - Preparation We need all the part for this install and it's much nicer to have them all on hand when you need them so here's what's required. Download Eclipse 3.5 32 bit (I like the Classic flavour) from here. (http://www.e…
Have you ever sent email via ColdFusion and thought of tracking this mail to capture the exact date and time when the message was opened ?  If yes, then this article is for you ! First we need a table user_email with columns user_id , email , sub…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

760 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

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now