实现功能 数据库 表 A ,表 B 
A表中字段A.a 主键 
B表 B.b 是主键 B.a=A.a 也就是B.ashisss 界面设计 两个表格控键Grid1 是输入A表 基本信息(只一条);Grid2 是输入B表相关信息(可允许多条)
需要实现添加同时添加 成功 一旦任何地方出错 将都回滚
A表记录肯定是先添加的了! 才能添加B表的
如果是添加B表出错

解决方案 »

  1.   

    完了 上面的不算 我还没发贴 就自动发了 分不够再加 实现功能 数据库 表 A ,表 B 
    A表中字段A.a 主键 
    B表 B.b 是主键 B.a=A.a 也就是B.a是A.a的外键界面设计 两个表格控键Grid1 是输入A表 基本信息(只一条);Grid2 是输入B表相关信息(可允许多条)
    需要实现添加同时添加 成功 一旦任何地方出错 将都回滚
    A表记录肯定是先添加的了! 才能添加B表的信息
    如果是添加B表出错 A表的信息也没有添加成功!!遇到的问题!! 
    情况1 添加成功了A表信息 以后 再添加B表信息的时候 如果创建子事务可以实现以上功能,不过由于添加B表信息 不止一条!!所以麻烦就大了!! 难道要传数组?慢死了 基本上不考虑使用
    情况2 如果不采用子事务 ,用循环方式添加B表信息 ,那么将无法实现真正的事务回滚
    有没有好的办法! 请给出 大致的代码 !!!
      

  2.   

    不太明白你说的问题,使用一个连接(connection)中的事务,怎么会没有事务回滚?
    添加了A表的记录后,无论使用哪种方式添加B表的记录,只要使用同一个连接没有必要使用子事务啊
    on error goto err
    dim conn as new adodb.connection
    dim lnglevel as longlnglevel=conn.begtrans
    '添加A表
    '添加B表
    conn.commtrans
    exit sub
    Err:
     if lnglevel>0 then 事务回滚  不论是添加A表还是B表时出错,事务都会回滚,A,B表的记录都不会添加进去.
    这样有问题吗?
      

  3.   

    问题是添加B表数据的时候 并不是一条记录 当封装到DLL中以后
    所传递的参数并不是固定 我已经用动态数组解决这个问题 感觉处理效率肯定不会很快!
      

  4.   

    既然表A与表B是一对多的关系,为何要想那么复杂的问题?
    表B中多条记录使用同一个A.a,添加就行了