Im Formular Kundenaufträge werden in den Registerkarten Arbeitsauftragsteile und Arbeitskraefte die Werte der anderen Tabellenspalten mit den Werten aus der Datenbank in Abhängigkeit von der Auswahl in der entsprechenden TComboBox in der ersten Spalte gesetzt.
Hierzu wird in der TComboBox bei einer Änderung der Auswahl der Befehl CopyValue ausgeführt. Dieser wird in den Eigenschaften ItemStateChangedMakro und ItemStateChangedMakroParameters definiert.
Dieser Befehl wird durch die Klasse CopyValue umgesetzt, welche das Interface SystemCommand implementiert:
public class CopyValue implements SystemCommand { ... public Object action(Object[] args, Macro macro) { try { String tableName = (String) args[0]; String columnName = (String) args[1]; String filteredColumnName = (String) args[2]; String filteredBeanName = (String) args[3]; String targetTableElementName = (String) args[4]; String targetColumnName = (String) args[5]; SWindow window = EvaUtils.getActiveSWindow(); ControlledBean filteredBean = (ControlledBean) window .getObject(filteredBeanName); STableElement targetTableElement = (STableElement) window .getObject(targetTableElementName); if (filteredBean != null) { String sql = "SELECT" + columnName + " FROM " + tableName + " WHERE " + filteredColumnName + " = " + filteredBean.getControlledValue().toString(); QueryDescriptor queryDescriptor = DBUtils.getQueryDescriptor( sql, false); HSRecordSet recordSet = new HSRecordSet(queryDescriptor); double result = 0; if (recordSet.next()) { result = recordSet.getObject(1) != null ? ((Number) recordSet .getObject(1)).doubleValue() : 0; } targetTableElement.updateObject(new Double(result), targetColumnName); targetTableElement.refresh(); } } catch (Exception e) { e.printStackTrace(); } return null; } }
Bei Arbeitsauftragsteile wird der Wert des nicht sichtbaren SFormattedField SV_2 gesetzt, welches als Filter für das STableElement Arbeitsauftragsteile fungiert.
Bei Arbeitskraefte wird der Wert des nicht sichtbaren SFormattedField SV_1 gesetzt, welches als Filter für das STableElement Arbeitsauftragskraefte fungiert.
Diese dienen jeweils als TableSource für die SScrollTables in den Registerkarten. Jetzt werden die anderen Spalten mit den Werten aus der Datenbank aktualisiert.