0

もう一度、私はあなたに助けを求めています。DataGridView に入力されたデータを SQL テーブルに保存しようとすると、少し行き詰まります。

私はいくつかの投稿をフォローしましたが、それを理解するために縫い合わせることができません

フォームで次の変数をグローバルに宣言します

Dim SQLAdaptor As New SqlClient.SqlDataAdapter
Dim Con As New SqlClient.SqlConnection
Dim builder As SqlClient.SqlCommandBuilder

フォームが読み込まれるときにこれを呼び出します

Private Sub SetTicketList()

     Con.ConnectionString = CropTrackMod.strConn
     SQLAdaptor.SelectCommand = New SqlClient.SqlCommand("SELECT StockRef, Weight, EstimatedPrice, EstimatedPrice, DespatchedQuantity, EstimatedTransport, EstimatedLineTotal FROM TicketDetail", Con)
     builder = New SqlClient.SqlCommandBuilder(SQLAdaptor)
     Con.Open()

     Dim myTable As DataTable = New DataTable
     SQLAdaptor.Fill(myTable)

     dgvTicketDetail.DataSource = myTable   
End Sub

ユーザーがデータグリッドビューに行を残したときにこれを呼び出し、SQLテーブルに保存する必要があります

Private Sub dgvTicketDetail_RowLeave
    ' at grid save'

    Dim myTable = CType(dgvTicketDetail.DataSource, DataTable)
    SQLAdaptor.Update(myTable)
End Sub

フォームが読み込まれると、データ グリッド ビューに正しい列が表示されるので、最初の部分は問題ないと思います。問題は、データを保存し直すときに発生します。初めて実行すると、エラー メッセージは表示されません。2 行目を試すと、次のエラーが表示されます。

Update には、新しい行を含む DataRow コレクションを渡すときに有効な InsertCommand が必要です。

私が理解できることから、データアダプターに更新コマンドが設定されていないため、問題が発生しています。

4

0 に答える 0