You've already forked lazarus-ccr
164 lines
4.2 KiB
ObjectPascal
164 lines
4.2 KiB
ObjectPascal
![]() |
{*******************************************************}
|
||
|
{ }
|
||
|
{ Open QBuilder Engine for SQLDB Sources }
|
||
|
{ Lazarus / Free Pascal }
|
||
|
{ }
|
||
|
{ Created by Reinier Olislagers }
|
||
|
{ Data: October 2014 }
|
||
|
{ }
|
||
|
{*******************************************************}
|
||
|
|
||
|
unit QBEZmsql;
|
||
|
{$mode objfpc}{$H+}
|
||
|
|
||
|
interface
|
||
|
|
||
|
uses
|
||
|
SysUtils, Classes, DB, sqldb, QBuilder,
|
||
|
ZMConnection,ZMQueryDataSet;
|
||
|
|
||
|
type
|
||
|
|
||
|
{ TOQBEngineZmsql }
|
||
|
|
||
|
TOQBEngineZmsql = class(TOQBEngine)
|
||
|
procedure FResultQueryAfterOpen(DataSet: TDataSet{TZMQueryDataSet});
|
||
|
procedure GridMemoFieldGetText(Sender: TField; var aText: string;
|
||
|
{%H-}DisplayText: Boolean);
|
||
|
private
|
||
|
FResultQuery: TDataset{TZMQueryDataSet};
|
||
|
FZmsqlConnection : TZMConnection;
|
||
|
public
|
||
|
constructor Create(AOwner: TComponent); override;
|
||
|
destructor Destroy; override;
|
||
|
procedure ClearQuerySQL; override;
|
||
|
procedure CloseResultQuery; override;
|
||
|
procedure OpenResultQuery; override;
|
||
|
procedure ReadFieldList(const ATableName: string); override;
|
||
|
procedure ReadTableList; override;
|
||
|
procedure SaveResultQueryData; override;
|
||
|
procedure SetConnection(Value: TZMConnection);
|
||
|
procedure SetQuerySQL(const Value: string); override;
|
||
|
function ResultQuery: TDataSet{TZMQueryDataset}; override;
|
||
|
function SelectDatabase: Boolean; override;
|
||
|
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
|
||
|
published
|
||
|
property Connection: TZMConnection read FZmsqlConnection write SetConnection;
|
||
|
end;
|
||
|
|
||
|
implementation
|
||
|
|
||
|
{ TOQBEngineSqlDB }
|
||
|
|
||
|
procedure TOQBEngineZmsql.FResultQueryAfterOpen(DataSet: TDataSet{ZMQueryDataset});
|
||
|
var
|
||
|
i: Integer;
|
||
|
begin
|
||
|
for i := 0 to DataSet.Fields.Count - 1 do
|
||
|
begin
|
||
|
if DataSet.Fields[i].DataType = ftMemo then
|
||
|
begin
|
||
|
DataSet.Fields[i].OnGetText := @GridMemoFieldGetText;
|
||
|
end;
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
procedure TOQBEngineZmsql.GridMemoFieldGetText(Sender: TField;
|
||
|
var aText: string; DisplayText: Boolean);
|
||
|
begin
|
||
|
// Show memo fields
|
||
|
aText := TField(Sender).AsString;
|
||
|
end;
|
||
|
|
||
|
constructor TOQBEngineZmsql.Create(AOwner: TComponent);
|
||
|
begin
|
||
|
inherited;
|
||
|
FResultQuery := TZMQueryDataSet.Create(Self);
|
||
|
FResultQuery.AfterOpen := @FResultQueryAfterOpen;
|
||
|
end;
|
||
|
|
||
|
destructor TOQBEngineZmsql.Destroy;
|
||
|
begin
|
||
|
FResultQuery.Free;
|
||
|
inherited;
|
||
|
end;
|
||
|
|
||
|
procedure TOQBEngineZmsql.SetConnection(Value: TZMConnection);
|
||
|
begin
|
||
|
FZmsqlConnection := Value;
|
||
|
(FResultQuery as TZMQueryDataSet).ZMConnection:=Value;{FResultQuery.Database := Value;}
|
||
|
end;
|
||
|
|
||
|
function TOQBEngineZmsql.SelectDatabase: Boolean;
|
||
|
begin
|
||
|
Result := True;
|
||
|
end;
|
||
|
|
||
|
procedure TOQBEngineZmsql.ReadTableList;
|
||
|
begin
|
||
|
TableList.Clear;
|
||
|
(FResultQuery as TZMQueryDataSet).ZMConnection.GetTableNames(TableList);
|
||
|
end;
|
||
|
|
||
|
procedure TOQBEngineZmsql.ReadFieldList(const ATableName: string);
|
||
|
begin
|
||
|
FieldList.Clear;
|
||
|
try
|
||
|
(FResultQuery as TZMQueryDataSet).TableName:=ATableName;
|
||
|
(FResultQuery as TZMQueryDataSet).LoadTableSchema;
|
||
|
(FResultQuery as TZMQueryDataSet).GetFieldNames(FieldList);
|
||
|
finally
|
||
|
(FResultQuery as TZMQueryDataSet).Close;
|
||
|
end;
|
||
|
|
||
|
FieldList.Insert(0, '*');
|
||
|
end;
|
||
|
|
||
|
procedure TOQBEngineZmsql.ClearQuerySQL;
|
||
|
begin
|
||
|
(FResultQuery as TZMQueryDataset).SQL.Clear;
|
||
|
end;
|
||
|
|
||
|
procedure TOQBEngineZmsql.SetQuerySQL(const Value: string);
|
||
|
begin
|
||
|
(FResultQuery as TZMQueryDataset).SQL.Text := Value;
|
||
|
end;
|
||
|
|
||
|
function TOQBEngineZmsql.ResultQuery: TDataSet{TZMQueryDataSet};
|
||
|
begin
|
||
|
Result := FResultQuery;
|
||
|
end;
|
||
|
|
||
|
procedure TOQBEngineZmsql.OpenResultQuery;
|
||
|
begin
|
||
|
try
|
||
|
(FResultQuery as TZMQueryDataSet).QueryExecute;
|
||
|
finally
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
procedure TOQBEngineZmsql.CloseResultQuery;
|
||
|
begin
|
||
|
FResultQuery.Close;
|
||
|
end;
|
||
|
|
||
|
{$WARNINGS OFF}
|
||
|
procedure TOQBEngineZmsql.SaveResultQueryData;
|
||
|
begin
|
||
|
//
|
||
|
end;
|
||
|
{$WARNINGS ON}
|
||
|
|
||
|
procedure TOQBEngineZmsql.Notification(AComponent: TComponent;
|
||
|
Operation: TOperation);
|
||
|
begin
|
||
|
inherited;
|
||
|
if (AComponent = FZmsqlConnection) and (Operation = opRemove) then
|
||
|
begin
|
||
|
FZmsqlConnection := nil;
|
||
|
(FResultQuery as TZMQueryDataSet).ZMConnection:=nil;
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
end.
|