感謝大家縮小我的問題,並沒有幫助我。這個網站很棒。VB.NET /訪問數據庫 - 在運行時創建的列不更新
Cmd = New OleDb.OleDbCommand("ALTER TABLE [Parent] ADD [" & ColumnDate & "] int", con)
objCmd = New OleDb.OleDbCommand("ALTER TABLE [Parent] ADD [" & ColumnDate & "] int", con)
objCmd.ExecuteNonQuery()
我添加數據到新插入的列用下面的代碼:
我的程序在運行時用下面的代碼創建列
da.SelectCommand = New OleDb.OleDbCommand(sql, con)
Dim cb As New OleDb.OleDbCommandBuilder(da)
cb.QuotePrefix = "["
cb.QuoteSuffix = "]"
ds.Tables("SchoolMaticsDatabase").Rows(inc).Item(ColumnDate) = Hours * Num
da.Update(ds, "SchoolMaticsDatabase")
上述所有工作正常;當我嘗試編輯最初放置在新添加的列中的信息時出現問題。這些是我採取的方法。 (他們中沒有給出一個錯誤消息;它根本不會在數據庫內進行更新。)
方法1:
da.SelectCommand = New OleDb.OleDbCommand(sql, con)
Dim cb As New OleDb.OleDbCommandBuilder(da)
cb.QuotePrefix = "["
cb.QuoteSuffix = "]"
For Each column As DataColumn In ds.Tables("SchoolMaticsDatabase").Columns
If IsDate(column.ColumnName) = True Then
ds.Tables("SchoolMaticsDatabase").Rows(inc).Item(column.ColumnName) = DataGridView3.Item(column.ColumnName, 0).Value
End If
Next
da.Update(ds, "SchoolMaticsDatabase")
方法2:
da.SelectCommand = New OleDb.OleDbCommand(sql, con)
Dim cb As New OleDb.OleDbCommandBuilder(da)
cb.QuotePrefix = "["
cb.QuoteSuffix = "]"
For count = 13 To MaxColumns - 1
ds.Tables("SchoolMaticsDatabase").Rows(inc).Item(count) = DataGridView3.Item(count, 0).Value
Next
da.Update(ds, "SchoolMaticsDatabase")
方法3:
For Each column As DataColumn In ds.Tables("SchoolMaticsDatabase").Columns
If IsDate(column.ColumnName) Then
Cmd = New OleDb.OleDbCommand("UPDATE [Parent] SET [" & column.ColumnName & "]=" & DataGridView3.Item(column.ColumnName, 0).Value & " WHERE [ID]=" & inc + 1, con)
objCmd = New OleDb.OleDbCommand("UPDATE [Parent] SET [" & column.ColumnName & "]=" & DataGridView3.Item(column.ColumnName, 0).Value & " WHERE [ID]=" & inc + 1, con)
objCmd.ExecuteNonQuery()
End If
Next
我通過打開訪問數據庫手動在表中添加了一列,所有上述方法都適用於編輯存儲在該列中的數據。所以我相信這是與在運行時創建列的事情有關。
感謝您的幫助,我會確保您的建議。 – Saif
它似乎確實存在,但仍然不會更新列... – Saif