git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.FastReport@9 475b051d-3a53-6940-addd-820bf0cfe0d7
123 lines
3.1 KiB
ObjectPascal
123 lines
3.1 KiB
ObjectPascal
{*******************************************}
|
|
{ }
|
|
{ FastQueryBuilder 1.01 }
|
|
{ }
|
|
{ Copyright (c) 2005 }
|
|
{ Fast Reports Inc. }
|
|
{ }
|
|
{*******************************************}
|
|
|
|
{$I fqb.inc}
|
|
|
|
unit fqbFIBEngine;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, Classes, Dialogs, DB
|
|
{$IFDEF Delphi6}
|
|
,Variants
|
|
{$ENDIF}
|
|
,fqbClass, FIBDatabase, pFIBDatabase, FIBDataSet, pFIBDataSet;
|
|
|
|
type
|
|
TfqbFIBEngine = class(TfqbEngine)
|
|
private
|
|
FDatabase: TpFIBDatabase;
|
|
FQuery: TFIBDataSet;
|
|
procedure SetDatabase(Value: TpFIBDatabase);
|
|
public
|
|
constructor Create(AOwner: TComponent); override;
|
|
destructor Destroy; override;
|
|
procedure ReadFieldList(const ATableName: string; var AFieldList: TfqbFieldList);
|
|
override;
|
|
procedure ReadTableList(ATableList: TStrings); override;
|
|
function ResultDataSet: TDataSet; override;
|
|
procedure SetSQL(const Value: string); override;
|
|
published
|
|
property Database: TpFIBDatabase read FDatabase write SetDatabase;
|
|
end;
|
|
|
|
|
|
implementation
|
|
|
|
uses SysUtils, FIBQuery;
|
|
|
|
{----------------------- TfqbFIBEngine -----------------------}
|
|
constructor TfqbFIBEngine.Create(AOwner: TComponent);
|
|
begin
|
|
inherited Create(AOwner);
|
|
FQuery := TFIBDataSet.Create(Self);
|
|
end;
|
|
|
|
destructor TfqbFIBEngine.Destroy;
|
|
begin
|
|
FQuery.Free;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TfqbFIBEngine.ReadFieldList(const ATableName: string; var AFieldList:
|
|
TfqbFieldList);
|
|
var
|
|
tmpTransaction: TFIBTransaction;
|
|
tbl: TFIBDataSet;
|
|
tmpField: TfqbField;
|
|
i: Integer;
|
|
begin
|
|
tbl := TFIBDataSet.Create(Self);
|
|
tmpTransaction := TFIBTransaction.Create(Self);
|
|
tmpTransaction.DefaultDatabase := FDatabase;
|
|
try
|
|
tbl.Database := FDatabase;
|
|
tbl.Transaction := tmpTransaction;
|
|
tbl.SelectSQL.Add('SELECT *');
|
|
tbl.SelectSQL.Add('FROM ' + UpperCase(ATableName));
|
|
tmpTransaction.StartTransaction;
|
|
tbl.Prepare;
|
|
tbl.Open;
|
|
tmpField:= TfqbField(AFieldList.Add);
|
|
tmpField.FieldName := '*';
|
|
for i := 0 to tbl.FieldCount - 1 do
|
|
begin
|
|
tmpField:= TfqbField(AFieldList.Add);
|
|
tmpField.FieldName := tbl.Fields[i].DisplayName;
|
|
tmpField.FieldType := Ord(tbl.Fields[i].DataType);
|
|
end
|
|
finally
|
|
if tmpTransaction.Active then
|
|
tmpTransaction.Commit;
|
|
tbl.Close;
|
|
tbl.Free;
|
|
tmpTransaction.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TfqbFIBEngine.ReadTableList(ATableList: TStrings);
|
|
begin
|
|
ATableList.Clear;
|
|
FDatabase.Open;
|
|
FDatabase.GetTableNames(ATableList, ShowSystemTables);
|
|
end;
|
|
|
|
function TfqbFIBEngine.ResultDataSet: TDataSet;
|
|
begin
|
|
Result := FQuery
|
|
end;
|
|
|
|
procedure TfqbFIBEngine.SetDatabase(Value: TpFIBDatabase);
|
|
begin
|
|
FQuery.Close;
|
|
FDatabase := Value;
|
|
FQuery.Database := FDatabase;
|
|
end;
|
|
|
|
procedure TfqbFIBEngine.SetSQL(const Value: string);
|
|
begin
|
|
FQuery.Close;
|
|
FQuery.SelectSQL.Text := Value;
|
|
end;
|
|
|
|
|
|
|
|
end.
|