こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

レコードセットの値 SelectとINSERT,UPDATE,Deleteで異なる?

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で処理させたいのが私の現時点での目標です。

投稿日時 - 2007-02-10 17:55:05

QNo.2740881

困ってます

質問者が選んだベストアンサー

更新系(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/vb_s12.htm

投稿日時 - 2007-02-11 00:32:21

ANo.1

このQ&Aは役に立ちましたか?

9人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

ANo.1の回答で正しいと思います。
参照とは、SELECT文ですね。

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

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

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

投稿日時 - 2007-02-11 01:22:38

あなたにオススメの質問