2013-03-06 341 views
0

我正在嘗試將項目填充到數據網格中,然後使用2個按鈕(一個加載,一個將保存)和一個窗體上的數據網格將它們更新回數據庫。我一直在查詢表達式中遇到「Syntax error(missing operator)」,我不知道爲什麼。另一個問題是我的DataAdapter和Dataset需要在內存中進行標註?下課?查詢/更新MS Access記錄

'this loads my data from db into datagrid 

    Dim con As New OleDb.OleDbConnection 
    Dim sql As String 

    con.ConnectionString = "Provider=Microsoft.jet.oledb.4.0;data source=dbsrc.mdb" 

    con.Open() 
    sql = "SELECT * from [Employee Assignments]" 
    da = New OleDb.OleDbDataAdapter(sql, con) 
    da.Fill(ds, "Assignments") 

    con.Close() 

    DataGridView1.DataSource = ds.Tables("Assignments") 

下面的代碼應該更新我的數據庫,以反映

'this will eventually update the datagrid back into the db 

    Dim cb As New OleDb.OleDbCommandBuilder(da) 
    Dim con As New OleDb.OleDbConnection 

    'Dim sql As String 
    con.ConnectionString = "Provider=Microsoft.jet.oledb.4.0;data source=dbsrc.mdb" 

    con.Open() 

    da.Update(ds, "Assignments") 

    con.Close() 

    DataGridView1.DataSource = ds.Tables("Assignments") 

我讀了這個MSDN artcle DataGridView中所做的更改 - http://msdn.microsoft.com/en-us/library/system.data.common.dataadapter.update.aspx - 但它似乎並沒有太大的幫助,我很困惑,但我相信我的問題不是識別並將正確的數據集傳回數據庫。我應該如何處理數據集,然後使用DataAdapter進行修改,然後發送回數據庫?

+0

你可以嘗試更改表的名稱,以刪除裏面的空間,並檢查它是否工作? – Steve 2013-03-06 16:51:06

回答

0

當表中包含空格的名稱,你應該通知CommandBuilder的這個問題 設置QuotePrefix和QuoteSuffix屬性,以避免錯誤

cb.QuotePrefix = "[" 
cb.QuoteSuffix = "]" 

這些三三兩兩默認爲空字符串,因此,當您嘗試將更改寫回到數據庫,您會收到語法錯誤。

+0

但你認爲這可能是問題嗎?他的數據被加載,我想在datagrid中正確 – DevelopmentIsMyPassion 2013-03-06 16:58:08

+0

如果你注意到select查詢有方括號。這是由CommandBuilder自動生成的更新查詢會變得混亂。 – Steve 2013-03-06 16:59:27

+0

是的,我注意到它,但不知道這是否可能是問題時更新 – DevelopmentIsMyPassion 2013-03-06 17:00:29