0

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」からreturnimgした後の行の変更を確認するにはどうすればよいですか?

4

1 に答える 1

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
于 2013-06-11T04:28:25.457 に答える