-1

私は vb.net を初めて使用し、データ セットで For...Next コンストラクトを使用してテーブル内のフィールドを更新することにかなりの課題を抱えています。以下のサンプル コード - 不足しているものを誰か教えてもらえますか? この特定の例は単純な SQL 更新ステートメントで実現できることはわかっていますが、このコードがどのようになるかを実際に使用するには、データセット内の各レコードをステップ実行する必要があります。以下の例は、手順を理解するための単純なものです。これは例外なく実行されますが、テーブル内のデータは変更されないことに注意してください。

ヘルプ!:)


    Dim objConn As SqlConnection = New SqlConnection("Data Source=DALLAS\;Initial Catalog=Adaptive;Integrated Security=True")

    Dim selectCMD As SqlCommand = New SqlCommand("SELECT * from dwbprocref", objConn)
    selectCMD.CommandTimeout = 30

    Dim custDA As SqlDataAdapter = New SqlDataAdapter
    custDA.SelectCommand = selectCMD

    Dim custCB As SqlCommandBuilder = New SqlCommandBuilder(custDA)
    custCB.QuotePrefix = "["
    custCB.QuoteSuffix = "]"


    Dim dRow As DataRow
    Dim dTable As DataTable

    objConn.Open()

    Dim custDS As DataSet = New DataSet
    custDA.Fill(custDS, "dwbprocref")

    For Each dRow In custDS.Tables(0).Rows
        If dRow.Item("pr_format") = "MDV" Then
            dRow.Item("pr_tester") = "X"
        End If
        custDS.AcceptChanges()
    Next
    custDA.Update(custDS, "dwbprocref")

    objConn.Close()

4

1 に答える 1

3

を呼び出していますAcceptChanges。これにより、すべての行が未変更としてマークされるため、データベースで更新されることはありません。この呼び出しを削除すると、うまくいくはずです。

于 2009-10-07T22:23:22.323 に答える