2013-01-03 35 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