Componentes.Terceros.RemObj.../official/5.0.23.613/Data Abstract for Delphi/Samples/Dynamic SQL/DynSQLMainClient.pas

118 lines
3.3 KiB
ObjectPascal
Raw Permalink Normal View History

unit DynSQLMainClient;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uROWinInetHttpChannel, uROClient,
uROBINMessage, StdCtrls, Spin, uDADataTable,
DB, Grids, DBGrids, uRORemoteService,
uDAScriptingProvider, ExtCtrls, DBCtrls, uDARemoteDataAdapter,
uDADataStreamer, uDAInterfaces, uDABin2DataStreamer,
uDAMemDataTable;
type
TDynSQLMainClientForm = class(TForm)
ROBINMessage: TROBINMessage;
ROWinInetHTTPChannel1: TROWinInetHTTPChannel;
Memo: TMemo;
seMaxRecs: TSpinEdit;
Label1: TLabel;
RetrieveSchema: TButton;
DataStreamer: TDABin2DataStreamer;
DataTable: TDAMemDataTable;
Grid: TDBGrid;
DADataSource: TDADataSource;
svcDynSQLService: TRORemoteService;
RetrieveData: TButton;
RetrieveSchemaAndData: TButton;
Save: TButton;
Load: TButton;
Update: TButton;
dbNavigator: TDBNavigator;
DARemoteDataAdapter: TDARemoteDataAdapter;
procedure RetrieveSchemaClick(Sender: TObject);
procedure RetrieveDataClick(Sender: TObject);
procedure RetrieveSchemaAndDataClick(Sender: TObject);
procedure SaveClick(Sender: TObject);
procedure LoadClick(Sender: TObject);
procedure UpdateClick(Sender: TObject);
procedure DataTableBeforeRefresh(DataTable: TDADataTable);
private
{ Private declarations }
procedure InitRDA(aIncludeSchema: Boolean; AMaxRecords: integer);
public
{ Public declarations }
end;
var
DynSQLMainClientForm: TDynSQLMainClientForm;
implementation
uses DynSQLLibrary_Intf, uROTypes, uDARemoteDataAdapterRequests, uRODL;
{$R *.dfm}
procedure TDynSQLMainClientForm.RetrieveSchemaClick(Sender: TObject);
begin
InitRDA(True, 0);
DataTable.Close;
end;
procedure TDynSQLMainClientForm.RetrieveDataClick(Sender: TObject);
begin
InitRDA(False, seMaxRecs.Value);
end;
procedure TDynSQLMainClientForm.RetrieveSchemaAndDataClick(Sender: TObject);
begin
InitRDA(True, seMaxRecs.Value);
end;
procedure TDynSQLMainClientForm.SaveClick(Sender: TObject);
begin
DataTable.SaveToFile(ExtractFilePath(Application.ExeName) + 'Data.dat');
end;
procedure TDynSQLMainClientForm.LoadClick(Sender: TObject);
begin
DataTable.LoadFromFile(ExtractFilePath(Application.ExeName) + 'Data.dat');
end;
procedure TDynSQLMainClientForm.UpdateClick(Sender: TObject);
var
deltadata: Binary;
begin
deltadata := Binary.Create;
try
// Packs the delta of the data table and sends it over.
DataStreamer.Initialize(deltadata, aiWrite);
DataStreamer.WriteDelta(DataTable);
DataStreamer.Finalize;
(svcDynSQLService as IDynSQLService).MyUpdateData(deltadata);
finally
deltadata.Free;
end;
end;
procedure TDynSQLMainClientForm.DataTableBeforeRefresh(DataTable: TDADataTable);
begin
DaRemoteDataAdapter.GetDataCall.ParamByName('aSQLText').AsString := Memo.Lines.Text;
end;
procedure TDynSQLMainClientForm.InitRDA(aIncludeSchema: Boolean;
AMaxRecords: integer);
begin
with DataTable do begin
Close;
DARemoteDataAdapter.GetDataCall.ParamByName('aSQLText').AsString := Memo.Lines.Text;
MaxRecords := AMaxRecords;
DARemoteDataAdapter.Fill([DataTable], true, aIncludeSchema);
end;
end;
end.