请教sql语法错误
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;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;