Suchergebnis ausgeben in GataGridView

  • VB.NET

Es gibt 37 Antworten in diesem Thema. Der letzte Beitrag () ist von Princetux.

    Suchergebnis ausgeben in GataGridView

    Hallo Miteinander,

    da ich noch sehr unsicher bin in der Programmierung stehe ich vor einem Problem das für mich wohl gerade irgendwie unlösbar ist.

    Ich möchte Einen Suchbegriff in eine Textbox eingeben, und dann entsprechend in einer Tabelle lassen.
    Hierbei geht es um Titel und Interpreten, die jeweils in einer eigenen Spalte stehen.
    Was man suchen möchte soll zuvor in einer Combobox ausgewählt werden.

    Derzeit habe ich das Formular bereits erstellt, aber das DGV wird noch im Formload mit der Fill Methode komplett mit allen Datensätzen befüllt.

    Mein Denkansatz ist der, das ich im klick Event des Buttons erst das DGV befüllen darf.

    Derzeit sieht das so aus:


    Kann mir da evtl jemand weiter helfen, wie ich zur gewünschten lösung kommen könnte ?

    Der komplette Code Momentan, da ich noch nicht weiß wie angehen:

    VB.NET-Quellcode

    1. Public Class SongSearch
    2. Private Sub SongSearch_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. 'TODO: Diese Codezeile lädt Daten in die Tabelle "Swsstats.songlist". Sie können sie bei Bedarf verschieben oder entfernen.
    4. Me.SonglistTableAdapter.Fill(Me.Swsstats.songlist)
    5. cmbSearch.SelectedItem = cmbSearch.Items.Item(0)
    6. End Sub
    7. End Class
    Dem Bildle nach scheint "Interpret" aber in der Tabelle garnet enthalten zu sein 8|

    Glaub gut wäre auch ein Screenshot vom Dataset-Designer, dass man weiß, welche Tabellen und Spalten es gibt.

    Kannst du denn schon nach "Titel" filtern?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Wenn Du mit einem typisierten DataSet arbeiten würdest, könntest du das Laden, Speicher und Suchen extrem vereinfachen und müsstest nicht die Tabellen jedesmal neu füllen. Das Suchen kannst Du dann über die BindingSource machen, das geht ganz easy und auch mit mehreren Spalten gleichzeitig. @ErfinderDesRades hat da sehr schöne und gut verständliche Tutorials mit Videos zu erstellt... Kann Sie nur grade nicht auswählen, da ich vom iPad schreibe.... Eventuell kann EdR das nochmal verlinken... Ich denke damit wird dein Programm um einiges einfacher und du hast zusätzlich noch nen Haufen mehr Möglichkeiten...
    "Hier könnte Ihre Werbung stehen..."


    So würde das momentan aussehen.

    Ich habe mit so etwas eben noch nie gearbeitet und tu mir mit einlesen in die Materie etwas schwer. Wie Edr Natürlich richti erkannt hat waren in dem DGV die zwei tabellen nocht nicht enthalten.

    Ich benutze für das Formular mometan die rechte Tabelle.
    Hallo.
    Ich hab es mittlerweile Hinbekommen das ich mein Suchergebnis in eine DGV habe.

    Allerdings möchte ich das DGV Leeren bei einer neuen Suche.
    zum leeren verwende ich:

    VB.NET-Quellcode

    1. Private Sub btnNew_Click(sender As Object, e As EventArgs) Handles btnNew.Click
    2. DataGridView1.Columns.Clear()
    3. End Sub


    Wenn ich nun eine Neue Suche ausführe, dann bleibt das DGV leer und zeigt mir die neuen Suchergebisse nicht an.
    Was mache ich Falsch ?

    Hier mal der Komplette Code damit Ihr euch ein Bild machen könnt.

    VB.NET-Quellcode

    1. Imports MySql.Data.MySqlClient
    2. Public Class Form1
    3. Dim Conn As New MySqlConnection
    4. Dim da As MySqlDataAdapter
    5. Dim ds As New DataSet
    6. Dim dt As New DataTable
    7. Private Sub SongSearch_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    8. '
    9. ' cmbSearch.SelectedItem = cmbSearch.Items.Item(0)
    10. Conn.ConnectionString = "server=********.;user id=**********;database=**********;persistsecurityinfo=True;password=****************;" '
    11. End Sub
    12. Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
    13. Dim SongSearch As String = "%" & tbSearch.Text & "%"
    14. Label3.Text = SongSearch
    15. da = New MySqlDataAdapter("SELECT * FROM songlist where interpret like'" + SongSearch + "'", Conn)
    16. da.Fill(dt)
    17. DataGridView1.DataSource = dt
    18. Label4.Text = "Datensätze gefunden"
    19. Label5.Text = DataGridView1.Rows.Count
    20. End Sub
    21. Private Sub btnNew_Click(sender As Object, e As EventArgs) Handles btnNew.Click
    22. DataGridView1.Columns.Clear()
    23. End Sub
    24. End Class
    Dein Programm macht das schon richtig, du musst nach dem Clearen auch sagen, dass er erneut die Daten ziehen soll und anzeigen soll. ;)
    Momentan scheinst du das ja mit deinem btnSearch zu machen. Also geh hin und Rufe die Prozedur nach deinem Clearen auf.

    Wieso setzt du in deinem Load Event denn den ConnectionString? ?(
    Versuch das alles, so gut es geht, beisammen zu halten.

    Gruß,
    Drahuverar
    Option Strict On!
    Für Anfänger (ich zähle mich noch als einen) ist es anfangs recht schwierig. Und ich meine schwierig im Sinne von Verständnis haben. ~Ich war ja am Anfang auch noch etwas Beratungs-Resistent, weil ich dachte, dass so wie ich es machen würde, es eh funktioniert.

    Wenn die Projekte wachsen und man merkt das man doch langsam/ausgebremst wird, merkt man erst wie einfach es sein kann und wie super solche Technologien sein können (Technologien ist doch ok als Ausdruck, oder?) und wie viel Zeit man durch sie spart. DataSets sind echt der Hammer. :thumbsup:

    @Princetux
    schaue dir die Links von EDR nochmal an und gehe alles durch. Ich habe auch gebraucht, bis ich es wertschätzen gelernt habe. (Habe wertvolle Zeit verloren, weil ich es damals nicht gemacht hatte :| )
    Option Strict On!

    ErfinderDesRades schrieb:

    naja, eiglich schade, dass er den Ansatz mitt BindingSource.Filter aufgegeben hat und stattdessen unnötigen Db-Traffic erzeugt, sowie in untypisierte Programmierung seines typisierten Dataset zurückfällt.


    Ich mochte erst mal die Funktionalität herstellen damit ich damit experientieren kann. Das mit dem Filtern verstehe ich noch nicht, ich weiss eben fast noch nicht über vb.net so das ich auch schnell gefrustet bin wenn ich für eine Funktion 4 stunden nicht weiter komme. Daher erst mal dieser Ansatz.

    Es funktioniert im übrigens jetzt, da ich dt.clear() mache und er das DGV bei jeder neuen Suche leer.
    Aktuell stellt es in Noch auf wenn ich in den SQL einen Inner Join mit einbaue, das mag er wohl nicht besonders.

    VB.NET-Quellcode

    1. ​da = New MySqlDataAdapter("SELECT * FROM songlist sl INNER JOIN modlist ml on sl.sendingmod = ml.moderatorID where interpret like'%" + SongSearch + "%'", Conn)
    Was dir hier versucht wird von allen Seiten zu sagen ist... Du lernst den falschen ANSATZ!!! und baust darauf auf.
    Es macht keinen Sinn! Du wirst nur irgendwann alles was du "gefrickelt" hast vergessen müssen, weil dir hier kaum jemand irgendwann mehr weiterhelfen wird.
    Lern die Grundlagen ordentlich. Dafür sind die Tutorials top.
    Stell Fragen zum Tutorial und hör auf zu "basteln".
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    MemoAnMichSelbst schrieb:

    Was dir hier versucht wird von allen Seiten zu sagen ist... Du lernst den falschen ANSATZ!!! und baust darauf auf.
    Es macht keinen Sinn! Du wirst nur irgendwann alles was du "gefrickelt" hast vergessen müssen, weil dir hier kaum jemand irgendwann mehr weiterhelfen wird.
    Lern die Grundlagen ordentlich. Dafür sind die Tutorials top.
    Stell Fragen zum Tutorial und hör auf zu "basteln".


    Die Turoials mögen Top sein, bringen mir aber nichts wenn ich Grundlagen lernen möchte und von den Turorials aber nur die hälfte verstehe. Das ist mein grundelgendes Problem an der Sache.
    Auch möchte ich keinen fertigen Code vorgesetzt bekomme, weil mit der nichts Bringt wenn ich Ihn nicht verstehe, das löst zwar mein Problem was ich aktuell habe, aber ich stehe sicher irgend wann wieder an.
    Dann frag Fragen zu den Tutorials!
    Und mach nicht etwas gänzlich anderes, was in gebastel ausartet und nicht die vorhandene Unterstützung des Frameworks ausnutzt.

    Du hast hier mit dem EDR jemanden der hier wie ich sehe brav mitliest und der sich in dem Thema extrem gut auskennt. Also nutz das Wissen dass er dir versucht zu vermitteln.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Das ist ja das Angebot eines Forums, dass du bei Fragen fragen kannst.
    Das kann ein umständlicher Prozess sein, der immer weiter zurückgeht, bis hin zu den Grundlagen, die dir bekannt sind, und von wo man dann aufbauen kann.

    Aber es hat keinen Zweck, getrockneten Teig auf den Markt zu bringen, weil man nicht gelernt hat, mit einen Backofen Brot zu backen ;)