Private CONN As New Connection
Private RS As New RecordsetPrivate Sub Form_Load()'ORACLE
CONN.Open "Provider=OraOLEDB.Oracle.1;Password=sa;Persist Security Info=True;" & _
          "User ID=sa;Data Source=AAA"RS.CursorLocation = adUseClientRS.Open "SELECT * FROM TABLE2", CONN, adOpenDynamic, adLockOptimisticRS.AddNew
RS.Fields("DEMO") = "OK"
RS.UpdateDebug.Print "------------------"
Debug.Print RS.Fields("ID")
Debug.Print RS.AbsolutePositionEnd Sub'---------------------------------------------------------------------------
'TABLE2 结构 (ID,DEMO) ID (序列+触发器) 插入记录前自动递增  DEMO VARCHAR2(10)
'---------------------------------------------------------------------------'--------------------
'访问 ORACLE 结果
'--------------------
'4
'4换成SQL SERVER 'CONN.Open "Provider=SQLOLEDB.1;User ID=sa;Password =;Initial Catalog=AAA;Data;" & _
           "Source=Server1"
'--------------------
'访问 SQL SERVER 结果
'--------------------
'0
'4
谁能解释这个问题。

解决方案 »

  1.   

    这个现象应该是 oracle 和 ms sql 的ID 字段定义的区别ID (序列+触发器) 不明确阿ms sql 的id字段 如何定义的也不清楚
    如果实在觉的迷惑,干脆用VB生成序列
      

  2.   


    RS.Update
    后加句rs.requery
      

  3.   

    对于adOpenDynamic一直不很理解我觉得问题是虽然数据库里对id已经附值,但由于没有取出,在客户端还是不一定看到,用requery可以保证看到,而adOpenDynamic不知道什么时候会刷新
      

  4.   

    ID (序列+触发器) 插入记录前自动递增  
    对ID是用触发器进行递增的?
    建议还是用数据库自带的自增型字段.ID不一定非要和记录的行位置相同,很多时候你带条件查询出来的结果,ID都不可能和记录行位置相等.另外,有没有试过连续插入几条,看看每插入一条之后显示什么结果?