Datensätze filtern

Schrubber

Bekanntes Mitglied
Hallo

ich hab folgendes Problem:

Ich lese aus einer Oracle Datenbank Datensätze aus. Diese müssen nun nach einem bestimmten Muster (Vom Anwender her über Radiobuttons auswählbar) getätigt werden. Dazu verwende ich folgendes Script:

Java - PasteIt.com - #1 paste tool to store your text!

Dies gibt mir bisher die Möglichkeit, die Datensätze nach dem Anfangszeichen zu filtern.

Nun muss ich aber weitere Funktionen einbauen, wie:


Sortieren nach Zielgruppe. Diese Zielgruppe, nach der gesucht werden soll, steht in einem JComboBox und wird ausgelesen. Nun muss ja der restliche Datensatz, welcher in filteredListData steht, nur nochmal überprüft werden. Jedoch stehe ich da auf dem Schlauch....


Hoffe, ihr könnt mir helfen. :)


Grüße,
Schrubber
 

Michael...

Top Contributor
Der einfachste Weg wäre vermutlich jedes mal die Datensätze direkt gefiltert von der Datenbank zu holen. Allerdings nicht unbedingt effektiv.

Seit Java 1.6 gibt es RowFilter (Java Platform SE 6) und RowSorter (Java Platform SE 6) die man zur Filterung von Tabellenmodellen nutzen kann.
(Habe ich selbst aber noch nie genutzt)

Falls Du die Filterung wie in dem verlinkten Beispiel selbst durchführen willst, kannst ja genauso über die jeweilige "Spalte" iterieren und entsprechend der Kritieren die Daten ins neue Model übernehmen oder nicht. Um Strings zu vergleichen gibt's ja verschiedene Methoden und Möglichkeiten equals(..), startsWith(..), contains(..) ... reguläre Ausdrücke...
 
C

Camino

Gast
Ich hab mir auch mal einen Filter für meine Datensätze erstellt. Und zwar hole ich mir von der Datenbank alle Datensätze (Personendaten) und zeige die in einem Dialog in einer Tabelle an. Über der Tabelle hab ich 3 Texteingabefelder (Vorname, Nachname, Matrikelnummer). Sobald ich in eins der Felder etwas eingebe, wird die Tabelle mit den Datensätzen aktualisiert und gefiltert angezeigt. Also, bei Nachname ein "a" eingegeben, werden nur noch alle Datensätze angezeigt, deren Nachname mit "a" bzw. "A" beginnen. Die Felder können auch kombiniert werden, also ein zusammengesetzter Filter.

Ich denke, wenn das mit Textfeldern so funktioniert, dürfte das mit anderen Komponenten (JCheckBox, JComboBox...) auch möglich sein. Müssen evtl. wohl nur andere Listener verwendet werden...

Und wie hab ich das umgesetzt: Das TableModel mit den Daten wird einmal erstellt und holt sich die Daten. Die Tabelle wird mit dem Model erstellt. Dann wird ein TableRowSorter mit dem Model erzeugt und der Tabelle zugewiesen...
Java:
...
tableModel = new TableModelPersonSuche();
datenTabelle = new JTable( tableModel );
	
sorter = new TableRowSorter<TableModel>( tableModel );
datenTabelle.setRowSorter( sorter );
...

An die Texteingabefelder hab ich DocumentListener hinzugefügt, die auf die Änderungen (Texteingabe oder Textentfernen) reagieren:
Java:
...
tfVorname = new JTextField();
tfVorname.getDocument().addDocumentListener( new PersonDocumentListener( this ) );
...

In der Klasse PersonDocumentListener (implementiert DocumentListener) wird der Filter zusammengebaut und gesetzt.

Java:
...
// Suchtexte werden aus den Eingabefeldern geholt
String tf1 = dialog.getTextNachname();
String tf2 = dialog.getTextVorname();
String tf3 = dialog.getTextMatrikelnummer();
    	
// eine Liste mit den 3 Filtern wird erstellt
java.util.List<RowFilter<Object, Object>> filters = new ArrayList<RowFilter<Object, Object>>(3);
    	
// die 3 Filter werden hinzugefügt
filters.add( RowFilter.regexFilter("^(?i)" + tf1, 1) ); //Textfeld1 für Spalte 0
filters.add( RowFilter.regexFilter("^(?i)" + tf2, 2) ); //Textfeld2 für Spalte 1
filters.add( RowFilter.regexFilter("^(?i)" + tf3, 3) ); //Textfeld3 für Spalte 2
    	
// RowFilter.andFilter wird erstellt
RowFilter<Object, Object> filter = RowFilter.andFilter( filters );
    	
// Filter wird gesetzt
dialog.getSorter().setRowFilter( filter );
...

Da ich dem PersonDocumentListener den Dialog übergeben habe, hab ich im DocumentFilter Zugriff auf die Textfelder und den RowSorter.

Camino
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Anzahl Datensätze ausgeben Java Basics - Anfänger-Themen 5
S Algorithmus Datensätze einfügen wenn... Java Basics - Anfänger-Themen 26
E Anzahl Datensätze in Textfeld Java Basics - Anfänger-Themen 5
J Datensätze aus Txt Datei auslesen - Datensätze durch stöbern Java Basics - Anfänger-Themen 5
P Doppelte Datensätze aus CSV-Datei löschen Java Basics - Anfänger-Themen 17
S CheckIn / CheckOut für Datensätze Java Basics - Anfänger-Themen 2
M JSON Datensätze aus Website in Tabelle Java Basics - Anfänger-Themen 17
F Sortieren von Datensätze Java Basics - Anfänger-Themen 5
J Datensätze aus einer DB als Objekte erzeugen und in ArrayList abspeichern Java Basics - Anfänger-Themen 9
K Datensätze in der Datenbank zählen Java Basics - Anfänger-Themen 32
K Anzahl aller Datensätze anzeigen ? Java Basics - Anfänger-Themen 5
T Gemischte Datensätze als mehrstellige Zahl sortieren Java Basics - Anfänger-Themen 6
S Datensätze einzeln auslesen (Strings) Java Basics - Anfänger-Themen 6
T datensätze in gui anzeigen Java Basics - Anfänger-Themen 4
P SQL - Abfrage - Anzahl an Datensätze. Java Basics - Anfänger-Themen 5
G Komplexe Datenstruktur (Liste heterogener Datensätze) ? Java Basics - Anfänger-Themen 2
I Datenmengen in datensätze reduzieren Java Basics - Anfänger-Themen 7
F Doppelte Datensätze zusammenziehen Java Basics - Anfänger-Themen 2
bernd Datensätze in Textdatei speichern? Java Basics - Anfänger-Themen 39
B Datei öffnen , Datensätze auslesen und damit Rechnen ? Java Basics - Anfänger-Themen 2
V JSON-Objs aus JSON-Obj filtern und löschen (Manipulation ohne Kenntnis der vollst. Struktur) Java Basics - Anfänger-Themen 12
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
L Zahlungen nach Monat filtern Java Basics - Anfänger-Themen 2
L Texte filtern Java Basics - Anfänger-Themen 36
CptK Bestimmten Integer Wert aus Array filtern Java Basics - Anfänger-Themen 2
S Integer aus Array filtern Java Basics - Anfänger-Themen 4
P Signal Filtern Java Basics - Anfänger-Themen 1
J Objekttypen vergleichen und filtern Java Basics - Anfänger-Themen 6
K Lambda - kompliziertes filtern Java Basics - Anfänger-Themen 5
MrSnake ObservableList filtern Java Basics - Anfänger-Themen 5
N Collection sortieren/ filtern Java Basics - Anfänger-Themen 7
J Textdatei filtern und bearbeiten Java Basics - Anfänger-Themen 1
B Sortieren und Filtern von Tabellen Java Basics - Anfänger-Themen 6
B Input/Output output Datenstrom filtern Java Basics - Anfänger-Themen 0
B Klassen Doppelte werte Filtern XML, Datenbank und DOM Java Basics - Anfänger-Themen 3
Java-DAU String filtern Java Basics - Anfänger-Themen 22
L Palindrome aus Sätzen filtern Java Basics - Anfänger-Themen 53
S Liste speziell filtern Java Basics - Anfänger-Themen 20
Kaniee CharArrayWriter filtern Java Basics - Anfänger-Themen 4
A String mittels RegEx filtern Java Basics - Anfänger-Themen 13
F String filtern und Systeminfos Java Basics - Anfänger-Themen 19
X Strings filtern? Java Basics - Anfänger-Themen 10
J Aus einem String unbekannte zeichen filtern Java Basics - Anfänger-Themen 11
J Regex + Match Zahlen filtern Java Basics - Anfänger-Themen 5
S LinkedList<String[]> filtern und sortieren Java Basics - Anfänger-Themen 9
S String filtern mit replace -> Problem Java Basics - Anfänger-Themen 6
M Filtern von Dateinamen Java Basics - Anfänger-Themen 7
G Zahlen aus String filtern? Java Basics - Anfänger-Themen 3
G Filtern von nicht-darstellbaren Zeichen Java Basics - Anfänger-Themen 3
M ordner überwachen und dateien filtern Java Basics - Anfänger-Themen 3
M Quelltext - Urls filtern Java Basics - Anfänger-Themen 4
G String "filtern" Java Basics - Anfänger-Themen 2
S Liste oder Array filtern Java Basics - Anfänger-Themen 2
N Textdatei einlesen, Filtern und Splitten Java Basics - Anfänger-Themen 4
J Mailadresse aus String filtern Java Basics - Anfänger-Themen 2
C Dateinamen Filtern Java Basics - Anfänger-Themen 10
M Kann man im Filter nach mehreren Strings filtern lassen Java Basics - Anfänger-Themen 11
M Dateien aus Verzeichnis filtern, aber nicht nach Endung Java Basics - Anfänger-Themen 59
G Filtern einer 3stelligen Zahl Java Basics - Anfänger-Themen 7
G aufsteigenden Teilstring aus String filtern? Java Basics - Anfänger-Themen 2
D RGB-Frabmodell filtern Java Basics - Anfänger-Themen 9
G Reguläre Ausdrücke zum Filtern von logfiles Java Basics - Anfänger-Themen 2
M java sonderzeichen filtern Java Basics - Anfänger-Themen 3
E Laufwerksangabe aus Pfadangabe (String) filtern Java Basics - Anfänger-Themen 10
H Verzeichnis lesen, und nur unterverzeichnisse heraus filtern Java Basics - Anfänger-Themen 6
G mit .* filtern Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben