| |
VB.NET - Ein- und UmsteigerFilter nach erstem Buchstaben | | | Autor: Knabber | Datum: 04.09.22 22:58 |
| Hallo
Weiss jemand ob es folgendes gibt:
Ich möchte in einer Textbox einen Buchstaben eingeben und danach soll aus dem Dataset/Bindingsource alles im
Datagridview angezeigt werden was mit dem Buchstaben anfängt. Gebe Ich den 2. Buchstabe ein soll weitergefiltert werden. Bis zum schluss nur noch ein Datensatz übrig bleibt.(sofern vorhanden)
Kann da jemand helfen ?
Gruß
Sabine | |
Re: Filter nach erstem Buchstaben | | | Autor: Manfred X | Datum: 05.09.22 00:43 |
| Hallo!
Die simple Lösung (Textbox-Textchanged-Event und der magische Stern im String-Filter):
Public Class frmFilter
Dim WithEvents tboFilter As New TextBox With
{.Parent = Me, .Location = New Point(10, 10), .Width = 300}
Dim bs As New BindingSource
Dim dt As New DataTable
Dim dgv As New DataGridView With
{.Parent = Me, .Top = 100, .Size = New Size(300, 300), .DataSource = bs}
Private Sub frmFilter_Load(sender As Object, e As EventArgs) Handles _
MyBase.Load
'Testdaten
dt.Columns.Add("irgendwas")
With dt.Rows
.Add("A")
.Add("aa")
.Add("b")
.Add("BB")
.Add("c")
.Add("cC")
.Add("aAauuu")
End With
bs.DataSource = dt
End Sub
Private Sub tboFilter_TextChanged(sender As Object, e As EventArgs) _
Handles tboFilter.TextChanged
bs.Filter = dt.Columns("irgendwas").ColumnName & " like '" & _
tboFilter.Text & "*'"
End Sub
End Class | |
Re: Filter nach erstem Buchstaben | | | Autor: Knabber | Datum: 05.09.22 09:14 |
| Hallo
erst einmel vielen Dank für die Hilfe.
Das es nur ein Einzeiler ist wäre mir nicht im Traum eingefallen.
Ich habe versucht den code bei mir anzupassen. leider funktioniert er nicht wie gewünscht.
Private Sub tbx_name_TextChanged(sender As Object, e As EventArgs) Handles _
tbx_name.TextChanged
Dim bs As New BindingSource
Dim dt As New DataTable
bs.DataSource = dt
DatenBindingSource.Filter = dt.Columns("Name").ColumnName & " like '" & _
tbx_name.Text & "*'"
End Sub Ich bekomme eine Fehlermeldung
"NullRefereceException wurde nicht behandelt."
In jeder Celle der Column "Name" steht aber ein Name
Das Dataset heisst "BDSDataset"
Meine Tabelle heisst "Daten"
Die Spalte heisst "Name"
Die Textbox heisst "tbx_name.text"
Ich hoffe das ich deinen Code richtig umgesetzt habe
Die Textbox(Detailview), sowie das Datagridview sind Gebunden
Gruß
Sabine
Beitrag wurde zuletzt am 05.09.22 um 09:15:39 editiert. | |
Re: Filter nach erstem Buchstaben | | | Autor: Manfred X | Datum: 05.09.22 12:29 |
| Hallo!
Die Datenklassen dürfen nicht im Eventhandler (Text-Changed) deklariert werden.
Du musst beim Filtern die Bindingsource Deiner Datenbasis (=gefüllte Datatable) benutzen.
Du benötigst also eine Bindingsource, an die BDSDataset.Daten gebunden ist
(Datasource-Eigenschaft).
Diese Bindingsource-Instanz sollte mindestens auf Formularebene (eventuell im Designer)
deklariert sein, wie in meinem Beispiel.
Du erstellst in Deinem Code lokal im Eventhandler eine (leere) Tabelle.
Befasse Dich einmal mit dem Gültigkeitsbereich von Variablen-Deklarationen. | |
Re: Filter nach erstem Buchstaben | | | Autor: Knabber | Datum: 08.09.22 08:21 |
| so. habe nun viel zeit damit verbracht
Habe im Designer eine neue Tabelle erstellt "Name"
Dann im Textchanged alles so eingetragen wie es nach meinen Vorstellungen richtig sein müsste.(nach deinem Code)
Es gibt keine Fehlermeldung. aber Filtern tut er auch nicht.
Private Sub tbx_name_TextChanged(sender As Object, e As EventArgs) Handles _
tbx_name.TextChanged
Dim bs As New BindingSource
Dim dt As New NameDataTable
bs.DataSource = dt
bs.Filter = dt.Columns("Name").ColumnName & " like '" & tbx_name.Text & _
"*'"
end sub konntest du noch mal schauen wo mein Fehler dabei ist?
gruß
Sa | |
Re: Filter nach erstem Buchstaben | | | Autor: Manfred X | Datum: 08.09.22 08:46 |
| Hallo!
Ich kann nur erneut schreiben, was ich bereits geschrieben habe.
Du mußt Deine (im Designer erstellte) Tabelle an eine auf Formularebene
deklarierte Bindingsource binden, die wiederum an einem Grid hängt.
Diese Bindingsource ist vermutlich vom Designer bereits erstellt worden.
Sie muß im Textchanged-Event zum Filtern verwendet werden.
Befasse Dich unbedingt mit dem Geltungsbereich von Variablen-Deklarationen.
Variablen, die innerhalb einer Routine deklariert sind, existieren nur so lange,
bis die Routine beendet ist. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats März 2024 Dieter OtterUTF-8 Konvertierung von Dateien und StringsVB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|