2017-02-17 6 views
0

Ich habe hier ein Problem, die folgenden Code haben keinen Fehler, aber ich möchte Daten von SQL Server abrufen und Zeilen in Datagridview hinzufügen, anstatt in das Textfeld und anzuzeigen Fügen Sie dann zu datagridview hinzu.Hinzufügen von Zeilen in Datagridview in vb.net von SQL Server

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

Stellen Sie sicher, dass Sie Ihre Datenlesegeräte und Verbindungen schließen. – jmcilhinney

+0

Sie sollten wirklich Parameter verwenden ... – Codexer

Antwort

-1

Nach ExecuteReader Aufruf, erstellen Sie Ihre Datenleser Führen eines DataTable und rufen seine Load Methode. Sie können dann das DataTable zu der DataSource Eigenschaft von Raster zuweisen, um alle Daten anzuzeigen, z.

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

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

Hallo Jmcilhinney, ich habe versucht, aber ich erhalte einen Fehler ungültiger Versuch, Metadaten aufzurufen, wenn der Leser geschlossen ist. –

+0

Dann müssen Sie den Datenleser geschlossen haben, bevor Sie die Daten lesen, was 'DataTable.Load' tut. – jmcilhinney

Verwandte Themen