query2.Close;
sql:='select nrs from a where y=1';
query2.SQL.Clear;
query2.SQL.Add(sql);
query2.Open;
query2.first;
while not query2.Eof do
begin
  irs:=query2.Fields[0].AsInteger;
  query3.Close;
  
  sql:='update b set cnum='+irs+' where x=1 ';
  
  query3.SQL.Clear;
  query3.SQL.Add(sql);
  query3.Prepare;
  query3.ExecSQL;
  query2.Next;
end;
编译后提示irs没有被使用,请问怎么用irs变量来更新cnum字段呢?是不是格式写错了?

解决方案 »

  1.   

    怎么看你的代码都觉得别扭。
    这样改改吧。
    var
      sqlstr:string;
      irs:integer;
     
    query2.Close;
    sqlstr:='select nrs from a where y=1';
    query2.SQL.Clear;
    query2.SQL.Add(sqlstr);
    query2.Open;
    query2.first;
    while not query2.Eof do
    begin
      irs:=query2.Fields[0].AsInteger;
      query3.Close;
      
      sqlstr:='update b set cnum='+inttostr(irs)+' where x=1 ';
      
      query3.SQL.Clear;
      query3.SQL.Add(sqlstr);
      query3.Prepare;
      query3.ExecSQL;
      query2.Next;
    end;
      

  2.   

    var
      sqlstr:string;
      irs:integer;  //这个可以这样定义 irs:string;
     
    query2.Close;
    sqlstr:='select nrs from a where y=1';
    query2.SQL.Clear;
    query2.SQL.Add(sqlstr);
    query2.Open;
    query2.first;
    while not query2.Eof do
    begin
      //这里可以加多判断,增强容错性
      if query2.Fields[0].isNull then
        irs:='0'
      else
        irs:=query2.Fields[0].AsInteger;  //这里可以改为 irs:=query2.Fields[0].AsString;
     
      query3.Close;
      
      sqlstr:='update b set cnum='+irs+' where x=1 '; //按原来哪有
      
      query3.SQL.Clear;
      query3.SQL.Add(sqlstr);
      query3.Prepare;
      query3.ExecSQL;
      query2.Next;
    end;
      

  3.   

    cnum字段是数值型的,这样写cnum='+inttostr(irs)+' 行么?
      

  4.   

    select nrs from a where y=1能返回数据么?