我用datebase desktop默认的paradox做了个数据表,设置了一个 
关键键,在form中用table,datasource连接这个数据表,用几个 
text手工增加数据到数据表中,比如员工编号是关键键,还是可以有 
相同的编号存在,请问这是什么原因,应该怎么解决呢 
如果我要使这个表在运行期间不能直接对它进行操作(也就是双击某字段时可以修改他的值)必修手工填写text后才可以加到表中去 
如果这些text中有某项为空的话报错,这改怎么做呢? 还有如果我用上面的方法手工增加一个新员工时(每个部门都有一个ID(关键字)比如1部门的员工编号是101,102,103.. 
2部门是201,202,203....),自动为每个员工分配一个唯一的员工编号又怎么实现呢,我在做课程设计,时间不多,我很需要你门的帮忙 
各位大哥帮帮小弟吧,谢谢了

解决方案 »

  1.   

    在你望表里增加记录时,你可以先查询一下看有没有你要插入的编号,如果有的话就提示吃编号已经存在,请重新输入假如
      with query1 do
      begin
      close;
      sql.clear;
      sql.text:='select * from tablename where bh='+quotedstr(edit1.text);
      prepared;
      open;
      if  recordcont<>0 then 
      begin
      showmessage('dffff');
      edit1.setfocus; 
      exit;
      end
      else
      ...
      end;
      

  2.   

    同 pengdali(大力) ,设置主键
      

  3.   

    hgl54321(你好)说得很对!绝对没问题
      

  4.   

    主键是要设置,但也可按 hgl54321的方法,把这个处理过程放在BeforePost事件中。
    主鍵设置后,在OnPostError事件中提示及处理异常。
      

  5.   

    你设置员工编号为主键,然后在保存按钮中写如下代码:
    try beign
       table1.fieldbyname('员工编号').asstring:=edit1.text;
       table1.post;
    end;
    except
       begin
           showmessage('数据已经存在!');
           table1.cancel;
       end;
      

  6.   

    1.设KEY
       try
          数据操作
       EXCEPT 
          弹出警告
       NED
    2 使用SELECT (建议使用)
       with query1 do begin
       close;
       clear;
       sql.add('select * from 表名');
       sql.add('where 键值="'+edit1.text+'"');
       open;
       if recordcount>0 then beign
          弹出警告
       end;
     end;
      

  7.   

    如果我是用 DBNavigator1 作插入修改操作, 楼上说的 edit.text 内容该用什么表示,
      

  8.   

    我也碰到同样的问题。看了大家的回复后,试着修改了一下。我是在“SQL explorer”中找到相对应的表,然后修改“text”中的定义部分,把那一列定义为主键,然后就提交(apply)了,但为什么修改过的部分又回到没改以前的样子了,好象没保存一样