2012-08-06 118 views
0

我有這樣的服務器方法的DataSnap服務器:現在DataSnap服務器抱怨服務器方法不存在...德爾福2010的DataSnap

function TServerMethods1.selectFalzUser(Usuario: string) : TDataSet; 

,使用TSQLServerMethod DataSnap客戶機,我成功地連接到服務器在設計模式,拉服務器的方法列表...選擇'selectFalzUser'...我可以成功地看到我的參數,Usuario作爲輸入,並輸出TDataset參數...當嘗試設置我的SqlServerMethod活動.. 。我得到以下錯誤:

Error Remote error: TServerMethods1.selectFalzUserwhereUsuario method not found in the server method list.

爲什麼Delph我正在將'whereUsuario'字符串附加到方法名稱上?顯然TServerMethods1.selectFalzUserwhereUsuario不存在。

Regards

zaguerino。

+0

TDataSet不是您可以在DataSnap遠程函數調用中返回的類型。不要saludo。! – jachguate 2012-08-06 23:41:01

+0

嗨,我正在閱讀鮑勃斯沃特的白皮書:「Delphi 2010 DataSnap:您的數據在哪裏,你想要它」,它顯示了一個服務器方法: function TServerMethods1.GetEmployees:TDataSet; 在服務器方法中返回行的正確類型是什麼? Registers Zaguerinho – 2012-08-07 02:28:01

回答

0

沒有看到更多的代碼,很難說爲什麼它沒有正確報告方法名稱。但是,這聽起來並不像你使用DataSnap那麼正確。以下是我已經爲幾個項目做成功:

必須在DataSnap服務器類定義之後包括{$METHODINFO ON}TServerMethods類定義之前和{$METHODINFO OFF}。然後編譯並運行您的DS服務器。

在客戶端,添加一個TSQLConnection組件並設置其屬性以連接到您的列表DS服務器。然後右鍵點擊TSQLConnection並選擇Generate DataSnap client classes。將其保存爲ProxyMethods.pas,並將其包含在您的客戶端項目中。然後,您可以訪問ProxyMethods類來調用服務器中發佈的任何TServerMethods

另外,返回TDataSet將不適用於我所描述的方法,因爲TDataSet不是可編組數據類型,但OleVariant是。我在返回TClientDataSet.Data方面取得了很好的成功,然後在客戶端,我可以直接將此分配給客戶端TClientDataSetData屬性。

+0

謝謝,我加了指令,但仍然是同樣的錯誤。我不得不創建一個服務器方法完全符合它抱怨的名稱,然後調用原來的方法名稱很奇怪,它的工作,但似乎並不正確。 – 2012-08-06 22:16:03

+1

我同意,這看起來不正確。您可以修改您的問題並描述您使用(詳細)創建客戶端和服務器的過程。 SO上有幾個DataSnap專家可以幫助識別問題。 – 2012-08-06 22:37:10

相關問題