unit K_ADOMoreUpdate;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls;
type
TADOMoreUpdate = class(TForm)
ADOConnection1: TADOConnection;
ADOConnection2: TADOConnection;
conExcel: TADOConnection;
qry1: TADOQuery;
qry2: TADOQuery;
Label1: TLabel;
Button1: TButton;
dlgOpen1: TOpenDialog;
BTN_N_1: TButton;
Memo1: TMemo;
Button2: TButton;
procedure BTN_N_1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
function OpenExcel(FileName: string): Boolean;
public
{ Public declarations }
end;
var
ADOMoreUpdate: TADOMoreUpdate;
implementation
{$R *.dfm}
function TADOMoreUpdate.OpenExcel(FileName:string):Boolean;
var SQLStr:string;
i:Integer;
begin
try
Result:=False;
if conExcel.Connected then conExcel.Connected:=False;
conExcel.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'+'Data Source='+FileName+';Mode=Read;Extended Properties=Excel 8.0;Persist Security Info=False';
conExcel.Connected:=true;
SQLStr:='select 料号,采购员代码 from [sheet1$]';
with qry1 do
begin
if Active then Close;
SQL.Text:=SQLStr;
Open;
end;
Result:=True;
except
on e:Exception do
begin
MessageDlg('ddd'+e.Message,mtError,[mbAbort],0);
end;
end;
end;
procedure TADOMoreUpdate.BTN_N_1Click(Sender: TObject);
begin
if dlgOpen1.Execute then
begin
if OpenExcel(dlgOpen1.FileName) then
begin
showmessage('OK');
end;
end;
end;
procedure TADOMoreUpdate.FormCreate(Sender: TObject);
begin
try
ADOConnection2.Connected:=true;
except
showmessage('有问题');
end;
end;
procedure TADOMoreUpdate.Button1Click(Sender: TObject);
var Item,EmpNo:string;
UpdateSQL:string;
aCount,aRecNO:integer;
aDate:Tdatetime;
begin
aDate:=now();
with qry1 do
begin
First;
aCount:=RecordCount;
aRecNo:=0;
while not eof do
begin
aRecNo:=aRecNo+1;
item:=trim(Fields[0].AsString);
EmpNo:=trim(Fields[1].AsString);
UpdateSQL:='Update t_t1 set t$byur='''+EmpNo+''''+' where t$item='''+ item+'''';
try
Label1.Caption:='Update '+inttostr(aRecNo)+'/'+inttostr(aCount)+' item:'+Item+' EMP:'+EmpNo;
Label1.Update;
self.Update;
ADOConnection2.BeginTrans;
qry2.SQL.Text:=UpdateSQL;
qry2.ExecSQL;
ADOConnection2.CommitTrans;
application.ProcessMessages;
except
on e:exception do
Memo1.Lines.Add(item+' '+EMPNo+' '+e.Message);
end;
sleep(50);
Next;
end;
end;
end;
procedure TADOMoreUpdate.Button2Click(Sender: TObject);
var
item:string;
buyr:string;
begin
with qry1 do
begin
Memo1.Clear;
First;
while not eof do
begin
item:= trim(Fields[0].AsString);
buyr:=trim(Fields[1].AsString);
Memo1.Lines.Add('Item:='+item+';buyr:='+buyr);
Next;
end;
end;
end;
end.
执行后的效果