Daten aus SQLite DB in vorgefertigter Tabelle DataGridView darstellen

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Daten aus SQLite DB in vorgefertigter Tabelle DataGridView darstellen

    Hallo zusammen,

    habe vor kurzem angefangen mit der VB Programmierung und komme derzeit nicht wirklich weiter. Ich habe folgendes Problem:

    Ich habe mir eine Datenbank mit einer Tabelle "Kunden" in SQLite
    erstellt. Diese an über eine über eine Klasse "Dankenbank" an meine
    Anwendung angebunden. Soweit so gut, Verbindung funktioniert auch, da
    der Login der auf diese Datenbank
    zugreift, klappt. Nun will ich mir eine Beim öffen einer Form Daten aus
    einer Abfrage in eine vorgefertigte Spaltenstruktur in einem
    DataGridView laden.

    Ein Bild darf ich leider noch nicht reinstellen, daher versuche ich
    mal eine Beschreibung: Die von mir vordefinierte Tabelle ist vorhanden
    und wird leer dargestellt. Rechts daneben taucht die Tabelle aus der
    Abfrage mit samt der Daten aus der SQLite-Datenbank
    auf. Spaltenanzahl sind natürlich identisch.


    Wie bekomme ich es nun hin die links stehende Tabelle mit den rechts
    stehenden Daten zu befüllen? Mein Code sieht volgender Maßen aus:

    VB.NET-Quellcode

    1. Private Sub Stammdatensuche_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. Dim userinfo As DataRow = Nothing
    3. Dim sql As String = "select Kunden.KundenID, Kunden.Nachname, Kunden.Vorname, Kunden.Anrede, Kunden.PLZ, Kunden.Ort, Kunden.Straße From Kunden"
    4. Dim Datenbank As New Datenbank
    5. Try
    6. Using SQLconn As New SQLiteConnection(Datenbank.connectionString)
    7. Using cmd As New SQLiteCommand(SQLconn)
    8. SQLconn.Open()
    9. cmd.CommandText = sql
    10. Dim da As New SQLiteDataAdapter(cmd)
    11. Dim dt As New DataTable
    12. da.Fill(dt)
    13. DataGridView1.DataSource = dt
    14. End Using
    15. End Using
    16. Catch ex As Exception
    17. End Try
    18. End Sub


    Es wäre der absolute knaller wenn mir jemand helfen könnte, sonst
    verzweifele ich an dieser Situation. Wahrscheinlich irgend eine
    Kleinigkeit.

    Vielen Dank im voraus,

    Bastian

    Verschoben. Code-Tags eingefügt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    VB_Beginner_3108 schrieb:

    Ich habe mir eine Datenbank mit einer Tabelle "Kunden" in SQLite erstellt. Diese an über eine über eine Klasse "Dankenbank" an meine Anwendung angebunden.
    ich plädiere dafür, wenn man im Zusammenhang mit Datenverarbeitung von "anbinden" und dergleichen spricht, dass damit Databinding bezeichnet sein sollte.
    Weil ich weiß nicht, was du da mit Datenbank, SqLite, Tabelle, Anwendung und wieder Datenbank-Klasse machst - aber Databinding ist das ganz sicher nicht.



    Aber mal zum Problem:

    VB_Beginner_3108 schrieb:

    Wie bekomme ich es nun hin die links stehende Tabelle mit den rechts stehenden Daten zu befüllen?
    Wieso befüllst du die rechts stehende Tabelle, wenn du die Daten in der links stehenden haben willst?
    Befüll doch gleich die links stehende Tabelle.



    Hast du vlt. iwann mal Interesse, richtiges Databinding kennenzulernen?
    Ich befülle nicht die rechte Tabelle sonder diese erscheint bei der Ausführung automatisch.

    Also ich habe eine Form im Entwurfsmodus erstellt und in dieser eine
    DataGridView eingefügt. In der DGV habe ich Spalten definiert (KundenID;
    Nachname; Vorname; Anrede; PLZ; Ort; Straße). Als Ergebnis habe ich
    dann
    folgendes Bild erhalten (Text in den Klammern nicht Teil des
    Ergebnisses, dient nur zur Erklärung):


    (Header): KundenID; Nachname; Vorname; Anrede; PLZ; Ort; Straße; KundenID; Nachname ;…

    (Inhalt): ; ; ; ; ; ; ; 1 ; Mustermann;…
    ; ; ; ; ; ; ; 2 ; Schmidt ;…


    Die zweite Auflistung (hinter der Spalte „Straße“) kommt nun
    von meiner SQL-Abfrage. Nun wäre es absolut Klasse, wenn die Daten der
    Abfrage unter den definierten Spalten ausgegeben werden würden, sodass
    ich anstatt 14 Spalten (jeweils 2 doppelte)
    nur 7 Spalten ausgegeben werden.

    Also ja ich lade die Daten in eine DataGridView die Daten
    der SQLite ordnen sich nicht meinen definierten Spalten unter, sodass
    ich doppelt soviele Spalten ausgegeben bekomme wie gewollt. Halt alle
    2x.
    Das deutet auf fehlerhaftes Databinding hin.
    DGV hat eine Property AutoGenerateColumns, die ist per default true, und dann generiert das DGV DGV-Spalten entsprechend der DataSource, die ihm gegeben wird.
    Aber dann wärst du doch schon fast am Ziel: Entferne einfach alle deine selbstgebastelten DGV-Spalten, und lass das Grid seine eigenen generieren.

    Willste vermutlich nicht, weil du das DGV differenzierter gestalten willst: Spaltenbreiten, Überschriften, Formatierung, Spaltentypen, Spalten ausblenden,...

    Du hast meine Frage nicht beantwortet, ob du Interesse hast, Databinding richtig zu erlernen.