我要实现的功能是当我根据一个条件如书名查询一条记录的时候
如果表中没有此条记录,就返回信息showmessage('没有此条记录')
我是用DBGRID显示的
用数据集.locate()好像不行
 if (dataform.StoredProc19.locate('复本控制号',trim(edit1.Text),[]))or(dataform.StoredProc19.locate('书名',trim(edit2.Text),[]))
 or(dataform.StoredProc19.locate('类别',trim(edit3.Text),[]))or(dataform.StoredProc19.locate('作者',trim(edit4.Text),[]))
 or(dataform.StoredProc19.locate('出版社',trim(edit5.Text),[]))or(dataform.StoredProc19.locate('价格',strtofloat(trim(edit6.Text)),[]))=false then
 application.MessageBox('对不起,没有此条记录','信息',mb_iconinformation)

解决方案 »

  1.   

    if (dataform.StoredProc19.locate('复本控制号',trim(edit1.Text),[]))or(dataform.StoredProc19.locate('书名',trim(edit2.Text),[]))
     or(dataform.StoredProc19.locate('类别',trim(edit3.Text),[]))or(dataform.StoredProc19.locate('作者',trim(edit4.Text),[]))
     or(dataform.StoredProc19.locate('出版社',trim(edit5.Text),[]))or(dataform.StoredProc19.locate('价格',strtofloat(trim(edit6.Text)),[]))=true then
     application.MessageBox('对不起,没有此条记录','信息',mb_iconinformation)
      

  2.   

    检测DBGRID的数据集吧,如Table1等,也就是DBGRID的DataSource属性里的东东
      

  3.   

    locate()是会移动当前记录指针的,所以不能一起用,改成这样:
    with dataform.StoredProc19 do begin
      First;
      while not Eof do begin
        if (FieldByName('复本控制号').AsString = trim(edit1.Text)) or
           (FieldByName('书名').AsString = trim(edit1.Text)) or
           (FieldByName('类别').AsString = trim(edit1.Text)) or
           (FieldByName('作者').AsString = trim(edit1.Text)) or
           (FieldByName('出版社').AsString = trim(edit1.Text)) or
           (FieldByName('价格').AsString = trim(edit1.Text)) then
        begin
          Exit;  // 找到记录
        end;
      end;
    end;
    // 没找到
    application.MessageBox('对不起,没有此条记录','信息',MB_ICONINFORMATION);
      

  4.   

    Sorry,忘了加上Next了。
    with dataform.StoredProc19 do begin
      First;
      while not Eof do begin
        if (FieldByName('复本控制号').AsString = trim(edit1.Text)) or
           (FieldByName('书名').AsString = trim(edit1.Text)) or
           (FieldByName('类别').AsString = trim(edit1.Text)) or
           (FieldByName('作者').AsString = trim(edit1.Text)) or
           (FieldByName('出版社').AsString = trim(edit1.Text)) or
           (FieldByName('价格').AsString = trim(edit1.Text)) then
        begin
          Exit;  // 找到记录
        end;
      end;
    end;
    // 没找到
    application.MessageBox('对不起,没有此条记录','信息',MB_ICONINFORMATION);
      

  5.   

    奇怪,还是没Next?
    with StoredProc1 do begin
      First;
      while not Eof do begin
        if (FieldByName('复本控制号').AsString = trim(edit1.Text)) or
           (FieldByName('书名').AsString = trim(edit1.Text)) or
           (FieldByName('类别').AsString = trim(edit1.Text)) or
           (FieldByName('作者').AsString = trim(edit1.Text)) or
           (FieldByName('出版社').AsString = trim(edit1.Text)) or
           (FieldByName('价格').AsString = trim(edit1.Text)) then
        begin
          Exit;  // 找到记录
        end;
        Next;
      end;
    end;
      

  6.   


    我要实现的功能是当我根据一个条件如书名查询一条记录的时候
    表中没有此条记录,就返回信息showmessage('没有此条记录')
    仅此而己
    请教
      

  7.   

    就是上面的方法呀
    放一个button
    写上
    with StoredProc1 do begin
      First;
      while not Eof do begin
        if (FieldByName('复本控制号').AsString = trim(edit1.Text)) or
           (FieldByName('书名').AsString = trim(edit1.Text)) or
           (FieldByName('类别').AsString = trim(edit1.Text)) or
           (FieldByName('作者').AsString = trim(edit1.Text)) or
           (FieldByName('出版社').AsString = trim(edit1.Text)) or
           (FieldByName('价格').AsString = trim(edit1.Text)) then
        begin
          Exit;  // 找到记录
        end;
        Next;
      end;
    end;就可以了,当按这个button的时候,如果在数据库中找不到就不会说找不到,找到了就做你要做的事,如果找到了你不想做任何事,你就把    begin
          Exit;  // 找到记录
        end;
    这里的'Exit;  // 找到记录'删除掉