📄 usjdr.pas
字号:
unit Usjdr;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Buttons, Grids, DBGrids, ExtCtrls, ComCtrls;
type
Tsjdrfrm = class(TForm)
Panel1: TPanel;
DBGrid1: TDBGrid;
GroupBox1: TGroupBox;
btopen: TBitBtn;
btdr: TBitBtn;
OpenDialog1: TOpenDialog;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
adodbf: TADOQuery;
DataSourcedbf: TDataSource;
BitBtn1: TBitBtn;
ProgressBar1: TProgressBar;
procedure btopenClick(Sender: TObject);
procedure btdrClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
sjdrfrm: Tsjdrfrm;
implementation
uses UDM, Utxcj, UMain;
{$R *.dfm}
procedure Tsjdrfrm.btopenClick(Sender: TObject); //打开dbf文件事件
var s:string; //得到opendialog的文件名(如c:\temp\1.dbf)就得到1.dbf
s1:string; //得到opendialog的文件名的路径 (得到 c:\temp)
begin
opendialog1.Title :='Open Microsoft DBF File';
opendialog1.Filter:='Microsoft DBF File (*.dbf)|*.dbf';
if opendialog1.Execute then
begin
s:=opendialog1.FileName;
s1:='';
while pos('\',s)>0 do begin s1:=s1+copy(s,1,pos('\',s)); s:=copy(s,pos('\',s)+1,length(s)); end;
s1:=copy(s1,1,length(s1)-1);// 文件的路径名
btopen.Enabled :=false;
btdr.Enabled :=true;
adodbf.ConnectionString:='provider=Microsoft.Jet.OLEDB.4.0'+';data source='+s1+';Extended properties=dbase 5.0;persist security info=false';
with adodbf do
begin
close;
sql.Clear;
sql.add('select * from '+s);
open;
end;
adodbf.First ;
label2.Caption :=inttostr(adodbf.RecordCount); //记录打开的dbf文件的记录数
end;
end;
procedure Tsjdrfrm.btdrClick(Sender: TObject);//导入数据库按钮事件
var i:integer;
begin
screen.Cursor:=crHourGlass; //使鼠标为筛漏型
btdr.Enabled :=false; //导入按钮不可用
btopen.Enabled :=true; //打开dbf文件的按钮可用
with dm.adoinfo do //打开information表
begin
close;
sql.Clear ;
sql.Add('select * from information');
open;
end;
progressbar1.Min :=0;
ProgressBar1.Max:=adodbf.RecordCount * 2;
for i:=1 to adodbf.RecordCount do
begin
if((adodbf.Fieldbyname('xz').AsString)<>'')and((adodbf.Fieldbyname('bhmc').AsString)<>'')and((adodbf.Fieldbyname('sxh').AsString)<>'')and((adodbf.Fieldbyname('zydm').AsString)<>'')then
begin
dm.adoinfo.Insert;
dm.adoinfo.FieldValues['xz']:=trim(adodbf.Fieldbyname('xz').AsString);
dm.adoinfo.FieldByName('bhmc').AsString:=trim(adodbf.Fieldbyname('bhmc').AsString);
dm.adoinfo.FieldValues['sxh']:=trim(adodbf.Fieldbyname('sxh').AsString);
dm.adoinfo.FieldValues['zydm']:=trim(adodbf.Fieldbyname('zydm').AsString);
dm.adoinfo.FieldValues['xh']:=trim(adodbf.Fieldbyname('xh').AsString);
dm.adoinfo.FieldValues['zyxh']:=trim(adodbf.Fieldbyname('zyxh').AsString);
dm.adoinfo.FieldValues['yx']:=trim(adodbf.Fieldbyname('yx').AsString);
dm.adoinfo.FieldValues['zymc']:=trim(adodbf.Fieldbyname('zymc').AsString);
dm.adoinfo.FieldValues['ksh']:=trim(adodbf.Fieldbyname('ksh').AsString);
dm.adoinfo.FieldValues['xm']:=trim(adodbf.Fieldbyname('xm').AsString);
dm.adoinfo.Post;
end;
adodbf.Next;
progressbar1.Position :=i*2;
end;
progressbar1.Position :=0; //使进度条为空,即未填充
screen.Cursor:=crDefault; //使鼠标为默认的箭头型
if messagebox(handle,'数据导入完备,是否关闭此窗口','系统提示',mb_iconwarning+mb_yesno)=idyes then
self.Close;
end;
procedure Tsjdrfrm.FormCreate(Sender: TObject); //窗体创建时
begin
mainfrm.StatusBar1.Panels.Items[1].Text:='您当前的操作为: '+'数据导入';
btdr.Enabled :=false; //导入按钮不可用
end;
procedure Tsjdrfrm.BitBtn1Click(Sender: TObject); //退出窗体
begin
self.Close;
end;
procedure Tsjdrfrm.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState); //对dbgrid实现隔行着色
begin
if (DBGrid1.DataSource.DataSet.RecNo mod 2)=0 then
DBGrid1.Canvas.Brush.Color := clWhite
else
DBGrid1.Canvas.Brush.Color := clAqua;
if((State=[gdSelected]) or (State=[gdSelected,gdFocused])) then
if not DBGrid1.SelectedRows.CurrentRowSelected then
DBGrid1.Canvas.Brush.Color := clHighlight;
DBGrid1.Canvas.Pen.Mode := pmMask;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
procedure Tsjdrfrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
mainfrm.StatusBar1.Panels.Items[1].Text:='';
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -