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

📄 unit1.pas

📁 万能数据库查询客户端源码
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, StdCtrls, Buttons, ComObj,
  ExtCtrls, DB, ADODB, Unit2, Unit3;

type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    GroupBox1: TGroupBox;
    Panel1: TPanel;
    Edit1: TEdit;
    Label1: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Memo1: TMemo;
    DBGrid1: TDBGrid;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    Splitter1: TSplitter;
    ADOTable1: TADOTable;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    Procedure FixDBGridColumnsWidth(const DBGrid: TDBGrid);
    procedure FormCreate(Sender: TObject);
    procedure OutToExcel(sender:TDBGrid);
    procedure BitBtn4Click(Sender: TObject);
    procedure Edit1DblClick(Sender: TObject);
    procedure Memo1DblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var str1,constr:string;
begin
  constr:='Provider=MSDASQL.1;Persist Security Info=True;Data Source=';
  str1:=trim(edit1.Text);
  if str1='' then
  begin
    ShowMessage('请输入ODBC名称');
    exit;
  end;
  constr:=constr+str1;
  self.ADOConnection1.ConnectionString:=constr;
  self.ADOConnection1.LoginPrompt:=false;
  try
    self.ADOConnection1.Connected:=true;
    ShowMessage(str1+' 连接成功,等待输入命令!');
    self.BitBtn1.Enabled:=false;
  except
    ShowMessage('数据源连接失败,请检查!');
  end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  if self.BitBtn1.Enabled then
  begin
    ShowMessage('当前没有任何连接!');
    exit;
  end;
  try
    self.ADOConnection1.Connected:=false;
    ShowMessage('成功断开当前的数据源连接!');
    self.BitBtn1.Enabled:=true;
  except
    ShowMessage('断开失败,请稍候再试!')
  end;
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
var sqlstr:string;
begin
  if self.BitBtn1.Enabled then
  begin
    ShowMessage('当前没有任何连接!');
    exit;
  end;
  if self.Memo1.SelText='' then
    sqlstr:=trim(memo1.Text)
  else
    sqlstr:=trim(memo1.SelText);
  if sqlstr=''  then
  begin
    ShowMessage('输入查询语句!');
    exit;
  end;
  try
    self.ADOQuery1.Close;
    self.ADOQuery1.SQL.Clear;
    self.ADOQuery1.SQL.Add(sqlstr);
    self.ADOQuery1.Open;
    FixDBGridColumnsWidth(self.DBGrid1);
  except
  end;
end;


procedure TForm1.BitBtn4Click(Sender: TObject);
begin
  OutToExcel(self.DBGrid1);
end;


procedure TForm1.Edit1DblClick(Sender: TObject);
begin
  if not Assigned(Form2) then Form2:=TForm2.Create(self);
  Form2.ShowModal;
end;

Procedure TForm1.FixDBGridColumnsWidth(const DBGrid: TDBGrid);
var i:integer;
begin
  for i := 0 to DBGrid.Columns.Count -1 do
    DBGrid.Columns[i].Width:=Length(DBGrid.Columns[i].Field.AsString)*8;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  application.Title:='ODBC查询';
end;


procedure TForm1.Memo1DblClick(Sender: TObject);
begin
  if self.BitBtn1.Enabled then
  begin
    ShowMessage('当前没有任何连接!');
    exit;
  end;
  if not Assigned(Form3) then Form3:=TForm3.Create(self);
  Form3.ShowModal;
end;

procedure TForm1.OutToExcel(sender:TDBGrid);
var
  i,j,m:integer;
  ExcelApp:Variant;
begin

  if TDBGrid(Sender).DataSource=nil then exit;
  if TDBGrid(Sender).DataSource.DataSet=nil then exit;
  if not TDBGrid(Sender).DataSource.DataSet.Active then exit;
  if TDBGrid(Sender).DataSource.DataSet.RecordCount<=0 then exit;
//  FHint:=TfrmFlash.Create(nil);
//  showmessage('1');
//  scExcelExport1:=TscExcelExport.Create(application);
  try
  //  Fhint.Show;
    //Fhint.Update;
    ExcelApp := CreateOleObject( 'Excel.Application' );
    ExcelApp.WorkBooks.Add;
    ExcelApp.WorkSheets.Add;
    ExcelApp.Visible:=true;
    j:=2;
    with TDBGrid(Sender).DataSource.DataSet do
    begin
      TDBGrid(Sender).DataSource.DataSet.First;
      TDBGrid(Sender).DataSource.DataSet.DisableControls;
      for i:=0 to TDBGrid(Sender).Columns.Count-1 do
      begin
        for m:=0 to TDBGrid(Sender).Columns.Count-1 do
        begin
          if TDBGrid(Sender).DataSource.DataSet.Fields[i].FieldName=TDBGrid(Sender).Columns[m].FieldName then
            ExcelApp.WorkSheets[1].Cells[1,i+1].Value :=TDBGrid(Sender).Columns[m].Title.Caption;
        end;
      end;
      while not TDBGrid(Sender).DataSource.DataSet.Eof do
      begin
        for i:=0 to FieldCount-1 do
        begin
          ExcelApp.WorkSheets[1].Cells[j,i+1].Value :=Fields[i].AsVariant;
        end;
        Next;
        j:=j+1;
      end;
    end;
  finally
    //scExcelExport1.free;
    TDBGrid(Sender).DataSource.DataSet.EnableControls;
//    Fhint.Free;
  end;
end;

end.

⌨️ 快捷键说明

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