请帮忙查以下代码的错误?(50分)

  • 主题发起人 主题发起人 johnnywong
  • 开始时间 开始时间
J

johnnywong

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm15.FlatButton4Click(Sender: TObject);
var
manager,name,add,fname:string;
begin
if fileexists('c:/outfiles.mdb') then
begin
ADOQuery3.Close;
ADOQuery3.SQl.Clear;
ADOQuery3.SQl.Add('select 商户代号 as man,商户名称 as name,商户简称 as fname,商户地址 as add from out');
ADOQuery3.Open;
ADoquery3.First;
while not ADOQuery3.Eof do
begin
manager:=ADOQuery3.FieldByname('man').AsString;
name:=ADOQuery3.FieldByname('name').AsString;
fname:=ADOQuery3.FieldByname('fname').AsString;
add:=ADOQuery3.FieldByname('add').AsString;

ADOQuery2.Close;
ADOQuery2.SQl.Clear;
ADOQuery2.SQl.Add('select * from manager where 商户代号=:商户代号');
ADOQuery2.Parameters.ParamByName('商户代号').Value:=manager;
ADOQuery2.Open;
if ADOQuery2.RecordCount = 0 then
begin
with ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('insert into manager (商户代号) ');
sql.Add('values(:商户代号)');
Parameters.ParamByName('商户代号').Value:=manager;
ExecSQl;
end;
ADOquery3.Next;
end;
with ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('update manager set 商户名称=:商户名称,商户简称=:商户简称,商户地址=:商户地址 where 商户代号='+''''+manager+''''+'');
Parameters.ParamByName('商户名称').Value:=name;
Parameters.ParamByName('商户简称').Value:=fname;
Parameters.ParamByName('商户地址').Value:=add;
ExecSQl;
end;
end;
end
else
begin
Application.MessageBox(pchar('C盘根目录下找不到商户数据文件,请校对'),'警告',mb_OK);
end;

end;

其中ADOquery1,ADOquery2用ADOconnection1 连接到a.mdb;ADOQuery3 用ADOconnection2 连接到b.mdb。以上代码的意思就是将a.mdb里的out表的所以内容导入到b.mdb里的manager表中,这两个的结构是完全一样的。
但运行程序后 商户简称,商户地址,商户代号 这三个字段能正常导入到manager表中,但商户名称导入的所有内容均是ADOquery1,不符合实际要求,为什么会这样呢?请解答
 
with adoquery1 do
begin
...
Parameters.ParamByName('商户名称').Value:=name;
//这一句是此问题的关键(出错在此)。
...
end;
在with 语句中的使用name,其实是:Adoquery1.Name
这一句等于是;
Parameters.ParamByName('商户名称').Value:=Adoquery1.Name;
在此出现了问题;
只要将变量改变名称就可以了!
 
接受答案了.
 
后退
顶部