- - PR -
VB2005でAddNew()
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-07-24 20:16
VB2005Express、SQLServer2005にて開発を行っています。
テーブルに対してSELECTを行った結果、該当レコードがなかったらAddNewでレコードを追加しようと実行すると 「現在のRecordsetは更新をサポートしていません。プロバイダか選択されたロックタイプの限界の可能性があります。」 というエラーが発生します。 レコードセットのパラメータを色々変えてみたのですが状況が変わりません。どなたか原因がお分かりの方いらっしゃいましたら教えて下さい。 Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset strCn = "Provider=WWW;Password=XXX;User ID=YYY;Data Source=ZZZ;Persist Security Info=True" cn.Open(strCn) cn.BeginTrans() Try strSQL = "SELECT * FROM テーブル1" rs.Open(strSQL, cnGSTAFF, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic) If rs.EOF Then '登録 rs.AddNew() rs.Fields("コード").Value = 10000 rs.Fields("内容").Value = "OK" Else '更新処理 End If rs.Update() rs.Close() cn.CommitTrans() cn.Close() Catch ex As Exception rs.Close() cn.RollbackTrans() End Try | ||||
|
投稿日時: 2008-07-24 20:32
Recordset を Open して編集するならば SQL ステートメントではなくテーブル名 + adOpenTable を使うべきですよ。
それにしても .NET 2.0 なのに COM の ADODB ですか... ADO.NET テクノロジを使うべきだと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2008-07-24 21:27
さかもとと申します。
私もじゃんぬねっと様同様の疑問を持ちました。 ADODBを使用せざるを得ない仕様なのでしょうか? Accessからの移行システム(単にMDB→SQL Serverに)ということであれば、最初は色々と面倒かもしれませんが、思い切ってADO.NETへ切り替える方が今後の保守性などを考慮したときに有益かもしれません。 _________________ ------------------------------------------ 拝啓、さかもとと申します♪ | ||||
|
投稿日時: 2008-08-20 10:32
クロスポストにつき、情報共有の為
リンクしておきます。 http://okwave.jp/qa4198801.html
|
1