这种做法思路本身似乎就有问题
if table1.FieldByName('学生座位').AsString =dbedit1.text then
如果dbedit与table1相连
这个判断语句根本是多余的

解决方案 »

  1.   

    如果仅仅是想取消对数据的编辑
    在post之前用cancel方法应该就可以了
    不过你好像不是这个意思
    能不能把想完成的功能详细描述一下
      

  2.   

    反过来写不行,,,TO: ScoutKing(失眠夜)
     我的意思是当在dbedit中输入的编号已经存在的时候,提示编辑错误,如果不是则保存成功!
      

  3.   

    实际上,当你在dbedit1.text中写的时候,你写的内容已经反映在table中了,因此用什么判断也不好了,如果用edit1.text,可以参考以下:
    procedure TForm1.baocunClick(Sender: TObject);
    begin
    if table1.locate('学生座位',edit1.text,[]) then
      showmessage('学生座位重复')
    else begin
      table1.append;
      fieldByName('学生座位').asString :=edit1.text;
      table1.Post
    end;由于edit1.text不是数据敏感的,你的表的内容不会直接显示在edit1.text上,可以用afterScroll将内容写上。
      

  4.   

    对不起,错误太多:
    procedure TForm1.baocunClick(Sender: TObject);
    begin
    if table1.locate('学生座位',edit1.text,[]) then
      showmessage('学生座位重复')
    else begin
      table1.append;
      table1.fieldByName('学生座位').asString :=edit1.text;
      table1.Post
    end;
    end;
      

  5.   

    缺少了beginend;
    所以重复了,还是插入一行了
      

  6.   

    glink(飞天一狐) 谢谢你。你的办法应该行吧。可edit要怎么连接表呢?而dbedit只要把那个datasoure属性连接就可以了。还有没有大虾帮忙的呀!
      

  7.   

    就是不想连接表才用edit
    在这里增加记录时你必须自己读入所需的数据
    table1.append;
    table1.fieldbyname('...').value := edit1.text;
    table1.post;
      

  8.   

    同意楼上的
    我看你最好用ADOQUERY 写SQL语句很好用的,如果你想让他们看到结果在用DBGRID也可以的。