プロが教えるわが家の防犯対策術!

VB6でSQL Server2005をADOでアクセスしていますが、基本的なことですが、SELECT文の場合はrs.closeしてもエラーになりませんが、INSERT,UPDATE,DELETEの場合は、rs.closeとすると、
実行時エラー3704
オブジェクトが閉じている場合は、操作は許可されません。
というエラーメッセージが表示されます。

SQLは以下のように実行しています。
Call rs.Open(cobSQL.Text, cn, adLockOptimistic)

VB6でSQL SERVER2005(もしくは2000)でデータベースアプリを作成するのに参考になる良書などご存知でしたら教えてください。

また、VB6でADOは、ネイティブにSQL Server2005にアクセスできるのでしょうか?まだADOやデータベースの概念が良くわかっていないため、質問自体がおかしいかもしれませんが、VB6で高速にSQL SERVER 2005で処理させたいのが私の現時点での目標です。

A 回答 (2件)

更新系(UPDATE、INSERT、DELETE等)のSQLでは、


レコードセットは使用してはいけません。

レコードセットを使用するのは、参照のみです。
更新系は、コネクションオブジェクトのExcuteメソッドを使用します。
つまり、レコードセットは、開く必要はなく、閉じる必要もありません。
(例)
Cn.Execute "insert into テーブル名 (XX1,XX2,XX3)values(ZZ2,ZZ2,ZZ3)

ちなみに、VB6とSQLサーバーの動作イメージとしては、
以下1、2を参考程度に。

1参照の場合(往復)
(1)VB6 → SQL文投げる  → SQLサーバー
(2)VB6 ← レコード取得  ← SQLサーバー

2更新系の場合(片道)
(1)VB6 → SQL文投げる → SQLサーバー(更新)

参考URL:http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd …
    • good
    • 0

ANo.1の回答で正しいと思います。


参照とは、SELECT文ですね。

良書ですが、VBのデータベースに関する書籍で、良いと思ったものを、見たことがありません。(あくまでも、データベースの書籍の話です)が。

書籍に載っているコードと、
今まで私が、実際の業務で使用されたコードでは、かけ離れているのが現状です。
PGになった7年前から、業務で使える本がないのだろうと、
毎日疑問に思っていました。
スキルを磨くなら、現場にあるコードを解析するのが、
最も早いのが現状です。
そして、私は、自宅のPCで、データベースアプリを作って身に付けました。

現在のVBのバージョンは2005です。
VB6の書籍は、大型書店でも、少ないので、インターネットで、
探すほか、ないでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!