代码如下:
procedure Tcxfrm.SpeedButton3Click(Sender: TObject);
begin
  dm1.Query4.Open;
    with dm1 do
    begin
      query4.Close;
      query4.SQL.Clear;
      query4.SQL.Add('delete from grfsdzh');
      query4.ExecSQL;      query4.Close;
      query4.SQL.Clear;
      query4.SQL.Add('insert into grfsdzh (NAME,FW,FH,A3,WXF,WSF,C3,C4,B3,B4,HJ,JS)')
      query4.SQL.Add(' select NAME,FW,FH,A3,WXF,WSF,C3,C4,B3,B4,HJ,JS from fsdzh');
      query4.ExecSQL;      query4.close;
      query2.sql.clear;
      query4.sql.add('select sum(A3),sum(WXF),sum(WSF),sum(C3)');
      query4.SQL.Add(',sum(C4),sum(B3),sum(B4),sum(HJ),js');
      query4.sql.Add(' from grfsdzh');
      query4.SQL.Add('where NAME like '+''''+edit1.Text+'%'+'''');
      query4.SQL.Add(' and js>='+''''+edit2.Text+'''');
      query4.SQL.Add(' and js<='+''''+edit3.Text+'''');
      query4.SQL.Add(' group by js');
*     query4.open;      hzktb.Append;
      grfsdzhtb.Append;
      grfsdzhtb.FieldByName('A3').AsFloat:=query4.Fields[0].Value;
      grfsdzhtb.fieldbyname('WXF').asfloat:=query4.fields[1].Value;
      grfsdzhtb.fieldbyname('WSF').asfloat:=query4.fields[2].Value;
      grfsdzhtb.fieldbyname('C3').asfloat:=query4.fields[3].Value;
      grfsdzhtb.fieldbyname('C4').asfloat:=query4.fields[4].Value;
      grfsdzhtb.fieldbyname('B3').asfloat:=query4.fields[5].Value;
      grfsdzhtb.fieldbyname('B4').asfloat:=query4.fields[6].Value;
      grfsdzhtb.fieldbyname('HJ').asfloat:=query4.fields[7].Value;
      grfsdzhtb.fieldbyname('FH').asstring:='合计';
      grfsdzhtb.fieldbyname('FW').asstring:='总';
      grfsdzhtb.Post;
      grfsdzhtb.Close;
      grfsdzhtb.Open;      query4.Close;
      query4.SQL.Clear;
      query4.SQL.Add('select * from grfsdzh');
      query4.Open;
    end;
end;我断点跟踪调试了一下,当运行到上代码有*号开头的那行,提示如下错误信息:
Project wy.exe raised exception class EDBEngineError with message'Invalid use of keyword.
Token:select
Line Number:3'. Process stopped. Use Step or Run to continue.请问应该如何解决。谢谢!

解决方案 »

  1.   

    query4.SQL.Add(' and js>='+''''+edit2.Text+'''')在这句中为什么要用4个引号?
    改为
    query4.SQL.Add(' and js>='''+edit2.Text+'''');
    你看看可不可以?
      

  2.   

    不是你说的那个毛病,我改过了,不对,要是你那么该,sql语句就不对
    谁能帮我看看,到底是那里的毛病
      

  3.   

    query4.SQL.Add(' where NAME like '+''''+edit1.Text+'%'+'''');
    where 前面加个空格
      

  4.   

    除了上面的空格,看你下面两句好像可以把引号去掉    query4.SQL.Add(' and js>='+''''+edit2.Text+'''');
        query4.SQL.Add(' and js<='+''''+edit3.Text+'''');改成
        query4.SQL.Add(' and js>='+edit2.Text+'''');
        query4.SQL.Add(' and js<='+edit3.Text+'''');
      

  5.   

    后面的忘了去了
      query4.SQL.Add(' and js>='+edit2.Text);
      query4.SQL.Add(' and js<='+edit3.Text);
      

  6.   

    query4.SQL.Add(' and js>=''''+edit2.Text+'''');
        query4.SQL.Add(' and js<=''''+edit3.Text+'''');
      

  7.   

    你用的什么數據庫?
    改為這樣試試
    query4.close;
          query2.sql.clear; 
          query4.sql.add('select sum(A3) A31,sum(WXF) WXF1,sum(WSF) WSF1,sum(C3) C31');
          query4.SQL.Add(',sum(C4) C41,sum(B3) B31,sum(B4) B41,sum(HJ) HJ1,js');