PDA

Volledige versie bekijken : Connectie met cf-database


titter
%Europe/Berlin %622 %2006, 14:56
Heb een applicatie ontwikkeld die connectie maakt met een cf-server en geprobeerd om via een cfquery data uit een databank te halen maar dit lukt niet.
Moet volgende week deze app inbrengen op school en heb geen idee hoe ik ze kan oplossen. Er is namelijk ook weinig over te vinden op het net. Kan er iemand helpen :S



<mx:Panel y="90" width="250" height="200" layout="absolute" title="ColdFusion Data weergeven" horizontalCenter="9.5">
<mx:TextArea x="10" y="10" text="{cfService.getID()}" width="210" fontSize="15" height="140"/>
</mx:Panel>


<cffunction name="getID" access="remote" returntype="string">
<cfquery datasource="CFSchool" name="cfschool">
SELECT naam
FROM gebruikers
where id = '1'
</cfquery>
</cffunction>

Waldo
%Europe/Berlin %037 %2006, 00:54
Weinig info over te vinden? Al eens gekeken op een van de ColdFusion communities, of Adobe DevNet? ;-)

Je hebt niet de code gepost over hoe je RemoteObject gebruikt om naar het CFC te geraken, dus dat is al lastig. Natuurlijk moet je ook je systeem juist geconfigureerd hebben.

Daarnaast geeft je CFFUNCTION geen return statement, dus zal er nooit iets op de client geraken.

TheDutch
%Europe/Berlin %841 %2006, 20:12
Naast wat Waldo je al aangaf over je Coldfusion functie die geen return waarde geeft denk ik dat dit je ook weer verder helpt. Lees ook het commentaar:

<mx:Script>
<![CDATA[
import mx.controls.Alert;

// Declareer een bindable variable
[Bindable]
private var getIDResult:String;

// Functie die het result van getID() afhandelt.
private function getIDResultHandler(event:ResultEvent):void{
// Geef het result aan de Bindable variable getIDResult.
this.getIDResult = event.result as String;
}

// Functie die een eventuele error van getID() afhandelt
private function getIDFaultHandler(event:FaultEvent):void{
// Laat het error bericht zien.
Alert.show(event.fault.faultCode + "\n" + event.fault.faultString, "fault");
}
]]>
</mx:Script>

<mx:RemoteObject id="cfService" destination="ColdFusion" source="pad.naar.CFC">
<!--- Zoals je ziet bepaal ik voor de method GetID() de result en fault handlers --->
<mx:method name="getID" result="getIDResultHandler(event)" fault="getIDFaultHandler(event)" />
</mx:RemoteObject>

<mx:Panel y="90" width="250" height="200" layout="absolute" title="ColdFusion Data weergeven" horizontalCenter="9.5">
<!--- Zoals je ziet gebruik ik de Bindable variable getIDResult als waarde voor property "text". --->
<mx:TextArea creationComplete="cfService.getID()" x="10" y="10" text="{getIDResult}" width="210" fontSize="15" height="140"/>
</mx:Panel>

TheDutch
%Europe/Berlin %846 %2006, 20:19
------------------------------------

titter
%Europe/Berlin %653 %2006, 15:41
Het systeem is juist geconfigureerd. Hoe return ik dan een waarde, ik weet te weinig van coldfusion om iets te proberen.
<mx:RemoteObject id="cfService" destination="ColdFusion" source="flex2btb.cfc.MyService"/>

En theDutch bedankt voor het antwoord, heb er veel uit geleerd.

TheDutch
%Europe/Berlin %678 %2006, 16:16
Dit is denk ik wat je wilt hebben:

FLEX 2:

<mx:Script>
<![CDATA[
import mx.controls.Alert;

// Declareer een bindable variable
[Bindable]
private var getNameResult:String;

// Functie die het result van getName() afhandelt.
private function getNameResultHandler(event:ResultEvent):void{
// Geef het result aan de Bindable variable getNameResult.
this.getNameResult = event.result as String;
}

// Functie die een eventuele error van getName() afhandelt
private function getNameFaultHandler(event:FaultEvent):void{
// Laat het error bericht zien.
Alert.show(event.fault.faultCode + "\n" + event.fault.faultString, "fault");
}
]]>
</mx:Script>

<mx:RemoteObject id="cfService" destination="ColdFusion" source="flex2btb.cfc.MyService">
<!--- Zoals je ziet bepaal ik voor de method getName() de result en fault handlers --->
<mx:method name="getName" result="getNameResultHandler(event)" fault="getNameFaultHandler(event)" />
</mx:RemoteObject>

<mx:Panel y="90" width="250" height="200" layout="absolute" title="ColdFusion Data weergeven" horizontalCenter="9.5">
<!--- Zoals je ziet gebruik ik de Bindable variable getNameResult als waarde voor property "text". --->
<mx:TextArea creationComplete="cfService.getName(1)" x="10" y="10" text="{getNameResult}" width="210" fontSize="15" height="140"/>
</mx:Panel>


COLDFUSION:

<cffunction name="getName" access="public" returntype="string">
<cfargument name="id" required="true" type="numeric">
<cfquery datasource="CFSchool" name="cfschool">
SELECT naam
FROM gebruikers
where id = <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.id#">
</cfquery>
<cfreturn CFSchool.naam>
</cffunction>

Momenteel geeft de functie getName steeds dezelfde naam terug omdat steeds het ID 1 wordt meegegeven. Dit moet je nog dynamisch maken maar de opzet is goed zo. Ik ben ervan uitgegaan dat de column 'id' van tabel 'gebruikers' van het type integer is :).

titter
%Europe/Berlin %765 %2006, 18:22
Ik heb een beetje opzoekingswerk verricht en het schijnt dat er een extension bestaat met de volgende wizard:ColdFusion / Flex application wizard – generates a complete Flex application from a database query, including CFCs, Actionscript and MXML.
Weet iemand waar ik deze kan vinden en op flex builder kan zetten?

TheDutch
%Europe/Berlin %772 %2006, 18:32
Die zit bij Flex Builder 2 en kan je installeren als Eclipse Plugin: http://www.cfreport.org/downloads/CF_FB_Extensions.zip

Let wel dat RDS aan moet staan op de Coldfusion Server!

titter
%Europe/Berlin %778 %2006, 18:40
RDS?