急,为何运行时提示not enough actual parameters?(100分)

  • 主题发起人 主题发起人 moonvan
  • 开始时间 开始时间
M

moonvan

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
sqlstr1:string;
sqlstr2:string;
abc:string;
ddd:string;
name:string;
haoma:string;
begin
adoquery1.Close;
adoquery1.SQL.Clear;
sqlstr1:='selcet 姓名,电话号码 from tongji ';
adoquery1.SQL.Text:=sqlstr1;
adoquery1.open;
adoquery1.First;
while not adoquery1.Eof do
begin
abc:=adoquery1.fieldbyname.AsString('电话号码');
ddd:=adoquery1.fieldbyname.AsString('姓名');
adoquery2.Close;
adoquery2.SQL.Clear;
sqlstr2:='update temp set 姓名=:name where 用户号码=:haoma' ;
adoquery2.Parameters.ParamByName('name').Value:=ddd;
adoquery2.Parameters.ParamByName('haoma').Value:=abc;
adoquery2.SQL.Text:=sqlstr2;
adoquery2.ExecSQL; }
adoquery1.Next;
end;
end;
目的:tongji表中有 姓名 电话号码 字段
temp表中也有姓名,电话字段
当tongji表中电话号码和temp表中相同,把统计表中这条记录的电话号码,更新到temp表中对应的字段,这样写不对吗?
 
procedure TForm1.Button1Click(Sender: TObject);
var
sqlstr1:string;
sqlstr2:string;
abc:string;
ddd:string;
begin
adoquery1.Close;
adoquery1.SQL.Clear;
sqlstr1:='selcet 姓名,电话号码 from tongji ';
adoquery1.SQL.Text:=sqlstr1;
adoquery1.open;
adoquery1.First;
while not adoquery1.Eof do
begin
abc:=adoquery1.fieldbyname('电话号码').AsString;
ddd:=adoquery1.fieldbyname('姓名').AsString;
adoquery2.Close;
adoquery2.SQL.Clear;
sqlstr2:='update temp set 姓名=:name where 用户号码=:haoma' ;
adoquery2.SQL.Text:=sqlstr2;
adoquery2.Parameters.ParamByName('name').Value:=ddd;
adoquery2.Parameters.ParamByName('haoma').Value:=abc;
adoquery2.ExecSQL;
adoquery1.Next;
end;
end;
 
不用参数啦,直接
sqlstr2 := update temp set 姓名='''+Trim(ddd)+''' where 用户号码='''+Trim(abc)+'''';
adoquery2.sql.clear;
adoquery2.sql.add(sqlstr2);
adoquery2.execsql;
不就行了
 
好像 adoquery没有Parameters.ParamByName这样的语法吧
 
to zhouym: 有
 
后退
顶部