Vier D HomeArchivSeminareNachrichten - Twitter4D Expertise
Antworten auf Ihre Fragen •
Datenbank-Pflege •
4D Coaching •
OpenDDDD •
Termine •
4D Expert
V11/V12-Service • Konzepte •
Alternativen •
Meine Apps
Gebrauchtes Mac + iPhone: zu verkaufenFinden Geo-Themen + Projekte GoogleMap-Integration • GeoDDDD • Database Publishing • Database PhotographyVerschiedenes |
10. Jan. 2013 14. Januar 2013The SystemTables-component as of today supports external data-sources. Screenshot, Download SQL datatypes: numbers into namesIch habe es mir schon ewig gewünscht, nicht alle Daten in einem Datenfile (*.4DD) haben zu müssen. Das wäre sehr praktisch um Einstellungsdaten, Lookup-Tabellen, Archive und Dokumente/Bilder auszulagern. Das soll jetzt mit V12 und Zwischendurch-Zugriff auf andere 4D Datenbanken (*.4DB) möglich sein. Einschränkung: nur via SQL. Bisher habe ich benötigte Daten einer Komponente in Blobs gepackt und in den Resources-Ordner ablegt. Ich möchte umstellen auf externe Daten. Dann ist alles schön verpackt und es sind weder Ordner-Struktur noch Benamung zu erfindenden. Die Datenstruktur ändert sich während der Entwicklung vom theoretischen ins praktische Modell. Also pflege ich die Datenstruktur in 4D. Nach einer Änderung an der Struktur nutze ich System Tables, um die Struktur in der externen Datenbank mit SQL-Befehlen nachzubauen. Naheliegend, oder? Den Weg beschreibt Charlie Vass in TN 10-26_External_DB. Meine Lösung will ich wie dort vorgeschlagen organisieren: die externe Datenbank ist eine Kopie der internen. Schon beim Studieren der TN stolperte ich über viele Fehler, über Ungenauigkeiten und ein Durcheinander der Begriffe. Auch die hat niemand Korrektur gelesen. Die in der TechNote vorgestellte Theorie in ein funktionierendes Programm umzusetzen ist stolperig, hat scheint's niemand vor der Veröffentlichung getestet. System Tables liefert in Ergo: selber rausfindenNicht daß mich reengineering ausbremste … doch sobald 4D ausbaut, fange ich von vorne an. Muß nicht sein!
Praktisch, meine Komponente System_Tables hilft mir. Spalte 3 Nummer = Name ?Hier das vorläufige Ergebnis: nicht auf Vollständigkeit, nur auf Praktikabilität bedacht.
Im Bild rechts meine textHelp-Funktion, die mir den SQL-Datentyp liefert. Über
Die '' sind zwei '. Alle Integer ändere ich in Longinteger. Fazit: SQL ist unkomfortabel: das gilt grundsätzlich und im 4D Methoden-Editor ebenso. Ja, ich weiß, manche SQL-Ausdrücke sind sehr leistungsfähig. Das ist Regex auch und ebenfalls ein Alptraum. * das wird niemandem auffallen, der die Arrays direkt anspricht, statt über eine Listbox. Ja, ja, Korrekturlesen ist aufwendig ↵ ** hier muß ich die Doku loben: ↵ Der neue Befehl SQL EXPORT DATABASE exportiert alle Datensätze von allen Tabellen der Datenbank in SQL Format. In SQL lautet diese globale Exportoperation "Dump". SQL datatypes: numbers into namesFor long time I've been whishing not to keep all data in one datafile (*.4DD). This would be nice to keep preferences, lookup-tables, archives and documents/pictures at a separate place. Now starting with V12 an ad-hoc access to other 4D databases (*.4DB) is possible. Constrain: only via SQL. Up to now I save component-data as blobs into the Resources-folder. I'd like to change that and store the data into an external datafile. That would package nicely and I save myself developing a folder-structure and naming-system. The data-modell usually changes from theory to practical while developing. So I'll update the database-structure inside 4D. Any change will trigger via the System Tables-commandset. That way, I could keep the external database in sync utilizing 4Ds SQL. Obvious, isn't it? Charlie Vass describes how in TN 10-26_External_DB. My solution will follow his example: the external database will be a copy the internal. While studying the TN I stumbled across errors, impreciseness and a mess of naming. Nobody proofread that TN?
Transfering the theory presented in the TN into a working system is stumble-some, too. Nobody tested before publishing! System tables delivers as part of Ergo: help yourselfReengineering doesn't keep me off … but as soon as 4D updates, I need to check. I don't need that, do I?
My component System_Tables comes to the rescue. Column 3 Number = Name ?Preliminary results, not aiming at completeness but at practicability.
The picture on the right shows my textHelp-function. TextHelp delivers the SQL-datatype name depending on the given datatype-number. Couldn't find about Here it is nice tabulated:
That '' are two '. All Integer are converted into Longinteger, my decision. Resumee: SQL is uncomfortable: in principal as well as as part of 4D method-editor. Yes I know, some SQL-expressions are very powerful. Same is true for Regex. Both are a nightmare! * nobody accessing the arrays by code will find out. Better use a listbox and see. Yes, proofreading is costly ↵ ** my respect for the docu in this case: ↵ The SQL EXPORT DATABASE command exports in SQL format all the records of all the tables in the database. In SQL, this global export operation is called "Dump". |