2014-05-13 52 views
0

所以我一直在为自己做这个个人项目,我试图创建一个程序,用户(我在这种情况下)可以添加,删除,通过可以填写必要信息的表单更新数据库。将记录添加到Access数据库时,提交按钮将不起作用

为了给出一个总体思路,主窗体有一个数据网格视图,如果点击加载,数据库就会出现记录。我完成了所有这一切。然而,我遇到麻烦的是Form1,它是添加记录表单的地方,我在这里写下信息,并在填写完信息之后,按下“提交”按钮,以便将它写入MS Access数据库。这是我内部提交按钮的代码的一般视图。仅供参考,Profiles是mdb文件的名称,Contacts是包含recods的表的名称。

Imports System.Data.OleDb 
Private Sub btnCommit_Click(sender As Object, e As EventArgs) Handles btnCommit.Click 
If inc <> 0 Then 
     Dim cb As New OleDb.OleDbCommandBuilder(da) 
     Dim dsnewrow As DataRow 

     dsnewrow = ds.Tables("Profiles").NewRow() 

     dsnewrow.Item("First_Name") = FirstNameText.Text 
     dsnewrow.Item("Last_Name") = LastNameText.Text 

     ds.Tables("Profiles").Rows.Add(dsnewrow) 
     da.Update(ds, "Profiles") 

     Main.DataGridView1.Refresh() 


     MsgBox("New Record added") 

    End If 
End Sub 

我不知道的是,如果有必要这个下面的代码添加到Form1_Load的:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Try 
     dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;" 
     dbSource = "Data Source= path to the mdb file" 


     con.ConnectionString = dbProvider & dbSource 

     con.Open() 
     Sql = "SELECT * FROM Contacts" 
     da = New OleDb.OleDbDataAdapter(sql, con) 
     da.Fill(ds, "Profiles") 

     con.Close() 
     Maxrows = ds.Tables("Profiles").Rows.Count 
     inc = -1 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try 
End Sub 

以下声明,仅供参考:

Dim con As New OleDb.OleDbConnection 
Dim da As OleDb.OleDbDataAdapter 
Dim ds As New DataSet 
Dim dbProvider, dbSource As String 
Dim sql As String 
Dim Maxrows As Integer 

语法错误在此行的INSERT INTO语句中:da.Update(ds, "Profiles")

任何帮助都会很棒不胜感激,一直在它的日子不幸:/

让我知道你是否需要任何额外的信息来澄清。

+0

数据库中是否有比First,Last names更多的列? – Plutonix

+0

是的,有。有地址1,地址2,邮编,电话,电子邮件,笔记 – Reginald

回答

0

试试这个。在后

Dim cb As New OleDb.OleDbCommandBuilder(da) 

btnCommit_Click方法添加以下内容:

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

这是否帮助?

+0

好吧,它当然摆脱了错误信息,但没有任何反应:/ – Reginald