Page 1 of 1

--Check Constraints aus der Datenbank berücksichtigen

PostPosted: Wed Mar 31, 2010 3:59 pm
by Development@SIB


Dieser Artikel ist veraltet - Bitte verwenden Sie unser neues System

https://doc.sibvisions.com





Neben der Berücksichtigung von Default Werten ist die Einschränkung auf "erlaubte Werte" ein weiterer Pluspunkt von JVx.

Die "erlaubten Werte", für Spalten, werden in der Datenbank üblicherweise mit Check Constraints definiert. Diese werden von JVx ausgewertet und als sogenannte erlaubte Werte übernommen.

Die erlaubten Werte wirken sich im User Interface unmittelbar aus und zwar bekommt der Anwender nur die erlaubten Werte in Form von Choice Cell Editoren angeboten.


Anwendungsbeispiel

Aufbauend auf dem Beispiel für Default Werte, definieren wir folgende Check Constraints (Oracle Syntax):

Code: Select all
alter table USERS
  add constraint USER_ACTIVE_CHECK
  check (active IN ('Y', 'N'));

alter table USERS
  add constraint USER_CHANGE_PASSWORD_CHECK
  check (CHANGE_PASSWORD IN ('Y', 'N'));

Folglich dürfen die Felder "ACTIVE" und "CHANGE_PASSWORD" nur "Y" oder "N" enthalten.

Damit im User Interface auch der korrekte Choice Cell Editor verwendet wird, muss dieser natürlich erst bekannt gegeben werden. Das geschieht global und zwar durch den Aufruf von:

Code: Select all
UIChoiceCellEditor.addDefaultChoiceCellEditor(editor);


Für die Werte "Y" und "N" wurde bereits ein Choice Cell Editor vom ApplicationUtil definiert.

Um die Auflösung von Check Constraints zu ignorieren, können folgende Methoden verwendet werden:

Code: Select all
//per instance
users.setAllowedValues(false);

//for all instances (static)
DBStorage.setDefaultAllowedValues(false);


Wenn in der Datenbank keine Check Constraints verwendet werden, können die erlaubten Werte auch über das API gesetzt werden:

Code: Select all
users.open();

//sets allowed/possible values
users.getMetaData().getColumnMetaData("ACTIVE").setAllowedValues(new Object[] {"Y", "N"});