2010-01-05 50 views
1

以下是錯誤: http://screencast.com/t/ZDVhNmJiOTgt重複在更新的MS Access數據庫

請幫幫忙,這裏是我的代碼: 我能做些什麼來解決這個錯誤

 Try 
     If MessageBox.Show("Save and update database?", _ 
     "Confirmation", MessageBoxButtons.YesNo) = _ 
     Windows.Forms.DialogResult.Yes Then 
      Dim idXs As Integer 
      Dim dSet As New DataSet 
      Dim conn As New OleDb.OleDbConnection 
      Dim strSQL As String 

      conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\ACCESS DATABASE\search.mdb" 
      conn.Open() 

      strSQL = "Select * From GH" 
      Dim da As OleDbDataAdapter 
      da = New OleDb.OleDbDataAdapter(strSQL, conn) 
      da.Fill(dSet, "GH") 'fill dataset 

      'code for editing records 
      Dim cb As New OleDbCommandBuilder(da) 
      idXs = Form1.idX 'retrieve index from Form1 
      dSet.Tables("GH").Rows(idXs).Item(0) = TextBox1.Text 
      dSet.Tables("GH").Rows(idXs).Item(1) = TextBox2.Text 
      dSet.Tables("GH").Rows(idXs).Item(2) = TextBox3.Text 
      dSet.Tables("GH").Rows(idXs).Item(3) = TextBox4.Text 
      da.Update(dSet, "GH") 'update database 

      conn.Close() 'close connection 
      reloadMyMain() 'show new changes in form1 if any 
     Else 
      DSET.RejectChanges() 'cancel delete 
     End If 
    Catch ex As Exception 
     MsgBox(ex.ToString) 'show exception message 
    End Try 
+0

請將您遇到問題的代碼與任何錯誤消息一起發佈到您的問題中。 – Fionnuala 2010-01-11 12:45:41

+0

看來你可能已經包含了錯誤的錯誤信息。如果您收到重複的記錄錯誤,您可能希望檢查您的表是否有唯一的索引。 – Fionnuala 2010-01-11 13:30:20

+0

是否有必要在文件名中加上空格,例如:類似於「Provider = Microsoft.Jet.OLEDB.4.0; Data Source ='F:\ ACCESS DATABASE \ search.mdb'」?我不知道,因爲我不使用ODBC的Jet,也不使用文件或文件夾名稱中的空格。 – 2010-01-11 19:16:01

回答

2

你需要檢查表在數據庫中 - 其中一列要麼索引,只能包含唯一值,要麼具有其他限制。

您將數據輸入到不能容納的列中。

嘗試「UPDATE」數據手動直接放在桌子上,你會看到什麼是錯的...

0

看來你根本沒有文件F:\ACCESS DATABASE\search.mdb

檢查訪問數據庫文件的路徑。

0

你指向錯誤信息上寫着:

'F:\ACCESS DATABASE\search.mdb' is not a valid path.

顯然,你在conn.ConnectString = ...行輸入了錯誤的路徑分貝。

+0

不,因爲它與我用於添加條目的代碼相同,並且工作正常。唯一的區別是命令生成器部分和.update – user225269 2010-01-12 09:54:58