Benutzer mit den meisten Antworten
SQL Select in DataGridView

Frage
-
Hallo Mitstreiter,
kurz vorweg, ich bin Anfänger in VB bzw. VisualStudio und nutze dies nur selten für kleine Anwendungen.
Nun habe ich eine Aufgabenstellung, den Inhalt einer Tabelle einer SQl-Datenbank anzuzeigen. (zyklisch refresh)
Ich habe bereits ein DataGridView element, das die Daten aus der Tabelle holt.
"Me.WEBTableAdapter.Fill(Me.HR_DBDataSet.WEB)"
Nun hätte ich gerne noch Filtermöglichkeiten um nach konkreten Kriterien filtern zu können.
Die genau SQL-Syntax dazu kenne ich (kann ich im SQL Management Studio ja probieren).
Kennt jemand eine einfach Möglichkeit diesen Filterwunsch mit diesem DataGridView zu realisieren?
Oder muss ich ganz anderst herangehen?
vielen Dank für Eure Hilfe!
Antworten
-
Hallo Schakal,
ich nehme mal an, dass Du das DGV mit dem Designer erstellt hast. In dem Fall wurde auch eine "WEBBindingSource" erstellt. Diese hat ein Filter. Du kannst also
WEBBindingSource.Filter="Mein Filter" abfeuern, wobei "Mein Filter" analog zum SQL-WHERE steht ( ohne"Where")Also
WEBBindingSource.Filter= "Vorname='Meyer' AND PLZ=50000 AND Vorname LIKE 'R*'" [je nach Datenquelle % oder *]Ich würde Dir raten den Filter-Macher in eine Funktion auszulagern, wenn Du also Comboboxen hast mit Ländern,Namen, etc.
Function BuildFilter(Optional sFilter As String = "") as String
strMultiFilter = String.Empty
Dim strFormFilter(8) As String
If Me.cboEinkäufer.Text <> "" Then
strFormFilter(0) = " AND Buyer LIKE'%" & Trim(cboEinkäufer.Text) & "%'"
End If
If Me.cboStatusEK.Text <> "" Then
strFormFilter(1) = " AND StatusEinkauf='" & cboStatusEK.Text & "'"
End If
If Me.cboModell.Text <> "" Then
strFormFilter(2) = " AND MODELL ='" & Me.cboModell.Text & "'"
End If..................... und so weiter und so fort........
For i as Integer = LBound(strFormFilter) To UBound(strFormFilter)
strMultiFilter = strMultiFilter & strFormFilter(i)
Next'AND und OR wegmachen
If Not strMultiFilter = String.Empty Then
If strMultiFilter.Substring(0, 4) = " AND" Then
strMultiFilter = strMultiFilter.Substring(4, strMultiFilter.Length - 4)
End If
If strMultiFilter.Length > 3 Then
If strMultiFilter.Substring(0, 3) = " OR" Then
strMultiFilter = strMultiFilter.Substring(3, strMultiFilter.Length - 3)
End If
End If
End IfReturn strMultiFilter
End Function
Das BuildFilter-ereignis habe ich in den Clicks/SelectedIndexChange Ereignissen meiner Filter auf dem Form
Und dann gibts halt einen Button der den Filter setzt.
strMultiFilter ist Formweit deklariert
Ich hoffe es hilft fürn Anfang
Gruß
Raimo
- Bearbeitet RaimoBecker Dienstag, 3. März 2015 11:20 sch"a"kal heisst er
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 3. März 2015 12:29
- Als Antwort markiert Aleksander Chalabashiev Montag, 23. März 2015 10:27
Alle Antworten
-
Hallo Schakal,
ich nehme mal an, dass Du das DGV mit dem Designer erstellt hast. In dem Fall wurde auch eine "WEBBindingSource" erstellt. Diese hat ein Filter. Du kannst also
WEBBindingSource.Filter="Mein Filter" abfeuern, wobei "Mein Filter" analog zum SQL-WHERE steht ( ohne"Where")Also
WEBBindingSource.Filter= "Vorname='Meyer' AND PLZ=50000 AND Vorname LIKE 'R*'" [je nach Datenquelle % oder *]Ich würde Dir raten den Filter-Macher in eine Funktion auszulagern, wenn Du also Comboboxen hast mit Ländern,Namen, etc.
Function BuildFilter(Optional sFilter As String = "") as String
strMultiFilter = String.Empty
Dim strFormFilter(8) As String
If Me.cboEinkäufer.Text <> "" Then
strFormFilter(0) = " AND Buyer LIKE'%" & Trim(cboEinkäufer.Text) & "%'"
End If
If Me.cboStatusEK.Text <> "" Then
strFormFilter(1) = " AND StatusEinkauf='" & cboStatusEK.Text & "'"
End If
If Me.cboModell.Text <> "" Then
strFormFilter(2) = " AND MODELL ='" & Me.cboModell.Text & "'"
End If..................... und so weiter und so fort........
For i as Integer = LBound(strFormFilter) To UBound(strFormFilter)
strMultiFilter = strMultiFilter & strFormFilter(i)
Next'AND und OR wegmachen
If Not strMultiFilter = String.Empty Then
If strMultiFilter.Substring(0, 4) = " AND" Then
strMultiFilter = strMultiFilter.Substring(4, strMultiFilter.Length - 4)
End If
If strMultiFilter.Length > 3 Then
If strMultiFilter.Substring(0, 3) = " OR" Then
strMultiFilter = strMultiFilter.Substring(3, strMultiFilter.Length - 3)
End If
End If
End IfReturn strMultiFilter
End Function
Das BuildFilter-ereignis habe ich in den Clicks/SelectedIndexChange Ereignissen meiner Filter auf dem Form
Und dann gibts halt einen Button der den Filter setzt.
strMultiFilter ist Formweit deklariert
Ich hoffe es hilft fürn Anfang
Gruß
Raimo
- Bearbeitet RaimoBecker Dienstag, 3. März 2015 11:20 sch"a"kal heisst er
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 3. März 2015 12:29
- Als Antwort markiert Aleksander Chalabashiev Montag, 23. März 2015 10:27
-
das hört sich richtig gut an, ich probiere gleich mal...
- Bearbeitet Der_Schakal_at_EF Dienstag, 3. März 2015 11:20
-
-
Danke Schakal,
bitte markiere meine Antwort dann als hilfreich.
Zur anderen Frage: Stelle diese bitte neu, da sie mit der ursprünglichen sehr wenig zu tun hat.
Schau aber mal bitte nach dem .net chart control. Mit dem kannst Du die Graphen entweder direkt an Dein SQL-Statement binden oder aber über das DataSet, dass Du ja schon benutzt.
Gruß
Raimo
- Bearbeitet RaimoBecker Dienstag, 3. März 2015 15:58