- 題名: Oracleテーブルに書き込みができない。。。
- 日時: 2009/04/17 15:22:39
- ID: 24416
- この記事の返信元:
- (なし)
- この記事への返信:
- [24417] Re[1]: Oracleテーブルに書き込みができない。。。2009/04/17 16:59:10
- ツリーを表示
■No24416に返信(JINさんの記事) > 現在、Access2002を使ってツールを作成していますが、 Access VBA による開発という事でしょうか。 > RS.Open mySQL, cnn, adOpenDynamic, adLockOptimistic MSDAORA は、編集可能な「サーバーカーソル」をサポートしていません。 Oracle 製の OraOLEDB.Oracle を使うか、あるいは、サードパーティ製の Oracle プロバイダや Oracle 用 ODBC ドライバでの接続に切り替えるか、 UPDATE SQL での更新作業に切り替えてください。 あるいは「クライアントカーソル」を選択すれば、MSDAORA でも更新可能です。 ただし当然ながら、静的カーソルでの取得となってしまうため、件数の多い テーブルだと、転送負荷が高くなってしまい、お薦めできるものではありません。 (adUseClient を選択した場合には、どのプロバイダを使った場合にも 必ず adOpenStatic となる仕様です) ADO を使う時は、CursorType と LockType の組み合わせに注意してください。 プロバイダによって、使用可能な組み合わせは異なります。 なお、使用不可能な組み合わせを選んだ場合には、別の組み合せに 補正されるプロバイダと、エラーになるプロバイダとが存在します。 --------- 参考情報として、MSDAORA で使用可能な組み合わせを記述しておきます。 サーバーカーソルモード(CursorLocation = adUseServer) Cursor\Lock| ReadOnly | Pessimistic | Optimistic | BatchOptimistic ------------+-----------------+-----------------+-----------------+----------------- ForwardOnly | FwdOnly/ReadOnly| FwdOnly/ReadOnly| FwdOnly/ReadOnly| FwdOnly/ReadOnly Keyset | Static/ReadOnly | Static/ReadOnly | Static/ReadOnly | Static/ReadOnly Dynamic | Static/ReadOnly | Static/ReadOnly | Static/ReadOnly | Static/ReadOnly Static | Static/ReadOnly | Static/ReadOnly | Static/ReadOnly | Static/ReadOnly クライアントカーソルモード(CursorLocation = adUseClient) Cursor\Lock| ReadOnly | Pessimistic | Optimistic | BatchOptimistic ------------+-----------------+-----------------+-----------------+----------------- ForwardOnly | Static/ReadOnly | Static/Batch |Static/Optimistic| Static/Batch Keyset | Static/ReadOnly | Static/Batch |Static/Optimistic| Static/Batch Dynamic | Static/ReadOnly | Static/Batch |Static/Optimistic| Static/Batch Static | Static/ReadOnly | Static/Batch |Static/Optimistic| Static/Batch なお、上記は参考情報です。御自身の環境でも検証される事をお薦めします。 Recordset を Open した後で、CursorLocation/LockType/CursorType の値を 調べることで、サポートされる組み合わせを調べること出来ます。 (それぞれの定数の意味が分からない場合は、MDAC SDK 等で確認してください)
分類:[その他]
現在、Access2002を使ってツールを作成していますが、
データを更新の際、エラーが発生してしまいます。
Private Sub cmd仕掛更新_Click()
Dim cnn As New ADODB.Connection 'Oracle接続用オブジェクト
Dim RS As New ADODB.Recordset
Dim mySQL As String
'必須項目チェック
If IsNull(Me!text仕掛数量.Value) Then
MsgBox "必須項目に入力がありません。", vbExclamation
Exit Sub
End If
cnn.Open "Provider=MSDAORA.1; Persist Security Info=False; Data Source=****; User ID=****; Password=****;"
mySQL = "SELECT * FROM TBL_A WHERE ロットNO = '" & Me!textロットNO2.Value & "'"
RS.Open mySQL, cnn, adOpenDynamic, adLockOptimistic
'レコードを更新
ここでエラーが発生します。
↓
RS.Fields("A数量").Value = Me!text仕掛数量.Value
RS.Fields("B数量").Value = Me!text仕掛数量.Value
RS.Update
RS.Close
MsgBox "登録完了しました。", vbInformation
End Sub
エラーコードは
「実行時エラー'3251'
現在のRecordsetは更新をサポートしていません。プロバイダか、選択されたロックタイプの
限界の可能性があります。」
いろいろネットなどで調べてみたのですが分からず・・・
どなたか原因が分かる方がいらっしゃればご教授願います。