tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルトランザクションを開始できない
記事No543
投稿日: 2003/11/12(Wed) 21:27
投稿者こまったにゃんこ
[OSのVer]:Windows2000    [VBのVer]:VB.NET 1.0 
はじめまして。早速の質問で恐縮ですが宜しくお願いします。

サーバ:RedHat Linux7.2
DB:Postgres7.0.3
開発環境:Windows2000
接続方法:PostgreSQL用ODBC ADOを使用(ADO.NETではありません)

現象:
プログラム内にてPostgresqlにADOを使い接続を行っています。
Insert等のSQLを実行する前にBeginTransを実行しているのですが
デバックのブレークポイントを設定しステップインを使用し1行ずつ確認していくと
BeginTransの個所にて「このセッションでは、これ以上のトランザクションを開始できません。」
とエラーが出ます。ブレークポイントを使用せず、普通に処理するとエラーも出ずにちゃんと
BeginTransが成功しているようなのですが。
DBのOpen前にBeginTransを置いたり、2度BeginTransを使用したりはしていませんが、わざと
2度BeginTransを行うと同じエラーが出ます。
以下に省略していますが問題のソースを記述します。

意味のわかりづらい文章ですが宜しくお願い致します。

'********** Form呼び出し側のコーディング
dim mclsComData As clsCommonData                         '共通データクラス

mclsComData = New comAdoDBcontrol.clsCommonData()     '初期化

’DBのOpen
If Not mclsComData.doConnection(mclsComData.AdoPosgre) Then
    '接続失敗 エラー処理
End If

’BeginTran
If Not mclsComData.SetBeginTran(mclsComData.AdoPosgre) Then
    '失敗 エラー処理
End If

'********** クラス clsCommonDataの中身
  'DB接続
    Public Function doConnection(ByVal clsAdo As clsAdoPosgre) As Boolean
        Return clsAdo.doConnection()
    End Function

    'DB切断
    Public Function disConnect(ByVal clsAdo As clsAdoPosgre) As Boolean
        Return clsAdo.disConnect()
    End Function

    'トランザクション開始
    Public Function SetBeginTran(ByVal clsAdo As clsAdoPosgre) As Boolean ←ここでエラーが

こります
        Return clsAdo.SetBeginTran()
    End Function


'********** クラス clsAdoPosgreの中身
   'DB接続
    ReadOnly Property doConnection() As Boolean
        Get
            Try

                ''ファイルからDBへのUser等を取得し格納する変数
                Dim strUserID As String
                Dim strPassID As String
                Dim strDSN As String
                Dim strDATABASE As String

            '・・・省略
    
                sConnectionString = "DSN=" & strDSN & ";" &
_
                  "UID=" & strUserID & ";" & _
                  "PWD=" & strPassID & ";" & _
                  "DATABASE=" & strDATABASE & ";"

                mMyConnection = New ADODB.Connection()

                'DB接続
                mMyConnection.Open(sConnectionString)
                mMyConnection.CursorLocation = 3
              
            Catch e As Exception
        'エラー処理
            End Try
            Return True
        End Get
    End Property

  'トランザクション開始処理
   ReadOnly Property SetBeginTran() As Boolean
        Get
            Try
  
                mMyConnection.BeginTrans()


            Catch eInvalid As InvalidOperationException
           'エラー処理
            Catch e As Exception
           'エラー処理
            End Try
            Return True
        End Get
    End Property

[ツリー表示へ]