Die Funktion Compact data file komprimiert die Datendatei, definiert im Parameter DatenPfad, die der Strukturdatei, definiert im Parameter StrukturPfad, zugeordnet ist. Weitere Informationen dazu finden Sie im Handbuch 4D Designmodus.
Um die Kontinuität der Datenbankoperationen zu gewährleisten, ersetzt die neue komprimierte Datendatei automatisch die Originaldatei. Die Originaldatei wird zur Sicherheit nicht verändert und in einen speziellen Ordner mit Namen “Ersetzte Dateien (Komprimierung)” JJJJ-MM-DD HH-MM-SS” abgelegt, wobei JJJJ-MM-DD HH-MM-SS Datum und Zeit des Backup angeben. Zum Beispiel: “Ersetzte Dateien (Komprimierung) 2007-09-27 15-20-35”.
Die Funktion gibt den vollständigen Dateinamen des Ordners zurück, der aktuell zum Speichern der Original Datendatei angelegt wird. Sie lässt sich nur in 4D im lokalen Modus oder in 4D Server (Serverprozeduren) ausführen. Die zu komprimierende Datendatei muss zur Strukturdatei passen, die im Parameter StrukturPfad definiert ist. Außerdem darf die Datendatei beim Ausführen der Funktion nicht geöffnet sein. Sonst wird ein Fehler erzeugt.
Tritt während der Komprimierung ein Fehler auf, bleiben die Originaldateien am ursprünglichen Ort bestehen. Ist der Datendatei eine Indexdatei (.4DIndx) zugeordnet, wird diese auch komprimiert. Ihre Originaldatei wird, wie die Datendatei, gesichert. Die neue komprimierte Version ersetzt die bisherige Datei.
- Im Parameter StrukturPfad übergeben Sie den vollständigen Pfadnamen der Strukturdatei, die der Datendatei, die Sie komprimieren wollen, zugeordnet ist. Diese Information ist für die Komprimierung erforderlich, der Pfad muss in der Schreibweise des Betriebssystems sein. Sie können auch einen leeren String übergeben; in diesem Fall erscheint der Standard-Öffnen Dialog, wo Sie die gewünschte Strukturdatei wählen können.
- Im Parameter DatenPfad können Sie einen leeren String, einen Dateinamen oder einen kompletten Pfadnamen in der Schreibweise des Betriebssystems angeben. Übergeben Sie einen leeren String; erscheint der Standard-Öffnen Dialog, wo der Benutzer die gewünschte Datendatei wählen kann. Sie muss zur Strukturdatei passen, die im Parameter StrukturPfad übergeben wurde. Übergeben Sie nur den Namen der Datendatei, sucht 4D danach auf derselben Ebene wie die Strukturdatei.
- Im optionalen Parameter ArchivOrdner geben Sie die Position des Ordners “Ersetzte Dateien (Komprimieren) DatumZeit” an, der für die Originalversion der Datendatei sowie evtl. Indexdateien vorgesehen ist. Der Befehl gibt den vollständigen Pfadnamen des aktuell erstellten Ordners an.
- Geben Sie diesen Parameter nicht an, werden die Originaldateien automatisch in einen Ordner “Ersetzte Dateien (Komprimierung) DatumZeit” gelegt, der neben der Strukturdatei angelegt wird.
- Übergeben Sie einen leeren String, erscheint der Standard-Öffnen Dialog, wo der Benutzer die Position des anzulegenden Ordners angeben kann.
- Übergeben Sie einen Pfadnamen (in der Schreibweise des Betriebssystems), erstellt der Befehl den Ordner “Ersetzte Dateien (Komprimierung)” DatumZeit” an dieser Position.
- Mit dem optionalen Parameter Option können Sie verschiedene Einstellungen für die Komprimierung setzen. Dafür verwenden Sie die folgenden Konstanten unter dem Thema Datendatei Wartung. Sie können auch mehrere Optionen miteinander kombinieren:
Konstante |
Typ |
Wert |
Kommentar |
Compact address table |
Lange Ganzzahl |
131072 |
Neuschreiben der Adresstabellen der Datensätze erzwingen (verlangsamt die Komprimierung). Beachten Sie, dass in diesem Fall die Nummern der Datensätze neu geschrieben werden. Übergeben Sie nur diese Option, aktiviert 4D automatisch die Option ’Datensätze aktualisieren’. |
Create process |
Lange Ganzzahl |
32768 |
Ist diese Option übergeben, erfolgt das Komprimieren asynchron und Sie müssen die Ergebnisse über die Callback Methode verwalten. 4D zeigt keinen Ablaufbalken an (das ist bei Verwenden der Callback Methode möglich). Die Systemvariable OK wird auf 1 gesetzt, wenn der Prozess korrekt gestartet wurde, in allen anderen Fällen auf 0. Ist diese Option nicht übergeben, wird die Systemvariable OK auf 1 gesetzt, wenn die Komprimierung korrekt ausgeführt wurde, sonst auf 0. |
Do not create log file |
Lange Ganzzahl |
16384 |
Dieser Befehl erstellt generell ein Logbuch im XML Format. Mit dieser Option wird kein Logbuch angelegt. |
Timestamp log file name |
Lange Ganzzahl |
262144 |
Ist diese Option übergeben, zeigt der Name des generierten Logbuchs Datum und Uhrzeit seiner Erstellung und ersetzt dann folglich nicht das vorige Logbuch. Standardmäßig hat der Name eines Logbuchs keinen Zeitstempel und das vorige Logbuch wird überschrieben. |
Update records |
Lange Ganzzahl |
65536 |
Neuschreiben aller Datensätze gemäß der aktuellen Definition der Felder in der Struktur erzwingen. |
- Mit dem Parameter Methode setzen Sie eine Callback Methode, die während der Komprimierung regelmäßig aufgerufen wird, wenn die Konstante Create process übergeben wurde. Andernfalls wird die Callback Methode nie aufgerufen. Weitere Informationen dazu finden Sie unter dem Befehl VERIFY DATA FILE.
Existiert die Callback Methode nicht in der Datenbank, wird ein Fehler generiert und die Systemvariable OK wird auf 0 (Null) gesetzt.
Die Funktion Compact data file erstellt standardmäßig ein Logbuch im XML Format. (Haben Sie die Option Do not Create log file übergeben, siehe Parameter Option.) Das Logbuch liegt im Ordner Logs der aktuellen Datenbank und übernimmt den Namen der Strukturdatei. Lautet diese z.B. "myDB.4dd", hat das Logbuch den Namen "myDB_Compact_Log.xml".
Haben Sie die Option Timestamp log file name übergeben, zeigt der Name des Logbuchs auch Datum und Uhrzeit der Erstellung im Format "YYYY-MM-DD HH-MM-SS", der Name im obigen Beispiel lautet dann: “myDB_Compact_Log_2015-09-27 15-20-35.xml”. Das bedeutet, dass ein neues Logbuch nicht das vorige ersetzt und dann nicht benötigte Dateien per Hand entfernt werden müssen.
Unabhängig von der gewählten Option wird der Pfad des generierten Logbuchs nach Ausführung des Befehls in der Systemvariablen Document zurückgegeben.
Folgendes Beispiel (Windows) führt die Komprimierung einer Datendatei aus:
$structFile:=Structure file
$dataFile:="C:\Databases\Invoices\January\Invoices.4dd"
$origFile:="C:\Databases\Invoices\Archives\January\"
$archFolder:=Compact data file($structFile;$dataFile;$origFile;0)
Bei korrekt ausgeführter Komprimierung wird die Systemvariable OK auf 1 gesetzt; sonst auf 0 (Null). Wurde ein Logbuch generiert, wird sein kompletter Pfadname in der Systemvariable Document zurückgegeben.