0

「更新で TableMapping['DiscTable'] または DataTable 'DiscTable' が見つかりません」と表示されるのはなぜですか。この行で:

da.Update(ds, "ディスクテーブル")

da.Update(ds) を試してみましたが、クラッシュします。とにかくテーブルの更新は成功です!?!? これを外せばOK!

Private Sub SelectBtn_Click(sender As Object, e As EventArgs) Handles SelectBtn.Click
    Dim ConnString As String
    Dim SQLStr As String
    Dim OleDBConn As New OleDbConnection()
    Dim OleDBCmd As New OleDbCommand()
    Dim OleDBdr As OleDbDataReader
    Dim ds As New DataSet
    Dim IsChecked As Boolean = CBool(DiscDG.Rows(SelectedRowIndex).Cells(SelectedColIndex).Value)

    ConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=RegDB.accdb;Persist Security Info=False;"

    SQLStr = "UPDATE DiscTable " +
             "SET LectionsTeacher='" + TeacherLblValue + "', LectionsYN=Yes " +
             "WHERE DiscName='" + SelectedRowFirstCell + "'"

    OleDBConn.ConnectionString = ConnString
    OleDBConn.Open()

    OleDBCmd.Connection = OleDBConn
    OleDBCmd.CommandText = SQLStr
    OleDBdr = OleDBCmd.ExecuteReader

    Dim da As New OleDbDataAdapter(SQLStr, OleDBConn)
    da.Update(ds, "DiscTable")

    OleDBdr.Close()
    OleDBConn.Close()
End Sub
4

1 に答える 1

0

あなたの問題は、データセットが空であるため、「DiscTable」というテーブルがないことだと思います。ある時点で「SELECT」クエリを実行したと思います。これにより、更新したいもののセットが得られます。そのデータセットは、更新を行うことになっているものです。

あなたが今やっていることは無意味です。「SELECT」クエリを実行することもできます。これは、既存のデータ セットを更新するのではなく、空のデータ セットにデータを入力しようとしているためです。次に、追加のボーナスとして、ローカルオブジェクトである ds を埋めています。End Sub に到達すると、そのデータ セットはなくなります。したがって、実際には、更新しようとしてもまったく役に立ちません。

于 2013-10-11T09:39:07.157 に答える