25. April 2008 

Mit den Jahren werde ich immer fauler. Inzwischen habe ich eine Basis-Struktur in den Tabellen, die würde ich mir gerne durch eine 4D Methode anlegen lassen. Oder in Kundendatenbanken brauche ich einige meiner Steuertabellen. Es ist immer das gleiche Gedöns. Das muß sich doch automatisieren lassen. Das erste, eine Basis-Datenstruktur, kann 4D Insider nicht und für die zweite Aufgabe, Tabellen kopieren, ist er mir zu schnell. Aber 4D Pack kennt den Befehl

UmgebungAP Add table and fields

Da der Befehl nicht so wollte wie er sollte*, habe ich mir eine Struct_Syncro-Anwendung gebaut. Inzwischen weiß ich, daß es auch hier auf die Version des 4D Pack ankommt. Aktuell ist die 2004.7r3 und die gibt es bei 4D US einzeln.

Struct_Syncro fährt hoch und startet sofort in den Editor. Es gibt in der Datenbank nur die Tabelle 1, ohne die 4D es nicht tut. Das ist im Bild dargestellt.

Die erste Aufgabe, eine neue Tabelle in der Datenbank zu erzeugen, klappt. (1) Tabelle benennen und einen Tabellen-Code eingeben, (2) Basis-Daten anlegen, (3) ggf. abändern und (4) Tabelle erzeugen.

klappt

Der Redraw im Struktur-Fenster klappt nicht stolperfrei. (5) die neue Tabelle ist nicht zu sehen. (6) im Contextmenü heißt sie Tabelle2. (7) ist sie als Rahmen zu sehen. (8) sobald man sie anfaßt auch die Felder und (9) sobald sie bewegt wird bekommt sie den richtigen Namen und eine passende Größe. Nicht schlecht und viel besser als ganz von Hand!

erzeugt

Der nächste Schritt: ich bereite die Struktur der Tabelle als Text vor und importiere diesen in die Steuertabellen wie dargestellt und erzeuge wie oben eine neue Tabelle. Mit der richtigen Version des 4D Pack klappt es auch, wenn Bildfelder angelegt werden sollen.

Import export

Der Export aus einer vorhandenen Datenbank ist ebenfalls eingebaut. Button klicken, Tabelle auswählen, Name und Speicherort angeben, fertig.

Import einer exportierten Tabellen-Struktur hat noch einen Nutzen für mich: ich kann die Felder neu sortieren bevor ich die Tabelle anlegen lasse. Solange die Namen gleich bleiben, interpretiert 4D über Copy&Paste die Namen statt Nummer der Tabelle und Nummer der Feldes und tokenisiert die Methoden korrekt.

Alles in einer Methode und das ist die Struct_Syncro. Das Formular muß extra kopiert werden, dito die Formular-Methode und die tatsächlich verwendete Tabelle und Layoutname sind in der Struct_Syncro anzupassen. Es gibt noch eine zweite Methode Line_2Array, die aus der mit RECEIVE PACKET eingelesenen Zeile ein Array füllt. Das war es. Viel Vergnügen!

syncro

* Ohne die Mithilfe der 4D-Gemeinschaft, hätte ich die Antwort "Warum klappt das nicht" länger suchen müssen. Danke! Trotzdem will 4D Pack auch in Version 2004.7r3 nicht immer, wenn Bildfelder Bestandteil der Tabelle sind. Workaround: Bildfeld in Typ Alpha ändern, Tabelle anlegen und dann den Typ manuell auf Bildfeld stellen.

Ich habe das Syncro ohne h nicht erfunden.

Sie möchten den Sourcecode haben? Kein Problem! Überweisen Sie, was es Ihnen wert ist auf mein PayPal-Konto: info@mettre.de. Was ist denn üblich?

4D Themen: Berichte in Arbeit