2014-03-27 84 views
0

单按钮和datagridview。如果按钮text1(“编辑数据库”)datagridview读入数据库,如果按钮text2(“ACCEPT CHANGES”)datagridview写入数据库,但后者不能发生,无论我做什么。没有错误只是不更改数据库文件。无法通过DataGridView更新数据库 - 无错

  Dim ConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=w:\PD_Z.mdb" 
     Dim SQLString As String = "SELECT * FROM ZARADE" 
     Dim OleDBConn1 As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection(ConnString) 
     Dim DataSet1 As New DataSet() 
     Dim OleDbDataAdapter1 As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter(SQLString, OleDBConn1) 
     OleDBConn1.Open() 
     OleDbDataAdapter1.Fill(DataSet1, "ZARADE") 
     DataGridView1.DataSource = DataSet1.Tables("ZARADE") 
     DataGridView1.Columns.Remove(DataGridView1.Columns(0).Name) 

     If Button2.Text = "Edit database" Then 
      DataGridView1.ReadOnly = False 
      Button2.Text = "ACCEPT CHANGES" 
      Button2.ForeColor = Color.DarkRed 
      Button1.Enabled = False 
      ComboBox1.Enabled = False 

     Else 
    Button2.Text = "Edit database" 
      DataGridView1.ReadOnly = True 
      Button2.ForeColor = Color.Black 
      Button1.Enabled = True 
      ComboBox1.Enabled = True 

      'Dim cb As New OleDbCommandBuilder(OleDbDataAdapter1) ' THIS ONE DOESN'T WORK 
      ' cb.QuotePrefix = "[" 
      ' cb.QuoteSuffix = "]" 
      ' OleDbDataAdapter1.Update(DataSet1.Tables("ZARADE")) 

      Using con = New OleDbConnection(ConnString) ' THIS ONE DOESN'T WORK TOO 
       Me.Validate() 
       OleDbDataAdapter1.Update(DataSet1.Tables("ZARADE")) 
       DataSet1.AcceptChanges() 
      End Using 
      DataSet1.AcceptChanges() 
      OleDBConn1.Close() 

此代码在Button_click事件中。

回答

0

你在你的数据集执行

OleDbDataAdapter1.Fill(DataSet1, "ZARADE") 

所有的行后RowWtate =不变......所以,当你调用Update(数据集1 ....)没有什么更新...检查返回值...我想这将是0,因为没有行受到影响...

+0

那么,我该怎么做。我以为首先点击将数据库读入数据网格视图,然后点击写入数据库。你能给我一些建议吗? –

+0

我不明白你要存档的内容...如果你直接在阅读之后编写,将不会有任何改变被写入......标准工作流将从db读取,附加到网格,在网格中进行更改编辑单元格值(这将自动更改为行状态),然后更新到db(例如在按钮单击事件中) – PrfctByDsgn

+0

对不起,我忘了解释。首先点击激活/导入数据到datagridview,并启用datagridview编辑“DataGridView1.ReadOnly = False”,然后我有鼠标点击事件,每一次点击“单元格”放入“X”值或删除它,如果有“X”已经在那了。然后在编辑完成时。再次点击同一个按钮,将datagridview(“X”)的更改写入数据库。上面的代码只是按钮单击事件,它应该填充datagridview并启用它进行编辑,然后再单击将这些更改写入数据库。 我希望我不会感到困惑。 –