問題が発生しているようです。Windows フォーム アプリケーションで( dataset
Excel) をソースとして使用しています。セルに変更を加えた後、自分の中でdatagridview
リフレッシュ/更新する方法を見つけたいと思っています。dataset
datagridview
これを達成するために私が取った手順を見てみましょう。フォームに「更新」を追加し、に変更が加えられた後に に変更を書き込むbutton
メソッドを作成しました。write2DGV
dataset
datagridview
出力を更新するために 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