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;

解决方案 »

  1.   

    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
    i to j 循环的时间,这不是一直在OPEN()?
      

  2.   

     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应该先CLOSE再OPEN
      

  3.   

    case5166
    (我看见佛):即使不close不行,但是第一次OPEN就是语法错误的.不懂
      

  4.   

    是哪里不对呢,半天弄不懂,应该是小问题,就是下面一段qry1.open有问题,可是看来看去看不出来,求前辈指点
      

  5.   

    qry1.Open;         //单步到这里老是提示' 第一行 ":" 附近有语法错误'在OPEN之前用INPUTBOX('','','');显示下SQL语句是否正确inputbox('','',qry1.sql.Text);
      

  6.   

    select min(id) as id  from paiwei_detail where tabtype =:typeid
    show出来是这个
      

  7.   

    不用参数模式试试
    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;
      

  8.   

    ADOQuery1.Parameters.Clear;
    qry1.Parameters.ParseSQL(qry1.SQL.Text,True);
    qry2.Parameters.ParseSQL(qry2.SQL.Text,True);
    前面加上这个试试,应该不是主从表的关系吧,看不出什么问题
      

  9.   

    to : kaikai_kk  (KAIKAI(开开一心))  不用参数模式是可以的.呵呵,为什么呢!
    to : case5166  (我看见佛) 这个我也试过了,问题依旧!
      

  10.   

    你这个数据库是ACCESS数据库?
      

  11.   

    select min(id) as id  from paiwei_detail where tabtype =:typeid 改成select min([id]) as [id]  from paiwei_detail where [tabtype] =:typeid 
    这样子吧,或许因为关键字的问题
      

  12.   

    D6 + sql server ,多谢关注了,谢谢,看来还是不要用参数好了.