读书人

请问sql语法异常

发布时间: 2012-03-20 14:01:11 作者: rapoo

请教sql语法错误

Delphi(Pascal) code
procedure TPaiweiFrm.RefreshFrm;var  sqlstr,sqlstr2:string;  i,j:Integer;  oldTime:TDateTime;begin  sqlstr:='delete from PaiWei_Detail  update paiwei_now set ords='' ,noword='' ' ;  qry1.SQL.Clear;  qry1.SQL.Add('select max(PWdatetime) as PWdatetime from PaiWei_Detail') ;  qry1.Open;  oldtime:=qry1.fieldbyname('PWdatetime').asdatetime;  try    if FormatdateTime('dd',now)<>FormatdateTime('dd',oldtime) then    begin      qry2.SQL.Clear;      qry2.SQL.Add(sqlstr);      qry2.ExecSQL;    end;    qry1.SQL.Clear;    qry1.SQL.Add( 'select distinct id from paiwei_type ');    qry1.Open;    j:=qry1.RecordCount;    sqlstr:='select typename from paiwei_type order by id ';    qry1.SQL.Clear;    qry1.SQL.Add(sqlstr);    qry1.Open;    while not qry1.Eof do    begin      TLabel(PaiweiFrm.FindComponent('lbl'+inttostr(qry1.RecNo))).Caption:=qry1.fieldbyname('typename').AsString;      TLabel(PaiweiFrm.FindComponent('lbl1'+inttostr(qry1.RecNo))).Caption:=qry1.fieldbyname('typename').AsString;      qry1.Next;    end;    sqlstr:='select count(*) as num,b.tabletype as id  from paiwei_detail a left join paiwei_type b '            +' on  a.tabtype=b.tabletype group by b.tabletype ' ;    qry1.SQL.Clear;    qry1.SQL.Add(sqlstr);    qry1.Open;    while not qry1.Eof do    begin      TLabel(PaiweiFrm.FindComponent('lbl'+(qry1.fieldbyname('id')).AsString)).Caption:=      TLabel(PaiweiFrm.FindComponent('lbl'+(qry1.fieldbyname('id')).AsString)).Caption+'还有'+      qry1.fieldbyname('num').AsString +'桌客人在等候!        ' ;      qry1.Next;    end;    sqlstr:='select min(id) as id  from paiwei_detail where tabtype =:typeid ';    sqlstr2:='select top 1 * from paiwei_detail where id not in(select min(id) '              +' from paiwei_detail where tabtype=:typeid1) and tabtype=:typeid2 ';    qry1.SQL.Clear;    qry2.SQL.Clear;    qry1.SQL.Add(sqlstr);    qry2.SQL.Add(sqlstr2);    for i:=1 to j do    begin      qry1.Parameters.ParseSQL(qry1.SQL.Text,True);      qry2.Parameters.ParseSQL(qry2.SQL.Text,True);      qry1.Parameters.ParamByName('typeid').Value:=i;      qry2.Parameters.ParamByName('typeid1').Value:=i;      qry2.Parameters.ParamByName('typeid2').Value:=i;      qry1.Open;         //单步到这里老是提示' 第一行 ":" 附近有语法错误'      qry2.Open;      TLabel(PaiweiFrm.FindComponent('lbl2'+inttostr(i))).caption:='第'+qry1.fieldbyname('id').Asstring+'号';      mmo1.Lines.Add((TLabel(PaiweiFrm.FindComponent('lbl'+inttostr(i))).caption)+#13#10+'下一位'+      (qry2.fieldbyname('id').asstring)+'号');    end  except    ShowMessage('刷新状态出错!');    exit;  end;end;


[解决办法]
Delphi(Pascal) code
qry1.SQL.Clear;    qry2.SQL.Clear;    qry1.SQL.Add(sqlstr);    qry2.SQL.Add(sqlstr2);    for i:=1 to j do    begin      qry1.Parameters.ParseSQL(qry1.SQL.Text,True);      qry2.Parameters.ParseSQL(qry2.SQL.Text,True);      qry1.Parameters.ParamByName('typeid').Value:=i;      qry2.Parameters.ParamByName('typeid1').Value:=i;      qry2.Parameters.ParamByName('typeid2').Value:=i;      qry1.Open;         //单步到这里老是提示' 第一行 ":" 附近有语法错误'      qry2.Open;      TLabel(PaiweiFrm.FindComponent('lbl2'+inttostr(i))).caption:='第'+qry1.fieldbyname('id').Asstring+'号';      mmo1.Lines.Add((TLabel(PaiweiFrm.FindComponent('lbl'+inttostr(i))).caption)+#13#10+'下一位'+      (qry2.fieldbyname('id').asstring)+'号');    end
[解决办法]
不用参数模式试试
for i:=1 to j do
begin
qry1.close;
qry1.sql.text:='select min(id) as id from paiwei_detail where tabtype ='+IntToStr(i);
qry1.open;
...
end;

读书人网 >.NET

热点推荐