DataGridView per Textbox durchsuchen + drucken aus DataGridView

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von TheRaza.

    DataGridView per Textbox durchsuchen + drucken aus DataGridView

    Hallo zusammen!

    Ich bin blutiger Anfänger mit VB 2010 bzw mit VB überhaupt, möchte bzw muss aber eine Anwendung basteln, mit welcher es möglich ist auf eine Datenbank zuzugreifen und Datensätze hinzuzufügen, zu löschen, zu editieren etc.

    Folgenden Code habe ich mir schon zusammengesammelt:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    3. Reload()
    4. End Sub
    5. Private Sub Reload()
    6. Me.DBDataSet.Clear()
    7. Me.Tabelle1TableAdapter.Fill(Me.DBDataSet.Tabelle1)
    8. End Sub
    9. Private Sub ReloadToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ReloadToolStripMenuItem.Click
    10. Reload()
    11. End Sub
    12. Private Sub SaveToolStripMenuItem_Click(sender As Object, e As System.EventArgs) Handles SaveToolStripMenuItem.Click
    13. Me.Grid.EndEdit()
    14. Me.Tabelle1BindingSource.EndEdit()
    15. Me.Tabelle1TableAdapter.Update(Me.DBDataSet.Tabelle1)
    16. End Sub
    17. Private Sub DeleteToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles DeleteToolStripMenuItem.Click
    18. Me.Grid.Rows.Remove(Grid.CurrentRow)
    19. Me.Tabelle1TableAdapter.Update(Me.DBDataSet.Tabelle1)
    20. End Sub
    21. End Class


    Das funktioniert auch soweit. Nun möchte ich aber einen Text (Name, Zahl etc) in eine Textbox klimpern und über einen "Suchen"- Button in dem DataGridView Suchen und jeden Treffer markieren lassen. Wenn ich z.B.: Fußball in die Textbox schreibe, sollen alle Datensätze in denen das Wort Fußball- (auch Fußballer etc) vorkommt markiert werden.

    Außerdem bräuchte ich eine Möglichkeit markierte Datensätze auszudrucken.

    Ich hoffe ihr könnt mir da weiterhelfen!

    Vielen Dank im voraus und viele Grüße
    du musst im Denken Daten und Oberfläche trennen.
    Also nicht denken: "ich markiere im DGV die und die Zeile" sondern denken: "ich markiere den und den Datensatz".

    Was fällt auf? Den Datensätzen fehlt eine "Markierungs-Property".
    Womit klar ist, was zu tun ist: statte die Tabellen einer IsSelected-Spalte aus.

    Anschließend ists vergleichsweise einfach, anhand dieser Property bestimmte Datensätze hervorzuheben, oder mw. auch auszudrucken.

    (Wobei Drucken immer ein ziemlich schwieriges Thema ist)

    Auch das Markieren ist ein schwieriges Thema, denn wennmans datenbänkerisch richtig machen will, dann sollte sich in diesem Punkt die DataTable im Dataset von der Datenbank-Tabelle unterscheiden.
    Denn Markierungen gehören üblicherweise nicht in eine Datenbank.

    Ansonsten empfehle ich immer DB-Programmierung ohne Datenbank, denn solange das DAtenmodell noch nicht in Stein gemeißelt ist, ists immer unnötig überaus aufwändig, wenn am Datenmodell eine Änderung vorgenommen werden muß.
    Hallo =)

    erstmal Vielen Dank für deine Antwort!!

    Was fällt auf? Den Datensätzen fehlt eine "Markierungs-Property".
    Womit klar ist, was zu tun ist: statte die Tabellen einer IsSelected-Spalte aus.
    Leider ist mir nicht klar, was zu tun ist ?( Hast du eventuellein Beispiel dazu,damit ich das mal sehe???

    Ich hoffe du kannst mir nochmal weiterhelfen =)

    Manuelles unschönes Suchen oder die bessere Alternative siehe (Link)

    wenn du über eine Textbox suchen möchtest kannst du in etwa so vorgehen (ich schreibe mal frei drau hin)


    VB.NET-Quellcode

    1. Dim suchwort As String = Tb_Suchwort.Text
    2. For each r As DataGridViewRow in dgv_meinedaten.rows
    3. If r.cells(1) = suchwort Then 'mach was -> er sucht in der 2ten Spalte jeder Zeile nach deinem Suchwort
    4. Next


    oder

    VB.NET-Quellcode

    1. Dim suchwort As String = Tb_Suchwort.Text
    2. For each r As DataGridViewRow in dgv_meinedaten.rows
    3. For each c As DataGridViewCell In r.cells
    4. If c = suchwort Then 'mach was -> er sucht in allen Spalten jeder Zeile nach deinem Suchwort
    5. Next
    6. Next


    Was wesentlich besser ist siehste hier:
    *klick* <- Oder lässt dir es am besten von ErfinderDesRades zeigen =)


    und das Thema drucken. Als "Blutiger Anfänger" wie Du dich nennst solltest hiervon die Finger lassen! Denn sonst wirst du schnell den Spass dran verlieren!
    Den Drucken unter .NET ist n gewurschtel hoch 10!

    Du wirst so viele Lösungsansätze finden, aber keiner wird das machen was du willst. Das ganze ich recht komplex und n gebastel hoch 10.
    Am besten schreibst deine Datagridview Daten in ne CSV, öffnest mit exel oder was ähnlichem und druckst dir dort erstmal für den Anfang alles aus!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Denis_Class“ () aus folgendem Grund: Antwort auf Drucken hinzugefügt

    TheRaza schrieb:

    Leider ist mir nicht klar, was zu tun ist ?( Hast du eventuellein Beispiel dazu,damit ich das mal sehe???
    Aber du hast doch schon Tabellen!
    Und die haben doch auch Spalten!
    Was willst du noch sehen :?: :?:

    Mach eine weitere Spalte hin an die Tabelle, nenne sie "IsSelected", setze ihren Datentyp auf Boolean, und ihren DefaultWert auf False.
    Füge deinem DGV über den SmartTag diese Spalte ebenfalls hinzu und fertig eine hübsche Selektier-Option.

    Oder hast du dein Dataset noch nie im Dataset-Designer gesehen?
    Aber das kann auch schier nicht sein, denn dein Code scheint mir aus einem meiner Movie-Tuts zu kommen, und da gibts immer den Dataset-Designer zu sehen.

    gugge etwa "DatasetOnly" auf Movie-Tuts

    Nicht ganz klar

    Hi,

    mir war nicht ganz klar, was ich machen sollte :wacko:

    Jetzt weiß ich was du meinst und werde es auch gleich mal ausprobieren. Und der Code stammt ganz richtig aus "Datenbank in 10 Minuten" :D Auch hierfür Danke! =)



    Ich habe meiner Tabelle nun die Spalte "IsSelected" hinzugefügt, den Datentyp auf Boolean gesetzt und den Standardwert auf false eingestellt. Wenn ich das Programm jetzt starten will bekomme ich folgende Meldung: OleDbException wurde nicht behandelt. Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben.

    Wasläuft falsch?

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