⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qbeado.pas

📁 FastReport2.52 版本不同
💻 PAS
字号:
{*******************************************************}
{                                                       }
{       Delphi Visual Component Library                 }
{       Open QBuilder Engine for ADO Sources            }
{                                                       }
{       Copyright (c) 2003 Fast Reports, Inc.           }
{                                                       }
{*******************************************************}

{$I QBDEF.INC}

unit QBEADO;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, DB, ADODB, ADOInt, QBuilder;

type
  TOQBEngineADO = class(TOQBEngine)
  private
    FResultQuery: TADOQuery;
    FADOConnection : TADOConnection;
  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: TADOConnection);
    procedure SetQuerySQL(const Value: string); override;
    function ResultQuery: TDataSet; override;
    function SelectDatabase: Boolean; override;
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  published
    property DatabaseName:  TADOConnection read FADOConnection write SetConnection;
  end;

resourcestring
  resSaveResFilter = 'XML files (*.xml)|*.xml';

implementation

{ TOQBEngineADO }

constructor TOQBEngineADO.Create(AOwner: TComponent);
begin
  inherited;
  FResultQuery := TADOQuery.Create(Self);
end;

destructor TOQBEngineADO.Destroy;
begin
  FResultQuery.Free;
  inherited;
end;

procedure TOQBEngineADO.SetConnection(Value: TADOConnection);
begin
  FADOConnection := Value;
  FResultQuery.Connection := Value;
end;

function TOQBEngineADO.SelectDatabase: Boolean;
begin
  Result := True;
end;

procedure TOQBEngineADO.ReadTableList;
begin
  TableList.Clear;
  FResultQuery.Connection.GetTableNames(TableList, ShowSystemTables);
end;

procedure TOQBEngineADO.ReadFieldList(const ATableName: string);
begin
  FieldList.Clear;
  FResultQuery.Connection.GetFieldNames(ATableName, FieldList);
  FieldList.Insert(0, '*');
end;

procedure TOQBEngineADO.ClearQuerySQL;
begin
  FResultQuery.SQL.Clear;
end;

procedure TOQBEngineADO.SetQuerySQL(const Value: string);
begin
  FResultQuery.SQL.Text := Value;
end;

function TOQBEngineADO.ResultQuery: TDataSet;
begin
  Result := FResultQuery;
end;

procedure TOQBEngineADO.OpenResultQuery;
begin
  try
    FResultQuery.Open;
  finally
  end;
end;

procedure TOQBEngineADO.CloseResultQuery;
begin
  FResultQuery.Close;
end;

{$WARNINGS OFF}
procedure TOQBEngineADO.SaveResultQueryData;
var
  DlgSaveRes: TSaveDialog;
begin
  if ResultQuery.State = dsInactive then
  begin
    ShowMessage('Data is not selected. Please, run query.');
    Exit;
  end;
  DlgSaveRes := TSaveDialog.Create(Self);
  DlgSaveRes.Filter := resSaveResFilter;
  DlgSaveRes.Options := [ofOverwritePrompt, ofHideReadOnly, ofPathMustExist];
  DlgSaveRes.Title := 'Save query results data to external table';
  if DlgSaveRes.Execute then
  try
    FResultQuery.SaveToFile(DlgSaveRes.FileName, pfXML);
  finally
    DlgSaveRes.Free;
  end;
end;
{$WARNINGS ON}

procedure TOQBEngineADO.Notification(AComponent: TComponent;
  Operation: TOperation);
begin
  inherited;
  if (AComponent = FADOConnection) and (Operation = opRemove) then
  begin
    FADOCOnnection := nil;
    FResultQuery.Connection := nil;
  end;
end;


end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -