0

次のようなサーバー メソッドを持つ DataSnap サーバーがあります。

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

ここで、TSQLServerMethod を使用する DataSnap クライアントで、デザイン モードでサーバーに正常に接続し、サーバーのメソッド リストをプルし、「selectFalzUser」を選択します...そして、Usuario を入力として、出力 TDataset の両方のパラメータを正常に確認できます。パラメータ... SqlServerMethod Active を設定しようとすると...次のエラーが表示されます。

エラー リモート エラー: TServerMethods1.selectFalzUserwhereUsuario メソッドがサーバー メソッド リストに見つかりません。

Delphi がメソッド名に「whereUsuario」文字列を追加するのはなぜですか? 明らかに TServerMethods1.selectFalzUserwhereUsuario は存在しません。

よろしく

ザゲリーノ。

4

1 に答える 1

0

メソッド名が正しく報告されていない理由は、コードを詳しく調べないとわかりません。ただし、DataSnap を正しく使用しているようには思えません。これが私がいくつかのプロジェクトで成功したことです:

DataSnap サーバーでは、クラス定義{$METHODINFO ON}の前とTServerMethodsクラス定義の後に含める必要があります。{$METHODINFO OFF}次に、DS サーバーをコンパイルして実行します。

クライアント側で、コンポーネントを追加TSQLConnectionし、リスト DS サーバーに接続するようにそのプロパティを設定します。次に、 を右クリックしてTSQLConnectionを選択しますGenerate DataSnap client classes。これを次のようProxyMethods.pasに保存し、クライアント プロジェクトに含めます。次に、クラスにアクセスして、サーバーProxyMethodsで公開されているいずれかを呼び出すことができTServerMethodsます。

また、 OleVariant はマーシャリング可能なデータ型ではないTDataSetため、私が説明したアプローチでは戻りが機能しません。TDataSetを返すことに成功し、クライアント側でこれをクライアント側のプロパティにTClientDataSet.Data直接割り当てることができます。DataTClientDataSet

于 2012-08-06T21:07:06.207 に答える