注意
并非所有提供者都支持事务。需验证提供者定义的属性 Transaction DDL 是否出现在 Connection 对象的 Properties 集合中,如果在则表示提供者支持事务。如果提供者不支持事务,调用其中的某个方法将返回错误。
BeginTrans、CommitTrans 和 RollbackTrans 方法在客户端 Connection 对象上无效。

解决方案 »

  1.   

    程序源玛如下,请帮忙:
        
        Dim iRet As String
        Dim ErrObj As New ErrObj
        Dim bErrFound As Boolean
        Dim Rules1 As New Recordset
        Dim lngRow As Long, lngCol As Long
        Dim SqlStr As String
            
            On Error GoTo ErrHandle
            CentConn.BeginTrans
            SqlStr = "select fldGroupID,Ticket..tblSeatRule.fldRuleID,fldFirstRow,fldLastRow,fldFirstCol,fldLastCol,Ticket..tblTicketDetail.fldPrice,Ticket..tblTicketDetail.fldBrockerage " + _
                " FROM Ticket..tblSeatRule,Ticket..tblTicketDetail" + _
                " WHERE Ticket..tblTicketDetail.fldTicketID=" + QuoStr(Trim(ctxtTicketID)) + " AND" + _
                " Ticket..tblTicketDetail.fldRuleID=Ticket..tblSeatRule.fldRuleID" + _
                " ORDER BY Ticket..tblSeatRule.fldRuleID"
            
            Rules1.Open SqlStr, CentConn, adOpenForwardOnly, adLockReadOnly
                   
            While Not Rules1.EOF
                For lngRow = Rules1("fldFirstRow") To Rules1("fldLastRow")
                    For lngCol = Rules1("fldFirstCol") To Rules1("fldLastCol")
                        SqlStr = "Insert Ticket..tblTickets (" + _
                            "fldTicketID,fldRuleID,fldGroupID,fldRow," + _
                            "fldCol,fldPrice,fldBrockerage,fldStatus," + _
                            "fldActive,fldUpdateTime) VALUES " + _
                            " ( " + QuoStr(Trim(ctxtTicketID)) + "," + _
                            QuoStr(Rules1("fldRuleID")) + "," + _
                            QuoStr(Trim(Rules1("fldGroupID"))) + "," + _
                            CStr(lngRow) + "," + _
                            CStr(lngCol) + "," + _
                            CStr(Rules1("fldPrice")) + "," + _
                            CStr(Rules1("fldBrockerage")) + "," + _
                            "'1'," + _
                            "'1'," + _
                            "GETDATE())"
                        Debug.Print SqlStr
                        CentConn.Execute SqlStr
                    Next lngCol
                Next lngRow
                Rules1.MoveNext
            Wend
            Rules1.Close
            CentConn.CommitTrans
            
            On Error GoTo 0
      

  2.   

    CentConn.Execute SqlStr
    这一句出错!第一次循环就出错!我发现,Rules1如果只有一条记录的话,不会出错,
    Rules1如果有2条记录的话,就出错!WHY????
      

  3.   

    我知道错在那里了
    是这句话
    Rules1.Open SqlStr, CentConn, adOpenForwardOnly, adLockReadOnly我换成
    Rules1.Open SqlStr, CentConn, adOpenStatic, adLockReadOnly
    就OK了!哈但我仍然不明白为什么?高手帮忙!!谢谢!
      

  4.   

    CentConn.BeginTrans 最好挪到 Rules1.Open SqlStr... 之前!