服務端:
--------------------------------------------------------
function TServerMethods1.openSQL_ole1(Asql: WideString;out ret:olevariant):boolean ;
begin
with ADOQuery1 do
begin
Close;
sql.Clear;
SQL.Text:=Asql;
ret:=true;
ret:=DataSetProvider1.Data;
end;
end;
客戶端:
--------------------------------------------------------
var
aa: TServerMethods1Client;
bb: OleVariant;
a1,a2:WideString;
c,i:integer;
d:boolean;
begin
aa := TServerMethods1Client.Create(ClientModule1.SQLConnection1.DBXConnection);
ClientDataSet1.Close;
a1:='select * from employe' ;
d:=aa.openSQL_ole1(a1,bb);
ClientDataSet1.Data:=bb;
Sleep(50);
StatusBar1.Panels.Items[0].Text:=IntToStr(i) ;
aa.Free
end;
function TServerMethods1Client.openSQL_ole1(Asql: WideString; out ret:olevariant ):boolean ;
begin
if FopenSQL_ole1Command = nil then
begin
FopenSQL_ole1Command := FDBXConnection.CreateCommand;
FopenSQL_ole1Command.CommandType := TDBXCommandTypes.DSServerMethod;
FopenSQL_ole1Command.Text := 'TServerMethods1.openSQL_ole1';
FopenSQL_ole1Command.Prepare;
end;
FopenSQL_ole1Command.Parameters[0].Value.SetWideString(Asql);
FopenSQL_ole1Command.ExecuteUpdate;
ret := FopenSQL_ole1Command.Parameters[1].Value.AsVariant ;
Result := FopenSQL_ole1Command.Parameters[2].Value.GetBoolean;
end;
客戶端執行報錯:Remote error : VAR and OUT arguments must match parameter type exactly
把out換成 VAR也是報錯,
把out ret:olevariant 換成out ret:integer 回傳olevariant不報錯,
求大神指點一二
uj5u.com熱心網友回復:
Remote error VAR and OUT arguments must match parameter type exactly遠程傳輸資料錯誤,VAR和引數必須完全匹配引數型別
這樣試試:
// 服務器端
function TServerMethods1.openSQL_ole1(const Asql: WideString;out ret:olevariant):boolean ;
// 客戶端
var SQL:string;
bb:boolean;
d:=aa.openSQL_ole1(SQL,bb);
uj5u.com熱心網友回復:
不行,還是報同樣的錯uj5u.com熱心網友回復:
一樣的問題,頂你uj5u.com熱心網友回復:
問題解決了么?uj5u.com熱心網友回復:
我也遇到相同的問題,同樣的代碼在DELPHI XE4下運行完全沒問題,可是放到RAD 10.1 Berlin下編譯后運行時,就出現
Remote error: VAR and OUT arguments must match parameter type exactly.
with SqlServerMethod1 do
begin
Close;
ServerMethodName := '';
Params.Clear;
ServerMethodName := 'TDSDBSave.ParamTest';
Prepared := True;
Params[0].AsString := 'test';
//下面的 Params[1].value是Variant型別,Delta是OleVariant型別,疑似引發引數不匹配的原因!!
Params[1].Value := cdsMaster.Delta;
ExecuteMethod;//執行到這觸發例外: Remote error: VAR and OUT arguments must match parameter type exactly.
Close;
end;
uj5u.com熱心網友回復:
function TServerMethods1.openSQL_ole1(Asql: WideString;out ret:olevariant):boolean ;
begin
result:=false;
with ADOQuery1 do
begin
Close;
sql.Clear;
SQL.Text:=Asql;
ret:=DataSetProvider1.Data;
result:=true;
end;
end;
uj5u.com熱心網友回復:
我也遇到了,發現DX10.1Berlin Datasnap的引數是OleVariant型別并定義為var或out時會出此問題。uj5u.com熱心網友回復:
請問樓主有沒有解決此問題?如何解決?轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/55077.html
標籤:網絡通信/分布式開發
上一篇:Spring Boot 2.4.0 正式版即將發布!
下一篇:mySQL 跳行查詢
