In einer bestimmten Spalte suchen mit Suchfeld (MS SQL)

Hallo miteinander,

wer sich noch an meinen letzten Beitrag erinnert, weiß, dass ich an einem Programm arbeite welches die Tabellen einer Datenbank in einem tableView aufruft. Falls nicht hier eine kleine Erinnerung:

Auto Beispiel.PNG

Nun möchte ich gerne ein Suchfeld einbauen, welches eine ausgewählte Spalte durchsuchen kann. Hier mal zwei Dummy Beispiele:

Suchfeld mit Combobox 2.PNG
Suchfeld mit Combobox.PNG

Im Dummy habe ich es per textField KeyEvent mit Cases eingebaut. (Siehe Bild)

Cases.PNG

Ist zwar noch in Ordnung bei nur zwei Tabellen aber für 100 oder mehr ist das keine gute Lösung. Wie könnte ich vorgehen, wenn ich besonders viele Tabellen habe aber diese Suchfunktion unbedingt einbauen möchte?

MFG euer Java_Noob_12345
 

Thallius

Top Contributor
Nur mal so als Tipp. Warum muss sich der Arme User erst mit den Select Felder rumquälen wenn in den Spalten doch i.d.R nichts vergleichbares drin steht. Lass den Quatsch doch einfach weg und mach nur ein Suchfeld das über alle Spalten sucht. Ist viel einfach für den User und auch für dich.
 
Nur mal so als Tipp. Warum muss sich der Arme User erst mit den Select Felder rumquälen wenn in den Spalten doch i.d.R nichts vergleichbares drin steht. Lass den Quatsch doch einfach weg und mach nur ein Suchfeld das über alle Spalten sucht. Ist viel einfach für den User und auch für dich.

In einer realistischen Datenbank viel mehr Spalten als 3. Können 20, 30 oder mehr Spalten sein. Wenn ich da was bestimmtes suchen würde z.B. nach einer Kundennummer etc. würden mir tausende weitere Einträge gezeigt worin man dann "Findet Waldo" spielen muss.

Beispiel einer "realistischen" Datenbank:

Beispiel.PNG
 
K

kneitzel

Gast
Also für ein Refactoring könnte ich mit vorstellen, dass Du da entweder ein Enum aufbaust, dass eben Name und Predicate beinhaltet oder man packt es in eine HashMap.

Wenn man es in eine HashMap packt, dann wäre die Überlegung, ob man sich diese dynamisch über Reflection aufbaut.

Aber in beiden Fällen wäre denn die Prüfung nur, dass man sich das Predicate holt und dann anwendet.

Wobei Du dann in Deinem Code Auto und Bier zusammen gewürfelt hast. Das dürfte so in der Praxis nicht sein, oder?
 

Thallius

Top Contributor
In einer realistischen Datenbank viel mehr Spalten als 3. Können 20, 30 oder mehr Spalten sein. Wenn ich da was bestimmtes suchen würde z.B. nach einer Kundennummer etc. würden mir tausende weitere Einträge gezeigt worin man dann "Findet Waldo" spielen muss.

Und dann willst du dem User zumuten in einem Select mit 30 Einträgen den richtigen zu wählen? Sorry aber ihr solltet euch echt mal Gedanken über Useaility machen. Sowas will doch keiner Bedienen...
 
Und dann willst du dem User zumuten in einem Select mit 30 Einträgen den richtigen zu wählen? Sorry aber ihr solltet euch echt mal Gedanken über Useaility machen. Sowas will doch keiner Bedienen...
Das Suchfeld funktioniert auch ohne ComboBox. Wenn der Nutzer diese nicht benutzen möchte muss er es ja nicht. Suchen kann man ganz normal. Nur werden dann eben alle Reihen angezeigt, die den gesuchten Begriff enthalten.
Tabelle:"Du suchst die Palette Nr 1? Tja Pech gehabt ich liste dir jetzt alle Reihen auf, die eine 1 enthalten. Die richtige Reihe musst du dann selbst suchen."

Könnte man durch "matches" ändern sodass nur noch die Reihen, die exakt der Eingabe entsprechen, angezeigt werden. Finde ich persönlich nicht so toll, da dann während der Eingabe alle Reihen verschwinden, weil sie logischerweise nicht den Daten in der Tabelle entsprechen.

Die ComboBox sollte die Reihen besser filtern können. Wenn ich nach der Kundennummer, oder was auch immer, suche dann sollen gefäligst auch nur die Kundennummern durchsucht werden.
 
K

kneitzel

Gast
Und dann willst du dem User zumuten in einem Select mit 30 Einträgen den richtigen zu wählen? Sorry aber ihr solltet euch echt mal Gedanken über Useaility machen. Sowas will doch keiner Bedienen...
Dem gebe ich Recht. Wobei ich die Lösung gut finde, dass Benutzer sich heraus suchen können, auf welchen Feldern sie suchen wollen und diese Auswahl dann speichern können.

Aus Sicht der Usability ist auch schon eine Tabelle mit 30 Spalten Schwachsinn. Die wird man auch kaum angezeigt bekommen. Da ist dann also entweder eine gute Vorauswahl wichtig oder man macht es dynamisch: Der User kann auswählen, welche Felder für ihn wichtig sind. Dann bastelt sich jeder User das so zurecht, wie er es für seinen Aufgabenbereich benötigt. (Wobei eine Mischung wichtig ist, also erst die gute Vorauswahl und dann können "Experten"/"Power User" sich das auch noch anpassen.

Früher hatten wir oft auch einfach eine "Filter row" unter den Überschriften. Da konnte man dann auch gezielt filtern. Aber auch das habe ich so als nicht wirklich gut benutzbar in Erinnerung.

Gerade bei den Web Frameworks gibt es dafür ja die eine oder andere Lösung. Wobei ich Lösungen nicht gut finde, die das alles Client-Seitig machen. Da hatten wir dann schon Seiten, die dann erst paar Sekunden geladen haben um dann im JavaScript das sortieren und filtern zu machen was aber dann für den Benutzer um 1 Minute Wartezeit bedeutete :) Aber das ist auch schon um 10 Jahre her und da hat sich ja zu, Glück extrem viel getan!
 

lam_tr

Top Contributor
Hallo miteinander,

wer sich noch an meinen letzten Beitrag erinnert, weiß, dass ich an einem Programm arbeite welches die Tabellen einer Datenbank in einem tableView aufruft. Falls nicht hier eine kleine Erinnerung:

Anhang anzeigen 13138

Nun möchte ich gerne ein Suchfeld einbauen, welches eine ausgewählte Spalte durchsuchen kann. Hier mal zwei Dummy Beispiele:

Anhang anzeigen 13139
Anhang anzeigen 13140

Im Dummy habe ich es per textField KeyEvent mit Cases eingebaut. (Siehe Bild)

Anhang anzeigen 13141

Ist zwar noch in Ordnung bei nur zwei Tabellen aber für 100 oder mehr ist das keine gute Lösung. Wie könnte ich vorgehen, wenn ich besonders viele Tabellen habe aber diese Suchfunktion unbedingt einbauen möchte?

MFG euer Java_Noob_12345

Was hälst du von controlsfx TableFilter? Dabei muss du nicht mal viel implementieren und ist dynamisch. Funktioniert für jede Spalte und setzt die Predicates zusammen.

Für 3 Zeilen Code Aufruf ist das schon sehr cool.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Wie kann ich eine Jtable mit Inhalt einer SQL Abfrage füllen Datenbankprogrammierung 14
D Zweckmäßigkeit einer Schlüsseltabelle Datenbankprogrammierung 4
TH260199 Java-Programm. Probleme bei der Umsetzung von einer Kontaktverwaltung. Datenbankprogrammierung 7
S Variable in main soll mit der generierten Zahl aus einer Methode ausgefüllt werden Datenbankprogrammierung 3
N Oracle SQL - Nächst kleineren Namen2 zu einem Namen aus einer Tabelle Datenbankprogrammierung 3
T Datenbank auf einer Webseite aus einer Exceltabelle erstellen Datenbankprogrammierung 5
D JPA gleiche methode funktioniert an einer Stelle, an der anderen nicht Datenbankprogrammierung 3
nonickatall MySQL Auf neue Datensätze in einer Datenbank reagieren Datenbankprogrammierung 5
B Wie kopieren ich eine Spalte von einer Tabelle in eine andere Tabelle SQLite durch java code? Datenbankprogrammierung 26
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
pkm Frage zu Encodingproblem bei einer Datenbankanbindung Datenbankprogrammierung 1
B Frage bei einer SQL Query Datenbankprogrammierung 3
F Mapping einer SQL Abfrage in eine Klasse Datenbankprogrammierung 4
S Verbindung von einer Excel Datei zu Java Datenbankprogrammierung 2
J Sql Anfrage nach einer Zeile beenden Datenbankprogrammierung 6
J Welche Kriterien haben Einfluss auf die Geschwindigkeit einer Datenbank ? Datenbankprogrammierung 4
S Anmelden an einer msql datennbank Datenbankprogrammierung 1
F Auslesen einer .dbf-Datei, Zuordnung Index Datenbankprogrammierung 0
ralfb1105 Oracle Zwei ojdbc Driver in einer Applikation? Datenbankprogrammierung 13
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
Dimax MySQL 10 höchsten Werte aus einer Tabelle ermitteln Datenbankprogrammierung 30
L Speicherverbrauch Java Anwendung mit einer Datenbankanbindung Datenbankprogrammierung 19
temi Wie kann ich "Class" in einer DB speichern? Datenbankprogrammierung 2
F UPDATE - Befehl nur in einer Zeile Datenbankprogrammierung 11
I Oracle Wie ermitteln, welche Benutzer-(!)Tabellen in einer DB sind? Datenbankprogrammierung 1
DaCrazyJavaExpert Derby/JavaDB Wert einer Variable in der Datenbank direkt auf 1 setzten. Datenbankprogrammierung 71
D MySQL Suche nach Max Value in einer Tabelle Datenbankprogrammierung 7
W Daten aus einer Datei von einem VServer auslesen Datenbankprogrammierung 1
F MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben? Datenbankprogrammierung 9
F Java Objekte in einer Datenbank speichern Datenbankprogrammierung 4
MrSnake Hilfe bei erstellen einer DB Datenbankprogrammierung 12
M Wie übergebe ich Datenbankobjekte aus einer sql-Datenbank einer Java Klasse bzw. Instanz Datenbankprogrammierung 7
Z Finde den Fehler: Daten aus einer Access-Datenbank lesen Datenbankprogrammierung 12
D Aktualisierung einer ListView mit Daten aus MySQL-DB Datenbankprogrammierung 5
E Wie kann man mit einer ID-Spalte über eine Parameterübergabe auf eine Seite verweisen? Datenbankprogrammierung 17
E Warum funktioniert das Erzeugen einer View nicht? Datenbankprogrammierung 1
E Kann man in einer if-Bedingung auch SELECT-Statements überprüfen? Datenbankprogrammierung 23
E Was sind die Vorteile von DB2 im Gegensatz zu einer Oracle-Datenbank? Datenbankprogrammierung 5
E Wie geschieht der konzeptueller Entwurf einer Datenbank Datenbankprogrammierung 1
I SQLite Objekt speichern einer Serialisierter Klasse Datenbankprogrammierung 1
D HSQLDB INSERT INTO in einer For Schleife mit selber ID, machbar? Alternative? Datenbankprogrammierung 7
I Inhalt einer hsqldb anzeigen Datenbankprogrammierung 1
J Realisierung einer DB in Combi mit Java Datenbankprogrammierung 13
Androbin [Serializing] Mehrere Objekte in einer einzigen Datei speichern Datenbankprogrammierung 1
S Auswahl einer Datenbank Datenbankprogrammierung 0
M Derby/JavaDB Speicherplatz einer Zeile bestimmen Datenbankprogrammierung 0
P JPA in einer größeren Java SE Anwendung Datenbankprogrammierung 0
R MySQL Blob aus DB auslesen und einer Tabelle ausgeben Datenbankprogrammierung 7
C H2 Syntax fehler beim erstellen einer Tabelle Datenbankprogrammierung 4
L MySQL Uhrzeit-Format innerhalb einer Tabelle Datenbankprogrammierung 8
2 MySQL Daten aus einer Array auslesen und MySQL Statment erstellen. Datenbankprogrammierung 5
S Derby/JavaDB Probleme beim anlegen einer embedded DB Datenbankprogrammierung 13
E Daten einer SQL-Datenbank aus Combobox in labels schreiben Datenbankprogrammierung 6
M Problem beim Erstellen einer Query Datenbankprogrammierung 7
L Datenbankabfrage mit einer Range Datenbankprogrammierung 3
S Anbindung einer Datenbank an Java Datenbankprogrammierung 7
H ResultSet is closed tritt bei JSF aber nicht bei einer Java-Applikation auf Datenbankprogrammierung 10
eskimo328 Datenbankverbindung ohne Passwort im Quelltext bei einer offline Anwendung Datenbankprogrammierung 14
C unverständliches DB Problem (Es ist kein temporärer Systemtabellenbereich mit einer ausreichenden..) Datenbankprogrammierung 5
A Oracle Update Befehl in Datenbank anhand einer Schleife Datenbankprogrammierung 8
Kenan89 Oracle Daten einer Tabelle in Array speichern Oracle Datenbankprogrammierung 10
S 2 Tabellen zu einer zusammenführen, INSERT INTO Fehler Datenbankprogrammierung 5
D Sperrverfahren in einer Datenbank Datenbankprogrammierung 6
B Feld in einer @Entity als Text speichern Datenbankprogrammierung 5
G Oracle Hibernate M:N-Beziehung mit nur einer vorhandenen Tabelle Datenbankprogrammierung 5
M MySQL Auto-Increment einer custom formatted id? Datenbankprogrammierung 2
F Oracle ResultSet zu einer HashMap<Integer, String[]> Datenbankprogrammierung 6
M DB: Mehrere Zeilen in einer Zeile zusammenführen Datenbankprogrammierung 10
D Probleme bei der Erzeugung einer Tabelle Datenbankprogrammierung 15
D Frage zu potenziellen Leerzeichen in einer Datenbank Datenbankprogrammierung 5
H datantyp einer variable ermittel mit sql Datenbankprogrammierung 3
I Zugriff auf Datenbank nach Erstellen einer Executable Jar Datei verweigert Datenbankprogrammierung 10
S Problem beim Anlegen einer Tabelle Datenbankprogrammierung 5
S Wie überprüfe ich ob die Instanz einer Connection gerade werwendet wird? Datenbankprogrammierung 4
M Ausgabe der Rows mit höchstem Wert X einer Gruppe y,z ? Datenbankprogrammierung 2
L Derby/JavaDB Fehler beim Erstellen einer Tabelle Datenbankprogrammierung 2
turmaline [Hibernate] @OneToOne: Löschen einer referenzierten Instanz Datenbankprogrammierung 2
S ResultSet einer Datenbankabfrage - Nullpointer Exception Datenbankprogrammierung 13
B Aktuellen Stand der Datensätze einer Datenbank anzeigen Datenbankprogrammierung 9
B Die Anzahl der Datensaetze einer Datenbank anzeigen Datenbankprogrammierung 2
T Ablage von Benutzereinstellungen in einer DB Datenbankprogrammierung 7
T Inhalt einer Datenbanktabelle autom. in XML ausgeben Datenbankprogrammierung 7
M Oracle Probleme mit dem anbinden einer Oracle 10g Datenbank Datenbankprogrammierung 27
B MySQL Row und ColumnIndex aus einer JTable (mysqlDb) selectieren Datenbankprogrammierung 18
C Hibernate Liste mit allen Objekten einer Entity Datenbankprogrammierung 17
M Sinnvoller Entwurf einer Java DB-Anwendung Datenbankprogrammierung 2
E MySQL Befüllen einer MySQL DB mit großen Daten Datenbankprogrammierung 6
Airwolf89 Spaltennamen einer Tabelle zurückgeben lassen Datenbankprogrammierung 9
1 Aufruf einer View über Java Gui Datenbankprogrammierung 5
J Mit einer Abfrage Worte suchen die in Zwei Tabellen enthalten sind Datenbankprogrammierung 5
M FindBugs und PreparedStatement aus einer Datei lesen Datenbankprogrammierung 11
M Bitte um Hilfe bei Wahl einer Datenbank Datenbankprogrammierung 3
J zufällige Auswahl aus einer Tabelle Datenbankprogrammierung 4
F Problem mit einer Sql Index Datenbankprogrammierung 2
Joy jdbcodbc brücke - einbinden einer Datenbank in Java Datenbankprogrammierung 4
S Daten einer Tabelle vergleichen und ggs neuen Wert einfügen Datenbankprogrammierung 8
T Spalten einer SQL-Anfrage vorhersagen Datenbankprogrammierung 6
X Daten einer DatenbankTabelle in JTable darstellen Datenbankprogrammierung 13
A Datenbankverbindung mit einer Datenbank auf einem Webspace Datenbankprogrammierung 10
J SQL Abfrage: Verschiedene Werte in einer Spalte mit einem Update Befehl? Datenbankprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben