ADOを使ったSQLで影響を受けた行を知るには

解決


うい  2006-09-11 21:19:31  No: 133201

環境はVb6  WindowsXPHomeEditionです。

ADOでconnection.Execute  やconnection.Openを使ってUPDATEやDELETEのSQLを実行したときに
レコード何行分に影響があったか知ることができないんでしょうか。
.NETにはExecuteNonQueryで実行すると戻り値として影響を受けた行数が帰ってくるようなので、こういった機能を探しています。
DELETE文が0行しか影響がなくてもSQL文として成立していればエラーが出ないので、
0行と1行の差がわかる方法がわからないので質問しました。
よろしくお願いします。


もげ  2006-09-12 09:40:26  No: 133202

Executeメソッドの引数について調べてみて下さい。

http://www.microsoft.com/japan/msdn/data/techmat/ado/dao2ado_4.asp
より、
Sub ADOExecuteBulkOpQuery() 
    Dim cnn As New ADODB.Connection 
    Dim iAffected As Integer 
    'Open the connection 
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\nwind.mdb;"      
    'Execute the query 
    cnn.Execute "Update Customers Set Country = 'United States' " & _ 
        "WHERE Country = 'USA'", iAffected, adExecuteNoRecords 
    Debug.Print "Records Affected = " & iAffected 
    'Close the connection 
    cnn.Close 
End Sub


うい  2006-09-12 23:45:36  No: 133203

ありがとうございます。
解決できました。

cnn.Execute で複数の引数を設定してなかったのが問題でした。
Dim str as String    Dim count as long
str = SQL文    count = 影響を受けたレコード数が入る

cnn.Execute SQL,count と書いて解決しました。
ありがとうございました。


※作成する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。







   このエントリーをはてなブックマークに追加