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

解決済みの質問

VB6からSQLServer7に加工したデータを、正常に追加できません。なぜ?

VB6から、SQLServerに対して
加工したデータを追加するプログラムをしています。
(環境:Windows2000 Pro + VB6[SP5] + SQLServer[7.0])

一度、「sampletable」のデータを全件削除した上で、
必ず2回以上実行するループ処理の中で、Insert文を発行しています。

がしかし、プログラム実行後にSQLServerのデータベースを検索してみると、
何故か、最後に実行したInsert文しか、正常に実行終了していないようなのです。
(最後のループ処理でInsertされたデータしか、追加されてないのです。)

何か、プログラム上で、おかしいところとか
抜けているところとかございましたら、教えて下さい。


<サンプルプログラム>
' SQL Server へ接続
Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDB;" & _
"Data Source=(localhost);" & _
"Initial Catalog=database", "login", "passwd"

' 一度、テーブルデータを削除する
strSQL = "delete from sampletable"
Set rs = cn.Execute(strSQL)

Do 'このループ処理は、2回以上、必ず動作します。
・・・
(データ加工処理)
・・・

' データを追加する
strSQL = "INSERT INTO sampletable(xxx, xxx, xxx) " & _
"VALUES('" + HENSUU-A + "','" + HENSUU-B + "','" + HENSUU-C + "')"
Set rs = cn.Execute(strSQL)
Loop

' SQL Server 接続を閉じる
cn.Close

投稿日時 - 2001-10-31 20:27:42

QNo.160736

困ってます

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

同じようにやってみたらうまくいきました。

ので、予想ですが
「HENSUU-A」というのは数値ですか?
数値なら
「HENSUU-A + "','"」ここでエラーになってしまいそうな気がします。
文字列の結合には「&」がおすすめです。

投稿日時 - 2001-10-31 21:06:16

お礼

あーっ!
そうです。数値型でした(*^.^*)
いやぁ、お恥ずかしい限りです。
(いつも、SQL書くときって、シングルコーテを書くのがクセになってました・・・)
明日、試してみます。ありがとうございました。

と・こ・ろ・で、
エラーが発生したかどうかをチェックする方法って、どうすれば良いのでしょう?
そもそも、そういうロジックを入れておけば、原因がわかったのかも知れないのですが、
いかんせん、VBでDB処理するの初めてなもんで・・・。
もし良かったら、教えてくださいませ。

投稿日時 - 2001-10-31 22:05:09

ANo.1

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

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

回答(2)

ANo.2

>(いつも、SQL書くときって、シングルコーテを書くのがクセになってました・・・)
っていうか数値型と文字列を「+」で結合したら
型が一致しないってエラーになりそうな気がしたんですが・・・?

> エラーが発生したかどうかをチェックする方法って、どうすれば良いのでしょう?
エラーが発生しそうな場所より前に
--------------
Sub Proc1()
On Error Goto ErrProc
'エラーが発生しそうな処理
Exit Sub
ErrProc:
MsgBox "エラーが発生しました。"
End Sub
--------------
のように「On Error GoTo ErrProc」と
書いておけばエラーが発生したときにErrProcに飛んでくれます。

投稿日時 - 2001-11-01 09:22:36

お礼

無事に解決いたしました。
何から何まで、わかり易く親切に教えて頂いてありがとうございました。

投稿日時 - 2001-11-01 11:44:37