2016-08-13 13 views
-1

Ich versuche, alle Golfer Informationen von TGolfers in eine ListBox anzuzeigen. Aber wenn ich meinen Code ausführe, wird nur die Information eines Golfers angezeigt.Anzeigen von Daten aus SQL zu vb.net Listbox

Public Class frmGolfers 

    Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click 

     Dim strSelect As String = "" 
     Dim strName As String = "" 
     Dim cmdSelect As OleDb.OleDbCommand ' this will be used for our Select statement 
     Dim drSourceTable As OleDb.OleDbDataReader ' this will be where our data is retrieved to 
     Dim dt As DataTable = New DataTable ' this is the table we will load from our reader 

     ' open the database 
     If OpenDatabaseConnectionSQLServer() = False Then 

      ' No, warn the user ... 
      MessageBox.Show(Me, "Database connection error." & vbNewLine & _ 
           "The application will now close.", 
           Me.Text + " Error", 
           MessageBoxButtons.OK, MessageBoxIcon.Error) 

      ' and close the form/application 
      Me.Close() 

     End If 

     ' Build the select statement using PK from name selected 
     strSelect = "SELECT * FROM TGolfers " 

     ' Retrieve all the records 
     cmdSelect = New OleDb.OleDbCommand(strSelect, m_conAdministrator) 
     drSourceTable = cmdSelect.ExecuteReader 

     ' load the data table from the reader 
     dt.Load(drSourceTable) 

     ' populate the text boxes with the data 
     lbxDisplay.Items.Add(dt.Rows(0).Item(1).ToString & "," & " " & dt.Rows(0).Item(2).ToString & 
          ControlChars.CrLf & " " & dt.Rows(0).Item(3).ToString & " " & dt.Rows(0).Item(4).ToString & " " & dt.Rows(0).Item(5).ToString & " " & dt.Rows(0).Item(6).ToString) 


     ' close the database connection 
     CloseDatabaseConnection() 

    End Sub 
End Class 
+0

Weil Sie den Items der Listbox hinzufügen nur die erste Zeile der DataTable (Zeilen (0)) und nicht die vollständige Datentabelle. Sie müssen eine Schleife schreiben (IE für | foreach |, während es viele Wahlen gibt) – Steve

+0

Dank für das Antworten! –

+0

Dies ist die Schleife, die ich verwendet habe, es gab mir diesen Fehler "Es gibt keine Zeile an Position 0." Dim count As Ganzzahl count = 0 Während drSourceTable.Read count = count + 1 Ende Während –

Antwort

0

Nach dem Laden starten Datentabelle eine Schleife

...... 
' load the data table from the reader 
dt.Load(drSourceTable) 

' populate the text boxes with the data 
For Each row in dt.Rows 
    Dim text = row(1).ToString & ", " & _ 
       row(2).ToString & ControlChars.CrLf & " " & _ 
       row(3).ToString & " " & _ 
       row(4).ToString & " " & _ 
       row(5).ToString & " " & _ 
       row(6).ToString 
    lbxDisplay.Items.Add(text) 
Next 
...... 

Auf diese Weise können Schleife über jede Zeile, die in der Sammlung dt.Rows, extrahieren die erforderlichen Informationen, um eine Zeichenfolge bauen und fügen die Zeichenfolge die Auflistung von ListBox-Elementen.

Beachten Sie, dass ich Ihre Indexierung ab Index = 1 für jede Spalte in der DataRow gefolgt ist, aber beachten Sie, dass in NET die Array-Indizierung bei Index 0 nicht 1 beginnt, also die erste Spalte Ihres Datarow ist bei Index 0 Ändern Sie den Index im Code entsprechend Ihren Bedürfnissen. (Das heißt, wenn Sie 6 Spalten in dieser Tabelle haben, sollte die Indexierung von 0 bis 5 gehen, wenn Sie den Index 6 in diesem Szenario verwenden)

+0

Sie haben gerade meinen Tag gemacht, Sir! Vielen Dank! –

Verwandte Themen