一、服務器端函式:
function TServerStockMethods.GetDllDatas(ASql,
AComponentName: String): TFDJSONDataSets;
var
AQry : TFDQuery;
//LDataSets: TFDJSONDataSets;
begin
try
AQry := FindComponent(AComponentName) as TFDQuery;
if AQry = nil then exit;
AQry.Close;
AQry.SQL.Clear;
AQry.SQL.Text := ASql;
try
// Create dataset list
Result := TFDJSONDataSets.Create;
//Result := TJSONObject.Create;
// Add dataset
TFDJSONDataSetsWriter.ListAdd(Result, AQry);
//TFDJSONInterceptor.DataSetsToJSONObject(LDataSets, Result);
except
end;
except
end;
end;
二、DLL呼叫程序:
procedure TFrmKCFindStock.Action1Execute(Sender: TObject);
var
AServerStockMethodsClient : TServerStockMethodsClient;
LDataSetList: TFDJSONDataSets;
LDataSet: TFDDataSet;
//LJSONObject : TJSONObject;
begin
try
AServerStockMethodsClient := TServerStockMethodsClient.Create(GSQLConnection.DBXConnection);
LDataSetList := AServerStockMethodsClient.GetDllDatas(PWideChar('select * from kc_BuyOrder'),PWideChar('FDQryKCBuyOrder'));
LDataSet := TFDJSONDataSetsReader.GetListValue(LDataSetList,0);
// Update UI
FDMemTable1.Active := False;
FDMemTable1.AppendData(LDataSet);
finally
AServerStockMethodsClient.Free;
end;
end;
各位大俠幫忙看下是什么原因,謝謝。
在應用程式呼叫是正常的。
uj5u.com熱心網友回復:
有難度,放盒子論壇問問uj5u.com熱心網友回復:
查詢的功能我已經實作,就DataSnap三層如何用FireDAC做更新呢?查詢方法:
服務器端方法
function TFSMethods.GetData(fSQL :string):TDataSet;
var
FDQuery : TFDQuery;
begin
Result := nil;
FDQuery := TFDQuery.Create(nil);
try
if not FDConn.Connected then FDConn.Connected := True;
FDQuery.Connection := FDConn;
if Trim(fSQL)<>'' then
begin
FDQuery.Open(fSQL);
Result := TFDMemTable.Create(nil);
TFDMemTable(Result).Data := FDQuery.Data;
end;
finally
FreeAndNil(FDQuery);
FDConn.Connected := False;
end;
end;
客戶端呼叫:
Class function TRemote.GetData(ASQL:string; FDMTable:TFDMemTable):Boolean;
begin
Result := False;
try
try
FCDMod.FDSCon.Connected := True;
FCDMod.FDSProc.Close;
FCDMod.FDSProc.Unprepare;
FCDMod.FDSProc.StoredProcName := 'TFSMethods.GetData';
FCDMod.FDSProc.Prepare;
FCDMod.FDSProc.Params[0].Value := ASQL;
FCDMod.FDSProc.Open;
FDMTable.Close;
FDMTable.Data := FCDMod.FDSProc.Data;
Result := True;
except
on e : Exception do
begin
MsgInfo.ShowError('查詢失敗!'+e.Message,ErrTitle);
Result := False;
end;
end;
finally
FCDMod.FDSProc.Close;
FCDMod.FDSProc.StoredProcName := '';
FCDMod.FDSCon.Connected := False;
end;
end;
uj5u.com熱心網友回復:
直接回傳TDataSet型別,速度比較慢,最好可以回傳TFDJSONDataSetsuj5u.com熱心網友回復:
放在盒子論壇,連個回應都沒有uj5u.com熱心網友回復:
AQry.open;uj5u.com熱心網友回復:
另外:客戶端:var FDAdaptedDataset:TFDAdaptedDataset;
FDJsonDatasets:TFDJsonDatasets;
ADOReport:TFDMemoTable;
begin
FDAdaptedDataset := TFDJSONDataSetsReader.GetListValueByName
(FDJsonDatasets, pSelectKey); // 主表:pSelectKey1
if ADOReport.Active=False then ADOReport.AppendData(FDAdaptedDataset); // UI所需記憶體表獲得資料
end;
uj5u.com熱心網友回復:
可以參考下李維的Delphi 10.1 Berlin DataSnap 開發手冊FD 更新一般是通過TFDSchemaAdapter這個控制元件進行的,比較方便,可以多表快取更新
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/27782.html
標籤:數據庫相關
上一篇:如何定義 怎么定義一個 自定義型別 的 常量? 一般 定義好的型別 的 定?義常量 有什么規律或者技巧
下一篇:react頁面跳轉及資料提取
