📄 unit1.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 + -