Hallo,
ich habe ein Programm indem ich Daten aus der Datenbank in einem Tableview anzeige.
Nun habe ich soviel Daten, das die natürlich nicht ale auf den Bildschirm passen.
Deshalb habe ich einen ScrollPane.
Die verschachtelung ist SrollPane -> AnchorPane -> TableView.
Man kann in einer ComboBox auswählen welche Person man sehen will
Wenn man eine Person in der Combobox ausgewählt hat werden die zugehörigen Daten in der Datenbank geleseen
und in das TableView gestellt..
Das ist immer die selbe Routine.
Die LeseRoutine
Da ja unterschiedliche Anzahl Daten zu jeder Person da sind, möchte ich natürlich auch das der Scrollbereich entsprechen angepasst wird.
Nun zu meinem Problem:
Obwohl die Routinen immer gleich sind,
beim der ersten Auswahl Person in der ComboBox klappt alles
wenn ich dann eine andere Person auswähle wird zwar die Größe des Scrollbereiches richtig gesetzt,
aber es werden keine Daten angezeigt.
Habe schon debugged, am lesen von der Datenbank liegt es nicht, da kommen alle Daten.
Hat jemand eine Ahnung?
Danke und Gruß
Jürgen
.
ich habe ein Programm indem ich Daten aus der Datenbank in einem Tableview anzeige.
Nun habe ich soviel Daten, das die natürlich nicht ale auf den Bildschirm passen.
Deshalb habe ich einen ScrollPane.
Die verschachtelung ist SrollPane -> AnchorPane -> TableView.
Man kann in einer ComboBox auswählen welche Person man sehen will
Wenn man eine Person in der Combobox ausgewählt hat werden die zugehörigen Daten in der Datenbank geleseen
und in das TableView gestellt..
Das ist immer die selbe Routine.
Java:
@FXML
void combobox21Action(ActionEvent event)
{
String x;
String y;
int a;
int b;
int c;
int d;
String z;
x = auswahl21.getSelectionModel().getSelectedItem();
if (freiauswahl21)
{
cursor_ = Cursor.cursor("WAIT");
VitalController.scene3.setCursor(cursor_);
letzteauswahl21 = x;
b = 0;
if (anzeintraegeCombobox > 0)
{
for (a=0; a< anzeintraegeCombobox; a++)
{
y = auswahl21.getItems().get(a);
if (y.equals(x))
{
b = 1;
}
}
}
if (b == 0)
{
auswahl21.getItems().add(x);
}
setAnzeigeText3(29, "");
freiauswahl21 = false;
if (!letzteauswahl21.equals(""))
{
dLesArt = 1;
x = "SELECT * FROM "+Vital.datenbank.dbTabelle+" ORDER BY Nachname, Vorname, Geburtsdatum, Datum, Uhrzeit";
lesenDatenbank(x);
if (Vital.datenbank.dbRet == 0)
{
if (anzeintraege > 0)
{
Vital.datenbank.formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy", Locale.GERMAN);
x = Vital.datenbank.formatter.format(anzgeburtsdatum);
if (!x.equals("01.01.0001"))
{
setAnzeigeText3(29, x);
}
}
}
stringgridAnz = 1;
stringgridYPos = stringgridAnz * 35;
stringgrid.getItems().clear();
stringgridSetYPos();
dLesArt = 2;
Thread lesDataToStringgrid = new Thread(new LesDataToStringgrid());
lesDataToStringgrid.start();
}
Thread bspThread = new Thread(new BspThread());
bspThread.setPriority(1);
bspThread.start();
}
else
{
if (!x.equals(letzteauswahl21))
{
setAuswahlText3(21, letzteauswahl21);
}
}
}
Die LeseRoutine
Java:
@FXML
public void lesenDatenbank(String wert)
{
int a;
int l;
String x;
String z;
if (dLesArt == 1)
{
Vital.datenbank.formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy", Locale.GERMAN);
x = "01.01.0001";
anzgeburtsdatum = LocalDate.parse(x, Vital.datenbank.formatter);
}
Vital.datenbank.dbTabelle = "vital";
Vital.datenbank.dbBefehl = wert;
dDaten = Vital.datenbank.getdbData();
if (Vital.datenbank.dbRet != 0)
{
VitalController.f3VarRout.setAnzeigeText3(22, Vital.datenbank.FehlerAus());
}
else
{
if (anzeintraege > 0)
{
for (a=0; a<anzeintraege; a++)
{
Vital.datenbank.ds1 = dDaten.get(a).getVorname();
Vital.datenbank.ds2 = dDaten.get(a).getNachname();
Vital.datenbank.ds3 = dDaten.get(a).getBemerkung();
Vital.datenbank.dd1 = dDaten.get(a).getGeburtsdatum();
Vital.datenbank.dd2 = dDaten.get(a).getDatum();
Vital.datenbank.dt = dDaten.get(a).getUhrzeit();
Vital.datenbank.di1 = dDaten.get(a).getSystole();
Vital.datenbank.di2 = dDaten.get(a).getDiastole();
Vital.datenbank.di3 = dDaten.get(a).getPuls();
Vital.datenbank.di4 = dDaten.get(a).getSpo2();
Vital.datenbank.di5 = dDaten.get(a).getGroesse();
Vital.datenbank.df1 = dDaten.get(a).getTemperatur();
Vital.datenbank.df2 = dDaten.get(a).getGewicht();
l = Vital.datenbank.ds2.length();
if (l > 0)
{
Vital.datenbank.dbStringToWert();
if (dLesArt == 1)
{
x = Vital.datenbank.dvorname+" "+Vital.datenbank.dnachname;
if (x.equals(letzteauswahl21))
{
anzgeburtsdatum = Vital.datenbank.dgeburtsdatum;
}
}
if (dLesArt == 2)
{
x = Vital.datenbank.dvorname+" "+Vital.datenbank.dnachname;
if (x.equals(letzteauswahl21))
{
eintrag = new Eintrag(Vital.datenbank.ds1, Vital.datenbank.ds2, Vital.datenbank.dd1, Vital.datenbank.dd2, Vital.datenbank.dt, Vital.datenbank.di1, Vital.datenbank.di2, Vital.datenbank.di3, Vital.datenbank.di4, Vital.datenbank.df1, Vital.datenbank.di5, Vital.datenbank.df2, Vital.datenbank.ds3);
stringgrid.getItems().add(eintrag);
stringgridAnz++;
stringgridYPos = stringgridAnz * 35;
stringgridSetYPos();
}
}
}
}
}
}
}
Da ja unterschiedliche Anzahl Daten zu jeder Person da sind, möchte ich natürlich auch das der Scrollbereich entsprechen angepasst wird.
Java:
@FXML
void stringgridSetYPos()
{
double w;
w = stringgridYPos * 1.0;
anchor.setMinHeight(w);
anchor.setMaxHeight(w);
anchor.setPrefHeight(w);
stringgrid.setMinHeight(w);
stringgrid.setMaxHeight(w);
stringgrid.setPrefHeight(w);
w = stringgridYPos * -1.0;
AnchorPane.setBottomAnchor(stringgrid, w);
}
}
Nun zu meinem Problem:
Obwohl die Routinen immer gleich sind,
beim der ersten Auswahl Person in der ComboBox klappt alles
wenn ich dann eine andere Person auswähle wird zwar die Größe des Scrollbereiches richtig gesetzt,
aber es werden keine Daten angezeigt.
Habe schon debugged, am lesen von der Datenbank liegt es nicht, da kommen alle Daten.
Hat jemand eine Ahnung?
Danke und Gruß
Jürgen
.