Hallo zusammen,
bei meiner App liest eine Abfrage Werte aus der Datenbank, wenn der Wert nicht vorhanden ist kommt eine Fehlermeldung in Form eines Popups.
Wenn das Feld leer ist wird das Feld Rot umrandet um zu zeigen daß da was eingegeben werden muß.
Ist der Wert vorhanden kann der User auf dem Button klicken und der Loginvorgang startet.
Was ich gerne hätte, aber ich nicht ganz so recht weiß wie ich das anpacken soll, wäre daß wenn der Wert vorhanden ist die App automatisch den nächsten Controller lädt ohne daß der User auf dem Button drücken muß.
hier einmal der LoginController:
[CODE lang="java" title="LoginController.java"]public class LoginController {
@FXML
public TextField usernummerFeld;
@FXML
public Button anmeldeButton;
Stage dialogStage = new Stage();
Scene scene;
@FXML public void handleLoginButtonAction(ActionEvent actionEvent) throws IOException, SQLException {
try {
if (usernummerFeld.getText().trim().isEmpty()) {
usernummerFeld.setStyle("-fx-text-box-border: #FF0000; -fx-focus-color: #FF0000;");
usernummerFeld.requestFocus();
} else {
String eingetrageneUsernummer = usernummerFeld.getText();
Mitarbeiter ma = firma.urlaubsmanager.model.Datenbank.getInstance().checkMitarbeiter(eingetrageneUsernummer);
if (ma.getSerienNummer() == null) {
alertBox("Es gibt keinen Mitarbeiter mit dieser Nummer!", null, "Login Fehlerhaft!");
usernummerFeld.setStyle("-fx-text-box-border: #FF0000; -fx-focus-color: #FF0000;");
usernummerFeld.setText("");
usernummerFeld.requestFocus();
} else {
new MitarbeiterSessionController(
ma.getSerienNummer(),
(int) ma.getPersoNummer(),
ma.getNameVorname(),
ma.getStrasse(),
ma.getPLZOrt(),
(int) ma.getAnspruch(),
(int) ma.getVerplant(),
(int) ma.getUebrig(),
ma.getUsername()
);
Node node = (Node) actionEvent.getSource();
dialogStage = (Stage) node.getScene().getWindow();
dialogStage.close();
scene = new Scene(FXMLLoader.load(getClass().getResource("/app.fxml")), 447, 700);
dialogStage.setScene(scene);
dialogStage.show();
}
}
} catch (NumberFormatException | NullPointerException e) {
}
}
public void handleLogOutButtonAction (ActionEvent actionEvent) throws IOException, SQLException {
Platform.exit();
}
public static void alertBox (String infoMessage, String headerText, String title){
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setContentText(infoMessage);
alert.setTitle(title);
alert.setHeaderText(headerText);
alert.showAndWait();
}
}[/CODE]
und hier die Klasse für die Abfrage:
[CODE lang="java" title="Datenbank.java"]public class Datenbank {
public static final String CONNECTION_STRING = "jdbc
ostgresql://XXX";
private Connection conn;
private static final Datenbank instance = new Datenbank();
private Datenbank() {
}
public static Datenbank getInstance() {
return instance;
}
public boolean open() throws ClassNotFoundException {
try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(CONNECTION_STRING);
return true;
} catch (SQLException e) {
System.out.println("Couldn't connect to database: " + e.getMessage());
return false;
}
}
public void close() {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
System.out.println("Couldn't close connection: " + e.getMessage());
}
}
public Mitarbeiter checkMitarbeiter(String tsseri) throws SQLException {
PreparedStatement preparedStatement = conn.prepareStatement("select max(zburts),min(zburts),sum(zburta),pspenr,psnavo,psnafa,psstra,pszplz,psort0,tsseri from vezeit join vepsta on zbpenr=pspenr and zbfirm=psfirm join katrsp on tspenr=zbpenr and tsfirm=zbfirm where psfirm='1' and zbdath='20'"
+ "and zbdatu between '210101' and '211231' and tsseri=? group by pspenr,psnavo,psnafa,psstra,pszplz,psort0,tsseri");
preparedStatement.setString(1, tsseri);
ResultSet results = preparedStatement.executeQuery();
Mitarbeiter ma = new Mitarbeiter();
if (results.next()) {
ma.setSerienNummer(results.getString("tsseri").trim());
ma.setPersoNummer(results.getInt("pspenr"));
ma.setNameVorname(results.getString("psnavo").trim() + " " + " " + results.getString("psnafa").trim());
ma.setStrasse(results.getString("psstra"));
ma.setPLZOrt(results.getString("pszplz").trim() + " " + " " + results.getString("psort0").trim());
ma.setAnspruch(results.getInt("max"));
ma.setVerplant(results.getInt("sum"));
ma.setUebrig(results.getInt("min"));
}
return ma;
}
}[/CODE]
Vielen Dank
bei meiner App liest eine Abfrage Werte aus der Datenbank, wenn der Wert nicht vorhanden ist kommt eine Fehlermeldung in Form eines Popups.
Wenn das Feld leer ist wird das Feld Rot umrandet um zu zeigen daß da was eingegeben werden muß.
Ist der Wert vorhanden kann der User auf dem Button klicken und der Loginvorgang startet.
Was ich gerne hätte, aber ich nicht ganz so recht weiß wie ich das anpacken soll, wäre daß wenn der Wert vorhanden ist die App automatisch den nächsten Controller lädt ohne daß der User auf dem Button drücken muß.
hier einmal der LoginController:
[CODE lang="java" title="LoginController.java"]public class LoginController {
@FXML
public TextField usernummerFeld;
@FXML
public Button anmeldeButton;
Stage dialogStage = new Stage();
Scene scene;
@FXML public void handleLoginButtonAction(ActionEvent actionEvent) throws IOException, SQLException {
try {
if (usernummerFeld.getText().trim().isEmpty()) {
usernummerFeld.setStyle("-fx-text-box-border: #FF0000; -fx-focus-color: #FF0000;");
usernummerFeld.requestFocus();
} else {
String eingetrageneUsernummer = usernummerFeld.getText();
Mitarbeiter ma = firma.urlaubsmanager.model.Datenbank.getInstance().checkMitarbeiter(eingetrageneUsernummer);
if (ma.getSerienNummer() == null) {
alertBox("Es gibt keinen Mitarbeiter mit dieser Nummer!", null, "Login Fehlerhaft!");
usernummerFeld.setStyle("-fx-text-box-border: #FF0000; -fx-focus-color: #FF0000;");
usernummerFeld.setText("");
usernummerFeld.requestFocus();
} else {
new MitarbeiterSessionController(
ma.getSerienNummer(),
(int) ma.getPersoNummer(),
ma.getNameVorname(),
ma.getStrasse(),
ma.getPLZOrt(),
(int) ma.getAnspruch(),
(int) ma.getVerplant(),
(int) ma.getUebrig(),
ma.getUsername()
);
Node node = (Node) actionEvent.getSource();
dialogStage = (Stage) node.getScene().getWindow();
dialogStage.close();
scene = new Scene(FXMLLoader.load(getClass().getResource("/app.fxml")), 447, 700);
dialogStage.setScene(scene);
dialogStage.show();
}
}
} catch (NumberFormatException | NullPointerException e) {
}
}
public void handleLogOutButtonAction (ActionEvent actionEvent) throws IOException, SQLException {
Platform.exit();
}
public static void alertBox (String infoMessage, String headerText, String title){
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setContentText(infoMessage);
alert.setTitle(title);
alert.setHeaderText(headerText);
alert.showAndWait();
}
}[/CODE]
und hier die Klasse für die Abfrage:
[CODE lang="java" title="Datenbank.java"]public class Datenbank {
public static final String CONNECTION_STRING = "jdbc
private Connection conn;
private static final Datenbank instance = new Datenbank();
private Datenbank() {
}
public static Datenbank getInstance() {
return instance;
}
public boolean open() throws ClassNotFoundException {
try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(CONNECTION_STRING);
return true;
} catch (SQLException e) {
System.out.println("Couldn't connect to database: " + e.getMessage());
return false;
}
}
public void close() {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
System.out.println("Couldn't close connection: " + e.getMessage());
}
}
public Mitarbeiter checkMitarbeiter(String tsseri) throws SQLException {
PreparedStatement preparedStatement = conn.prepareStatement("select max(zburts),min(zburts),sum(zburta),pspenr,psnavo,psnafa,psstra,pszplz,psort0,tsseri from vezeit join vepsta on zbpenr=pspenr and zbfirm=psfirm join katrsp on tspenr=zbpenr and tsfirm=zbfirm where psfirm='1' and zbdath='20'"
+ "and zbdatu between '210101' and '211231' and tsseri=? group by pspenr,psnavo,psnafa,psstra,pszplz,psort0,tsseri");
preparedStatement.setString(1, tsseri);
ResultSet results = preparedStatement.executeQuery();
Mitarbeiter ma = new Mitarbeiter();
if (results.next()) {
ma.setSerienNummer(results.getString("tsseri").trim());
ma.setPersoNummer(results.getInt("pspenr"));
ma.setNameVorname(results.getString("psnavo").trim() + " " + " " + results.getString("psnafa").trim());
ma.setStrasse(results.getString("psstra"));
ma.setPLZOrt(results.getString("pszplz").trim() + " " + " " + results.getString("psort0").trim());
ma.setAnspruch(results.getInt("max"));
ma.setVerplant(results.getInt("sum"));
ma.setUebrig(results.getInt("min"));
}
return ma;
}
}[/CODE]
Vielen Dank