用ADO的Record对象的OPEN,应该如何设置参数?才能返回主键值?

解决方案 »

  1.   

    SQL SERVER;
    select @@identity
      

  2.   

    健议 sqlserver 的SCOPE_IDENTITY( ) SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY 在功能上相似,因为它们都返回插入到 IDENTITY 列中的值。 IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。有关更多信息,请参见 IDENT_CURRENT。SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。
      

  3.   

    假如我想用AddNew方法呢?
    不知为什么它返回的总是0?
      

  4.   

    如果是单机版本的你可以在添加成功后直接得到这个id
      rs.addnew
      rs!mc="aa"
      rs.update
      text1.text=rs!id
    如果是网络的
      那么你要将填写记录那个人的id存入这个表
      sql="select max(id) from table where yh_id="那个人的id
    但是我还是认为
      select @@identity as id 比较好
      

  5.   

    我用的网络版。
    那么你要将填写记录那个人的id存入这个表??????这句不是很明白,可以提点一下吗?
    id是主键,是系统自动添加的?
    为什么用AddNew是因为用SQL语句比较长麻烦,
    假如是网络版,你的意思是不能在AddNew后直接返回新添加的主键了??
      

  6.   

    sql="select max(id) from table where yh_id="那个人的id
    为什么要加上where条件,这种取最大值的方法可行,但我想知在过万的记录中这方法效率快吗?
      

  7.   

    取MAX的办法是可行的,但由于你的是网络多用户,考虑到你插入记录后紧接着别人也插入一条的话,你取MAX(ID)得到的ID就不是你刚刚插入的记录的ID了。所以“风”在后面加了个判断,他只是举个例子,WHERE后加什么要你自己根据实际情况来定。如果你不用ADDNEW的话就该考虑楼上几位的建议用select @@identity效率比较高。