???????????????????????????
look at :a:=query1.fieldbyname('goods_id').AsString;
  query1.Close;
  query1.SQL.Clear;
  query1.SQL.Add('select * ');
  query1.SQL.Add(' from t_goods where goods_id like '+a);///!!!!!
  query1.Params[0].AsString:=query1.fieldbyname('goods_id').AsString;
  query1.Prepare;
  query1.Open;
end;

解决方案 »

  1.   

    procedure TForm9.Button6Click(Sender: TObject);
    var
    a:string;
    begin
      query1.Close;
      query1.SQL.Clear;
      query1.SQL.Add('select * ');
      query1.SQL.Add(' from t_goods ');
      query1.Prepare;
      query1.Open;
      a:=query1.fieldbyname('goods_id').AsString;
      query1.Close;
      query1.SQL.Clear;
      query1.SQL.Add('select * ');
      query1.SQL.Add(' from t_goods where goods_id like a');
      query1.Params[0].AsString:=query1.fieldbyname('goods_id').AsString;
      query1.Prepare;
      query1.Open;
    end;a:=query1.fieldbyname('goods_id').AsString;
      

  2.   

    同意楼上,你首先给A赋值的时候QUERY1还没有运行,所以失败。
    这是主要原因。
      

  3.   

    把a:=query1.fieldbyname('goods_id').AsString;一句去掉.把query1.Params[0].AsString:=query1.fieldbyname('goods_id').AsString;改为
    query1.Params[0].AsString:=query2.fieldbyname('goods_id').AsString;
      

  4.   

    query1.SQL.Add(' from t_goods where goods_id like a');
    改为
    query1.SQL.Add(' from t_goods where goods_id like’+ a);
      

  5.   

    呵呵,你确定是找“like a”的goods_id,不是“……like”+a?
      

  6.   

    so simple,but errors many。
    procedure TForm9.Button6Click(Sender: TObject);
    var
    a:string;
    begin
      a:=query1.fieldbyname('goods_id').AsString;
    //这一句就有问题,除非保证query1已经打开。
      query1.Close;
      query1.SQL.Clear;
      query1.SQL.Add('select * ');
      query1.SQL.Add(' from t_goods where goods_id like a');
    //应改为:query1.SQL.Add(' from t_goods where goods_id like'+ a);  query1.Params[0].AsString:=query1.fieldbyname('goods_id').AsString;
      query1.Prepare;
      query1.Open;
    end;