0

以下のコードはエラーなしで実行されますが、MS Access テーブルは更新されません。私は何が欠けていますか?

    Try
        cnn = New OleDbConnection(ConfigurationManager.ConnectionStrings("accConnectionString").ToString())
        cnn.Open()
    Catch ex As Exception
        Debug.Print("Oops - no connection to database")
        Exit Sub
    End Try

    Dim sql As String
    sql = "SELECT * FROM tblSend WHERE UploadedSuccessfullyOn is null ORDER BY QueuedOn;"
    Dim da As New OleDbDataAdapter(sql, cnn)
    Dim ds As New DataSet
    da.Fill(ds, "dsQueuedToSend")
    For Each dr As DataRow In ds.Tables("dsQueuedToSend").Rows

    ' Perform other unrelated tasks in this space, removed for brevity

        ' If those other tasks were successful, update Access.
        If success = True Then
            sql = "UPDATE [tblSend] SET [UploadedSuccessfullyOn] = @uploadedOn WHERE (([UploadID]) = @uploadId);"
            Dim cmd As OleDbCommand
            cmd = New OleDbCommand(sql, cnn)
            cmd.Parameters.Add("@uploadedOn", OleDbType.Date).Value = Now
            cmd.Parameters.Add("@uploadedId", OleDbType.Integer).Value = dr("UploadID")
            cmd.ExecuteNonQuery()
            cmd.Dispose()
            Console.WriteLine("Success: updated.")
        Else
            Console.WriteLine("Failed: Not updated.")
        End If
    Next

    da.Dispose()
    cnn.Close()

私も試しました:

 sql =  "UPDATE [tblSend] SET [UploadedSuccessfullyOn] = ? WHERE (([UploadID]) = ?);"

または、非優先/非パラメータ アプローチで値を追加するだけです。

sql =  "UPDATE [tblSend] SET [UploadedSuccessfullyOn] = #" & Now & "# WHERE (([UploadID]) = " & dr("UploadID") & ");"
Dim cmd As OleDbCommand
cmd = New OleDbCommand(sql, cnn)
cmd.ExecuteNonQuery()
cmd.Dispose()

これらのアプローチのいずれも、MS Access テーブルを更新しません。アイデア?ありがとう!

4

1 に答える 1

1

以前に Visual Studio で気になったことの 1 つは、Access データベースを WinForms プロジェクトに埋め込むと、プロジェクトを実行すると、Access データベースが元のディレクトリからランタイム ディレクトリにコピーされ、加えた変更が上書きされることです。 .

これにより、更新が行われていないという錯覚が生じる可能性がありますが、実際には適切なタイミングでチェックすると更新されます.

于 2013-12-28T07:02:17.547 に答える