2013-01-03 33 views
0

我通过ODBC适配器从数据库加载数据到我的datagridview。带有ODBC数据适配器的DataGridView

 cmd = New Odbc.OdbcCommand(sql, cn) 
     adp = New Odbc.OdbcDataAdapter(cmd) 
     adp.Fill(ds, "temp2") 

     bs.DataSource = ds 
     DataGridView2.DataSource = bs 

这样我可以更改和更新数据库中的数据“活泼”。
但我现在有不同的情况。
对于更改数据,我必须将网格的双击移动到另一个窗体,当我回来时,我希望我的datagridview显示某些行中的更改。

这是我尝试:

Dim fl As New dataform 
    With fl 
     .StartPosition = FormStartPosition.Manual 
     .aCallerLocation = Me.Location 
     .ShowDialog() 
    End With 
    fl = Nothing 

    Dim c_builder As New Odbc.OdbcCommandBuilder(adp) 
    Dim o As Integer 
    Try 
     o = adp.Update(ds, "temp2") 
     MsgBox(o) 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 

但我不能简单地把它整天!没有异常产生,但“o”总是零。

我该怎么做,以及如何从“dataform”中返回后,如何获得此功能以查看行中的更改?

回答

0

试试这个

cmd = New Odbc.OdbcCommand(sql, cn) 
adp = New Odbc.OdbcDataAdapter(cmd) 
Dim c_builder As New Odbc.OdbcCommandBuilder(adp) 
adp.Fill(ds, "temp2") 

bs.DataSource = ds 
DataGridView2.DataSource = bs 

Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click 

    Dim dsChange As DataSet = New DataSet 
    'add record 
    If (ds.HasChanges(DataRowState.Added)) Then    
     dsChange = ds.GetChanges(DataRowState.Added) 
     Dim rowchange As Integer 
     rowchange = adp.Update(dsChange, "temp2") 
     If (rowchange > 0) Then 
      MessageBox.Show(rowchange.ToString() & " Record Berhasil Dimasukan") 
     End If 
    End If 

    'Modified record 
    If (ds.HasChanges(DataRowState.Modified)) Then    
     dsChange = ds.GetChanges(DataRowState.Modified) 
     Dim rowchange As Integer 
     rowchange = adp.Update(dsChange, "temp2") 
     If (rowchange > 0) Then 
      MessageBox.Show(rowchange.ToString() & " Record Berhasil Dihapus") 
     End If 
    End If 

    'Delete record 
    If (ds.HasChanges(DataRowState.Deleted)) Then    
     dsChange = ds.GetChanges(DataRowState.Deleted) 
     Dim rowchange As Integer 
     rowchange = adp.Update(dsChange, "temp2") 
     If (rowchange > 0) Then 
      MessageBox.Show(rowchange.ToString() & " Record Berhasil Diubah") 
     End If 
    End If 

    'Menerapkan perubahan 
    ds.AcceptChanges() 

    'Refresh(DataGrid) 
    DataGridView2.Refresh() 

End Sub