Table1.Open;
  Table1.First;
  Table2.Open;
  Table2.First;
  while not table2.Eof do
  begin
    sStockAcc := Table2.FieldByName('GFGDDM').AsString;
    if Table1.Locate('stock_a005',sStockAcc,[loCaseInsensitive]) then
    begin
      Query1.SQL.Clear;
      Query1.SQL.Add('insert into "e:\sjsgf.dbf"  select * from  "h:\qs\sjsgf.dbf" where GFGDDM = "sStockAcc"');
      Query1.ExecSQL;
    end;
    Table2.Next;
  end;
为何变量sStockAcc在SQL语句中没有起作用。sStockAcc变量肯定在库中存在。为何无法插入数据库中。

解决方案 »

  1.   

    如果去掉sStockAcc两边的引号,执行的时候则报错:Invalid field name.sStockacc'.
      

  2.   

    where GFGDDM = "sStockAcc" 改为: where GFGDDM = '''+sStockAcc+''' ;
    或者 Query1.SQL.Add('insert into "e:\sjsgf.dbf"  select * from  "h:\qs\sjsgf.dbf" where GFGDDM = :Qparas ');
    parameters.parambyname('Qparas').values := sStockacc;
      

  3.   

    query1.sql.add('insert into ... where gfgddm = ''' + sStockAcc+'''')
      

  4.   

    Query1.SQL.Add('insert into "e:\sjsgf.dbf"  select * from  "h:\qs\sjsgf.dbf" where GFGDDM = :sStockAcc');看行不行?
      

  5.   

    Query1.SQL.Add('insert into ''e:\sjsgf.dbf''  select * from  ''h:\qs\sjsgf.dbf'' where GFGDDM = ''sStockAcc''');
      

  6.   

    小飞兄的方法执行的时候报错:Query1:Field'sStockAcc' is of an unknown type'.
    流水兄的方法可以,为什么我的代码行不通,是什么原因?