Access DataGridView, bestimmte Reihen suchen und löschen

JodoK

Grünschnabel
Hallo,
hab mal wieder ein Problem und bin schon seit Stunden auf der Suche :google:.

Ich habe eine Access Datenbank mit einem Formular per DataGridView gekoppelt. Wenn ich jetzt Daten z.B. Artikelnummer in die Formular Textbox schreibe werden die Artikelnummer per Button in die Datenbank geschrieben und per Updatefunktion aktualisiert (Alles kein Problem).
Jetzt möchte ich aber eine bestimmet Artikelnummer mit allen eingegeben Daten wie z.B. Artikelname usw. wieder aus der Datenbank löschen.

Ich habe mir das so vorgestellt: Eine Text.Box, wo die Artikelnummer eingegeben wird, wird bei Knopfdruck "Löschen" per Select Befehl gesucht und dann per Row.Delete gelöscht. Leider klappt das nicht und das Programm schmiert mir ab.

Reihen kann ich ja mit dem Befehl:
EtikettDataSet.Tables("KundenArtikeldaten").Rows(0).Delete()
ohne Probleme löschen. Aber wie Suche ich mir eine Zeile nach Artikelnummer raus und lösche diese dann?
Ich hoffe Ihr versteht was ich meine und könnt mir helfen.

Programm ist :Microsoft Visual Basic 2005
 
Das Problem mit dem Zellen löschen habe ich jetzt über Binding Navigator gelöst, nur ist es sehr mühselig die Zeilen manuell zu durchsuchen.

Wie ist es mögliche eine einzelne Zelle z.B. "Artikel" per Button im DataGridView suchen zu lassen:confused:
Ich finde einfach keine Lösung und wäre für Tips sehr dankbar.

Vielen Dank
 
Hallo JodoK,

Ich habe mir das so vorgestellt: Eine Text.Box, wo die Artikelnummer eingegeben wird, wird bei Knopfdruck "Löschen" per Select Befehl gesucht und dann per Row.Delete gelöscht. Leider klappt das nicht und das Programm schmiert mir ab.

Ohne den Code zu kennen kann man schwer sagen warum das Programm abschmiert.
Man sollte wegen solchen möglichen Fehlern eine Fehlerbehandlung einbauen.

...
Da du jetzt mit dem Bindingnavigator arbeitest kannst du über die Textbox die Filter
Methode der Bindingsource nutzen um die Zeile mit der Artikelnummer anzuzeigen.
Die Find Methode der Bindingsource wäre auch eine Alternative.

Gruß
Jens
 
Vielen Dank für den Tip.

Ich wollte die Zeilen immer über DataGridView ansprechen, was wohl nicht funktioniert.
Habs jetzt über die BindingSource so gelöst:

Code
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If Artikel.Text = "" Then
MsgBox("Bitte Artikelnummer eingeben")
End If
Me.KundenArtikeldatenBindingSource.Filter = "Artikel Like'" & Artikel.Text & "%'"
End Sub

Noch eine kurze Frage?
Jetzt sucht er ja den gesuchten Satz lt.Textbox aus der Tabelle raus und zeigt nur den gesuchten Satz und nicht die anderen Daten an. Wie kann man es machen, dass er nur in die gesuchte Reihe springt?
 
Hallo JodoK,

das geht ebenfalls.

z.B.

mit
Dim i as Integer = _
Me.KundenArtikeldatenBindingSource.Find("dein Feld",Wert)

Me.KundenArtikeldatenBindingSource.Position = i

Allerdings geht es (ohne jetzt getestet zu haben) hier nicht mit
der Like Suche wie beim Filter. Ich glaube das geht nur mit dem
exaKten Wert.

Jens
 
Hallo, hab doch noch eine Frage.

Wie kann man es realisieren, dass wenn der Artikel nicht im Datagrid vorhanden ist, eine MsgBox ausgegeben wird mit Text "Artikel nicht in Liste vorhanden"?

Hab es schon mit der If Anweisung probiert, aber irgendwie steh ich auf dem Schlauch.
 
Hallo JodoK,

du kannst die Variable i mit If prüfen.

Wenn nichts gefunden wurde, müsste i = -1 sein.
Ansonsten > -1.

Jens
 
Zurück