2009-11-03 8 views
1

편집 가능한 DataGrid가 있고 모든 편집이 완료된 후 데이터베이스에 삽입하기 위해 CFC를 통해 데이터베이스로 다시 보내야합니다. . 배열 컬렉션을 cfdump로 덤프하면 항목과 구조체가있는 배열이 있지만 각각을 통해 "루프"하고 DB에 삽입하는 방법을 이해할 수 없다는 것을 알 수 있습니다.데이터베이스에 삽입하기 위해 편집 된 Flex DataGrid를 CFC에 전달하는 방법

실제로 작동하는 서적이 거의없는 것 같습니다! 내 MXML과 CFC는 아래에 있지만 "클래스가있는 ColdFusion.runtime.Array 유형의 스칼라 변수를 멤버가있는 구조로 역 참조하려고했습니다."라는 오류가 표시됩니다. - 어떤이 좋은

모든 도움을 많이 감사합니다 - 감사

[Bindable] 
private var getconsent:ArrayCollection = new ArrayCollection([ 
{LocationName:'Service A', Contact: 'Bob Jones' }, 
{LocationName:'Service B', Contact: 'Jane Smith' }, 
{LocationName:'Service c', Contact: 'Doug Johnson' }, 
{LocationName:'Service d', Contact: 'John Jackson'} 
]); 

public function send():void { 
cfdata.sendData(getconsent.source); 
} 

public function send_Result(event:ResultEvent):void { 
Alert.show('ok'); 
} 

public function send_Fault(event:FaultEvent):void { 
Alert.show(event.fault.message); 
} 

]]> 
</mx:Script> 

<mx:RemoteObject 
id="cfdata" 
showBusyCursor="true" 
destination="ColdFusion" 
source="buildtest.test2"> 

<mx:method name="sendData" result="send_Result(event)" fault="send_Fault(event)" /> 
</mx:RemoteObject> 

<mx:DataGrid id="myGrid" 
dataProvider="{getconsent}" editable="true" > 
<mx:columns> 
<mx:DataGridColumn dataField="LocationName" width="150" 
editable="false"/> 

<mx:DataGridColumn dataField="Contact" width="150" /> 

</mx:columns> 
</mx:DataGrid> 
<mx:Button label="Update DB" click="send()"/> 


<cfcomponent displayname="sendData" output="false" > 
    <cffunction name="sendData" access="remote" output="no" returnType="void"   required="yes" > 

     <cfargument name="getconsent" type="any" required="true"> 

     <cfloop from="1" to="#ArrayLen(getconsent.dataprovider)#" index="i"> 

      <cfquery name="clientconsent" datasource="gvr"> 

       INSERT INTO ClientConsent" 
         (Location) 
       VALUES 
       ('#getconsent.dataprovider.LocationName[i]#') 

      </cfquery> 
     </cfloop> 
    </cffunction> 

</cfcomponent> 

배열 1 개 구조체 연락 밥 존스
LocationName 서비스 및 A
012 당신이 CF9를 사용하는 경우 3,516,이 807D204F-A315-7D78-C745-BAD78087CB28에게

2 struct 
Contact  Jane Smith 
LocationName Service B 
mx_internal_uid EAA43EF4-A7EA-82C9-5F3C-BAD780D7FD6F 

3 struct 
Contact  Doug Johnson 
LocationName Service c 
mx_internal_uid 9768D6D2-8F97-5F4D-767C-BAD780D7B478 
+0

PLS 성능 이유 INSIDE cfquery 등 다른 방법은 주위를 CFLOOP 사용 . :) – Henry

+0

Henry의 의견을 확대하기 위해 현재 각 쿼리에 대해 데이터베이스에 대한 새로운 연결을 만들고 있습니다. 루프를 안에 넣으면 하나의 연결 만 만들어집니다. 이것은 사용중인 데이터 소스 드라이버가 여러 명령 (세미콜론으로 구분)을 게시 할 수 있다고 가정합니다. –

답변

2

을 mx_internal_uid, 플렉스 4 DCD를 시도 : http://ria.dzone.com/articles/flash-remoting-and-coldfusion

을 당신이 LCDS를 시도 플렉스 3 CF8를 사용하는 경우 : http://www.adobe.com/devnet/coldfusion/articles/data_app.html

+0

cfloop 퍼팅에 대한 요점을 주셔서 감사합니다 내가 할 것입니다 (학교 소년 오류 내가 추측;) 그러나 나는 플렉스 3에서 cf7에 직선 연결을 사용하지 않습니다 SQLExpress DB-이 쉽습니다하지만 나는 명백한 무엇인가를 놓치고있는 것처럼 보인다. – charlie

+0

원래 질문에 cfdump를 추가했습니다. 그 퍼즐은 저에게 구조체와 멤버가있는 배열이며, coldfusion이 불평하는 것입니다.하지만 배열은 무엇입니까? – charlie

+0

구조체의 배열을 얻는다면 # getconsent.dataprovider [i] .LocationName #을 사용해보십시오. – Henry

0

구조체 배열 대신 쿼리 개체로 작업하는 것이 더 쉬울까요? Flex 어플리케이션에서 ArrayCollection을 반환 한 후 ArrayCollection을 CF의 Query [ArrayCollectionToQuery]로 변환하는 UDF를 만들었습니다.

0
이 그것을하지만 난 내 DB에 데이터를 삽입하는 데 사용하는 방법을 잘 모르겠습니다, 매우 유용 보이는위한

안녕 아담 덕분에

<cfquery name="clientconsent" datasource="gvr"> 
INSERT INTO dbo.ClientConsent 
(Location, ClientAppointments, ClientDemographics) 
VALUES(
     #qresult# 
) 
</cfquery> 
관련 문제