2

問題が発生しているようです。Windows フォーム アプリケーションで( datasetExcel) をソースとして使用しています。セルに変更を加えた後、自分の中でdatagridviewリフレッシュ/更新する方法を見つけたいと思っています。datasetdatagridview

これを達成するために私が取った手順を見てみましょう。フォームに「更新」を追加し、に変更が加えられた後に に変更を書き込むbuttonメソッドを作成しました。write2DGVdatasetdatagridview

出力を更新するために Excel を更新できるようにするタイマーを追加しました。datasetまた、 ( のデータソース) を消去するためのコードも追加しましたdatagridview。最後に、 を介して をソースとする retrieve メソッドがdatasetありdatagridviewますoledataadapter

残念ながら、コードを実行すると、get update メソッドの引数としてキーを指定していないというエラー メッセージが表示されます。「キー」が何を意味するのか正確にはわかりません。また、get update メソッドの引数の有効なデータ型はブール値のみです。私のコードは以下の通りです:

'Declarations
Dim myDataSet As DataSet
Dim MyCommand As OleDb.OleDbDataAdapter
Dim objWorkSheet As Excel.Worksheet = objExcel.ActiveSheet
Dim sizetimer As New System.Timers.Timer

Sub retrieveMyDataSet()
    MyCommand = New OleDbDataAdapter(select * from [MyExcelWorksheet$A13:x150], MyConnection)
     myDataSet = New System.Data.DataSet()
    MyCommand.Fill(myDataSet)
    myDataGridView.DataSource = myDataSet.Tables(0).DefaultView
End Sub

Sub write2Size()
    'A-k gets written.  Entire graph goes to a-x so I only need to writ the columncount -14
   'x is letter 24. k is letter 11.  24-11 = 13.  So, offset needs to be -13
   '39;Rows 13 through first blank
        Dim rowindex As Integer
        Dim columnindex As Integer
        For rowindex = 1 To myDataGridView.RowCount
        For columnindex = 1 To myDataGridView.ColumnCount - 13
            objWorkSheet.Cells(rowindex + 13, columnindex + 0) = myDataGridView(columnindex     - 1, rowindex - 1).Value
        Next
    Next
End Sub

Sub refreshDGV()
    write2DGV()
    myDataSet.Clear()
    Dim x As New OleDbDataAdapter("select * from [MyExcelWorksheet$A13:x150]", MyConnection)
    Dim oledbCommands As New OleDb.OleDbCommandBuilder(x)
    x.UpdateCommand = oledbCommands.GetUpdateCommand() 'oops type! removed = x.UpdateCommand
    x.Update(myDataSet)
    sizetimer.AutoReset = True
    sizetimer.Interval = 2000 '2 seconds
    retrieveMyDataSet()
End Sub

Private Sub refreshbtn_Click(sender As System.Object, e As System.EventArgs) Handles refreshbtnSize.Click
   refreshDGV()
End Sub
4

1 に答える 1