- PR -

DataSet行削除のDBへの反映

投稿者投稿内容
mover
常連さん
会議室デビュー日: 2004/06/20
投稿数: 47
投稿日時: 2004-08-09 11:03
お世話になります。

以下のようにRowUpdatingイベントをハンドルして、CommandTextは取得しました。
しかしパラメタの適切な取得方法が分からず、以下のような方法で取得しました。
INSERT、UPDATE時にはパラメタは取得できるのですが、
DELETE時の時だけは取得できませんでした。

コード:
    Public Sub RowUpdating
		(ByVal sender As Object, _
		 ByVal e As System.Data.SqlClient.SqlRowUpdatingEventArgs)

        Console.WriteLine(e.Command.CommandText)
        Dim i As Integer

        Dim al As Array = e.Row.ItemArray

        For i = 0 To al.Length - 1
            Console.Write(al(i).ToString + " ")
        Next

    End Sub 'RowUpdating



【CommandText】
DELETE FROM TBL_STAFF
WHERE
(STAFF_CD = @Original_STAFF_CD) AND
(ENT_DT = @Original_ENT_DT OR @Original_ENT_DT IS NULL AND ENT_DT IS NULL) AND
(ENT_STAFF_CD = @Original_ENT_STAFF_CD OR @Original_ENT_STAFF_CD IS NULL AND ENT_STAFF_CD IS NULL) AND
(POST_NAME = @Original_POST_NAME OR @Original_POST_NAME IS NULL AND POST_NAME IS NULL) AND
(STAFF_NAME = @Original_STAFF_NAME OR @Original_STAFF_NAME IS NULL AND STAFF_NAME IS NULL) AND
(UPD_DT = @Original_UPD_DT OR @Original_UPD_DT IS NULL AND UPD_DT IS NULL) AND
(UPD_STAFF_CD = @Original_UPD_STAFF_CD OR @Original_UPD_STAFF_CD IS NULL AND UPD_STAFF_CD IS NULL)
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-08-09 11:59
 ありゃりゃ パラメータというのは、“@Original_ENT_DT”などの、実際の値、、、という意味だったのですが。


SqlCommand.Parametersの方ですね。

↓SQL文中のパラメータを、値に置き換える
Dim sql As String = e.Command.CommandText
For Each param In e.Command.Parameters
 sql = sql.Replace(param.ParameterName, param.Value.ToString)
Next
mover
常連さん
会議室デビュー日: 2004/06/20
投稿数: 47
投稿日時: 2004-08-09 12:25
お世話になります。

Jittaさんのアドバイスを受けて、
DBログ部を修正したところ、削除が動くようになりました・・・。

私のDBログ出力部が悪さをしていた模様です;;

色々アドバイスしていただき感謝しています。

スキルアップ/キャリアアップ(JOB@IT)