Datum Check dag moet meer dan 3 zijn en de maand feb minder dan 30

Status
Niet open voor verdere reacties.

brianw

Nieuwe gebruiker
Lid geworden
11 jul 2013
Berichten
1
hallo, ik heb een applicatie gemaakt maar ik begrijp niet hoe ik ervoor kan zorgen dat
bij dag: minimaal 3 moet worden ingevuld.
En bij maand februarie maximaal 30
hoe kan ik dit doen?

private void OpslaanButtonActionPerformed(java.awt.event.ActionEvent evt) {
try {
String patientNr = PatientNummerField.getText();
String voorNaam = VoornaamField.getText();
String achterNaam = AchternaamField.getText();
String woonplaats = WoonplaatsField.getText();
String geboorteDatum = GeboorteDatumField.getText();


// geboorteDatum = Integer.toString(dagSet) + "/" + Integer.toString(maandSet) + "/" + Integer.toString(jaarSet);

if ("".equals(patientNr)) {
Label_patient.setText(" er dient iets ingevuld te worden");
}
else if (Label_patient.getText().length() >= 8) {
Label_patient.setText(" er dient iets ingevuld te worden met minder dan 8 karakters");
}

// if (isValidDate(geboorteDatum) == true) {

PreparedStatement naamAdd = WielrennerFrame.conn.prepareStatement("INSERT INTO patient (patientnummer, voornaam, achternaam, woonplaats, geboortedatum) VALUES ( ?,?,?,?,? )");
naamAdd.setString(1, patientNr );
naamAdd.setString(2, voorNaam);
naamAdd.setString(3, achterNaam);
naamAdd.setString(4, woonplaats);
//naamAdd.setDate(5, toSqlDate(jaarSet, maandSet, dagSet));
naamAdd.setDate(5, toSqlDate(dagSet, maandSet, jaarSet));


naamAdd.executeUpdate();
System.out.println(geboorteDatum);
// }else {
// JOptionPane.showMessageDialog(null, "Niet bestaande datum");
// }
} catch (com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException e) {
JOptionPane.showMessageDialog(null, "Deze patientNummer bestaat al in de database");
}
catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Database fout" + e.getMessage());
}
}



private java.sql.Date toSqlDate(int jaar, int maand, int dag) {
java.util.Calendar cal = java.util.Calendar.getInstance();

//Clear all fields
cal.clear();

cal.set(java.util.Calendar.YEAR, jaar);
cal.set(java.util.Calendar.MONTH, maand - 1); //start bij 0, januari is dus maand 0
cal.set(java.util.Calendar.DAY_OF_MONTH, dag);

//Create instance of java.sql.Date
java.sql.Date sqlDate = new java.sql.Date(cal.getTimeInMillis());

return sqlDate;

}
 
Hey,

Ik denk dat je jezelf eerst de vraag moet stellen of je dit wilt checken als de gebruiker typt of nadat de gebruiker op een submit-knop of iets dergelijks heeft gedrukt.

Als je tijdens het typen wilt controleren kan je het document van de (ik denk dat je TextFields gebruikt) JTextField opvragen en daar de controle op doen.

http://docs.oracle.com/javase/7/docs/api/javax/swing/text/JTextComponent.html#getDocument()
http://docs.oracle.com/javase/6/doc...a.lang.String, javax.swing.text.AttributeSet) (deze methode moet overschreven worden)

http://stackoverflow.com/questions/11093326/restricting-jtextfield-input-to-integers (voorbeeld voor een check met integers).

Je zou natuurlijk ook een keylistener aan de textfield kunnen toevoegen en elke keer een check doen na het indrukken van een toets. Ik denk echter dat de getDocument methode netter is.

Wil je het na de tijd controleren dan vraag je de text op van het TextField en check je deze text met een if-statement.

Hieronder heb ik even een klein voorbeeldje voor je uitgetypt (kan syntax-fouten bevatten, want ik heb de code niet gecompiled).

Code:
String ERROR_MESSAGE = "U moet een getal groter is dan 3 invoeren.";
JTextField field = new ...
String text = field.getText();
int num = 0;
try {
    if(checkNum(Integer.parseInt(text))) {
         //juiste invoer
    else
         field.setText(ERROR_MESSAGE);
} catch(Exception e) {
    //er is iets verkeerd ingevuld. 
    field.setText(ERROR_MESSAGE).
}

...

//ik splits deze methode, omdat in mijn optiek een methode één doel moet hebben. In dit geval is dat een check en niet het printen van error messages et cetera. Dit houdt je code overzichtelijk.
public boolean checkNum(int num) {
     if(num >= 3) 
         return true;
     else
         return false;
}

Met vriendelijke groet,
NewbiProgr
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan