2017-02-17 4 views
0

ここに問題がありますが、下のコードにエラーはありませんが、SQL Serverからデータをフェッチして、テキストボックスに表示するのではなくDataGridviewに行を追加したいその後、datagridviewに追加します。SQL Serverからvb.netのdatagridviewに行を追加してください

Private Sub TextBox2_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles TextBox2.KeyDown 
    If e.KeyCode = Keys.Enter Then 
     'searchcproduct 
     con = connection() 

     con.Open() 
     cmd.Connection = con 
     cmd.CommandText = " select * from product where plucode='" & TextBox2.Text & "' or barcode='" & TextBox2.Text & "'" 
     Dim dbreader As SqlDataReader = cmd.ExecuteReader 
     If dbreader.HasRows = False Then 
      TextBox2.Text = "" 
      TextBox2.Focus() 
      itemnotfound.Show() 
      PlayBackgroundSoundFile1() 
     ElseIf dbreader.HasRows = True Then 
      While dbreader.Read() 
       TextBox4.Text = dbreader.Item("plu_description") 
       TextBox5.Text = dbreader.Item("unitprice") 
       TextBox7.Text = dbreader.Item("plu_qty") 
       TextBox8.Focus() 
      End While 

     End If 
    End If 
    'TextBox2.Text = "" 

End Sub 

Private Sub Button20_Click(sender As System.Object, e As System.EventArgs) Handles Button20.Click 
    Dim rowNumber As Integer = DataGridView1.Rows.Add() 
    Try 
     DataGridView1.Rows.Item(rowNumber).Cells(0).Value = Me.TextBox2.Text ' i want to display sql rather than textbox 
     DataGridView1.Rows.Item(rowNumber).Cells(1).Value = Me.TextBox4.Text 
     DataGridView1.Rows.Item(rowNumber).Cells(2).Value = Me.TextBox5.Text 
     DataGridView1.Rows.Item(rowNumber).Cells(3).Value = Me.TextBox8.Text 
     DataGridView1.Rows.Item(rowNumber).Cells(4).Value = Val(Me.TextBox5.Text) * Val(Me.TextBox8.Text) 
     If Me.DataGridView1.Rows.Count > 0 Then 
      Me.Label2.Text = FormatNumber(totalsales(), 2).ToString() 

     End If 
    Catch ex As Exception 
     MessageBox.Show(ex.Message, "check") 
    End Try 
    TextBox2.Text = "" 
    TextBox4.Text = "" 
    TextBox5.Text = "" 
    TextBox8.Text = "" 
    TextBox7.Text = "" 
End Sub 
+0

データリーダーと接続を閉じていることを確認してください。 – jmcilhinney

+0

あなたは本当にパラメータを使用する必要があります... – Codexer

答えて

-1

ExecuteReaderを呼び出した後、DataTableを作成し、データリーダーを渡し、そのLoadメソッドを呼び出します。グリッドのDataSourceプロパティにそのDataTableを割り当てて、すべてのデータを表示することができます。

Dim myDataReader = myCommand.ExecuteReader() 
Dim myDataTable As New DataTable 

myDataTable.Load(myDataReader) 
myDataGridView.DataSource = myDataTable 
+0

こんにちはjmcilhinney、私は試みましたが、リーダーが閉じられたときにメタデータを呼び出すための無効なエラーが発生しました。 –

+0

それから、 'DataTable.Load'と同じデータを読み込む前にデータリーダーを閉じておく必要があります。 – jmcilhinney

関連する問題