Der Befehl VERIFY DATA FILE prüft die Struktur der Objekte in der 4D Datendatei, definiert durch die Parameter StrukturPfad und DatenPfad.
Hinweis: Weitere Informationen dazu finden Sie im Abschnitt Beschreibung der 4D Dateien des Handbuchs 4D Designmodus.
- StrukturPfad bestimmt die Strukturdatei (kompiliert oder nicht), die der zu prüfenden Datendatei zugeordnet ist. Das kann die offene Strukturdatei oder jede andere Strukturdatei sein. Sie müssen den vollständigen Pfadnamen in der Schreibweise des Betriebssystems angeben. Sie können auch einen leeren String übergeben. Dann erscheint der Standard Öffnen-Dialog, in dem der Benutzer die entsprechende Strukturdatei auswählen kann.
- DatenPfad bestimmt die 4D Datendatei (.4DD). Sie muss zur Strukturdatei passen, die im Parameter Strukturdatei definiert wurde.
Achtung: Sie können die aktuelle Strukturdatei bestimmen, die Datendatei muss jedoch nicht die aktuelle (offene) Datei sein. Mit dem Befehl VERIFY CURRENT DATA FILE können Sie prüfen, ob die Datendatei offen ist. Versuchen Sie, die aktuelle Datendatei mit VERIFY DATA FILE zu prüfen, wird ein Fehler erzeugt.
Die festgelegte Datendatei wird im Nur-Lesen Modus geöffnet. Stellen Sie sicher, dass keine Anwendung im Schreibmodus auf diese Datei zugreift, denn das kann die Ergebnisse der Prüfung beeinträchtigen.
Im Parameter DatenPfad können Sie einen leeren String, einen Dateinamen oder einen kompletten Pfadnamen in der Schreibweise des Betriebssystems übergeben. Bei einem leeren String erscheint der Standard Öffnen-Dialog, so dass der Benutzer die entsprechende Datei auswählen kann. Beachten Sie, dass Sie dann nicht die aktuelle Datendatei auswählen können. Übergeben Sie nur den Namen einer Datendatei, sucht 4D danach auf derselben Ebene wie die festgelegte Strukturdatei.
- Im Parameter Objekte definieren Sie, welche Objekttypen geprüft werden sollen. Es gibt zwei Typen: Datensätze und Indizes. Sie können folgende Konstanten unter dem Thema Datendatei Wartung verwenden:
Konstante |
Typ |
Wert |
Kommentar |
Verify all |
Lange Ganzzahl |
16 |
|
Verify indexes |
Lange Ganzzahl |
8 |
Diese Option prüft die physikalische Konsistenz der Indizes, ohne Verknüpfung zu den Daten. Sie zeigt ungültige Verknüpfungen an, kann jedoch keine doppelten Verknüpfungen ausfindig machen (zwei Indizes zeigen auf den gleichen Datensatz). Diese Art Fehler lässt sich nur mit der Option Verify all ausfindig machen. |
Verify records |
Lange Ganzzahl |
4 |
|
Um Datensätze und Indizes zu prüfen, übergeben Sie die Summe aus Verify Records+Verify Indexes. Mit dem Wert 0 (Null) erhalten Sie das gleiche Ergebnis. Die Option Verify All führt eine vollständige interne Überprüfung aus (Datensätze + Indizes). Diese Überprüfung ist kompatibel mit dem Erstellen eines Prüfberichts. - Im Parameter Optionen setzen Sie Optionen zum Überprüfen. Unter dem Thema Datendatei Wartung gibt es folgende Optionen.
Konstante |
Typ |
Wert |
Kommentar |
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. |
Der Befehl VERIFY DATA FILE legt generell einen Prüfbericht im XML-Format an (siehe am Ende der Beschreibung). Übergeben Sie diese Option, wird kein Prüfbericht angelegt. Um den Prüfbericht anzulegen, übergeben Sie 0 (Null) in Optionen. - Mit dem Parameter Methode setzen Sie eine Callback Methode, die während der Überprüfung regelmäßig aufgerufen wird. Übergeben Sie einen leeren String, wird keine Methode aufgerufen. Existiert die übergebene Methode nicht, wird die Überprüfung nicht ausgeführt. Es wird ein Fehler erzeugt und die Variable OK wird auf 0 (Null) gesetzt.
Wird die Methode aufgerufen, kann sie je nach den zu prüfenden Objekten und dem auslösendem Ereignis bis zu 5 Parameter empfangen (siehe Tabelle Aufrufe). Sie müssen diese Parameter in der Methode deklarieren:
- $1 | Lange Ganzzahl | Meldungstyp (siehe Tabelle) |
- $2 | Lange Ganzzahl | Objekttyp |
- $3 | Text | Meldung |
- $4 | Lange Ganzzahl | Tabellennummer |
- $5 | Lange Ganzzahl | Reserviert |
Nachfolgende Tabelle beschreibt den Inhalt der Parameter je nach Ereignistyp:
Ereignis | $1 (Lange Ganzzahl) | $2 (Lange Ganzzahl) | $3 (Text) | $4 (Lange Ganzzahl) | $5 (Lange Ganzzahl) |
Meldung | 1 | 0 | Meldung über | Erledigter Prozent- | Reserviert |
| | | Verlauf | satz (0-100) | Reserviert |
Überprüfungsende (*) | 2 | Objekttyp (**) | Meldungstext | Tabellen- oder | Reserviert |
| | | OK | Indexnummer |
Fehler | 3 | Objekttyp (**) | Text der Fehler- | Tabellen- oder | Reserviert |
| | | meldung | Indexnummer |
Ausführungsende | 4 | 0 | Fertig | 0 | Reserviert |
Warnung | 5 | Objekttyp (**) | Text der | Tabellen- oder | Reserviert |
| | | Fehlermeldung | Indexnummer |
(*) Ist der Modus Verify All, wird nie das Ereignis Überprüfungsende ($1=2) zurückgegeben. Es wird nur für die Modi Verify Records oder Verify Indexes verwendet.
(**) Objekttyp: Wurde ein Objekt bestätigt, kann eine Meldung "beendet" ($1=2), Fehler ($1=3) oder Warnung ($1=5) gesendet werden. Für $2 sind folgende Objekttypen möglich:
- 0 = unbestimmt
- 4 = Datensatz
- 8 = Index
- 16 = Strukturobjekt (Vorabprüfung der Datendatei).
Sonderfall: Ist $4 = 0 für $1=2, 3 oder 5 betrifft die Meldung keine Tabelle oder Index, sondern die gesamte Datendatei.
Die Callback Methode muss auch einen Wert in $0 zurückgeben (Lange Ganzzahl), der die Ausführung der Operation prüft:
- Ist $0 = 0, läuft die Operation normal weiter
- Ist $0 = -128, stoppt die Operation ohne Erzeugen eines Fehlers
- Ist $0 = ein anderer Wert, stoppt die Operation und der in $0 übergebene Wert wird als Fehlernummer zurückgegeben. Dieser Fehler lässt sich über eine Fehlerverwaltungsmethode abfangen.
Hinweis: Wurde das Ereignis ($4=1) generiert, können Sie die Ausführung nicht via $0 unterbrechen.
Dieser Befehl kann auch 2 optionale Arrays verwenden:
- Das Array TabellenArray enthält die Nummern der Tabellen, deren Datensätze geprüft werden sollen. Damit können Sie die Überprüfung auf bestimmte Tabellen begrenzen. Ist dieser Parameter nicht übergeben, oder das Array leer und der Parameter Objekte enthält die Konstante Verify Records, werden alle Tabellen geprüft.
- Das Array FelderArray enthält die Nummern der indizierten Felder, deren Indizes überprüft werden sollen.
Ist dieser Parameter nicht übergeben, oder das Array leer und der Parameter Objekte enthält die Konstante Verify Indexes, werden alle Indizes geprüft.
Der Befehl ignoriert nicht-indizierte Datenfelder.
Enthält ein Datenfeld mehrere Indizes, werden alle geprüft. Ist das Datenfeld Teil eines zusammengesetzten Index, wird der gesamte Index geprüft.
Sie müssen in FelderArray ein 2D Array übergeben. Für jede Zeile des Array gilt:
- Das Element {0} enthält die Tabellennummer
- Die anderen Elemente {1...x} enthalten die Nummern der Datenfelder.
Der Befehl VERIFY DATA FILE erstellt standardmäßig einen Prüfbericht im XML-Format (wenn Sie nicht die Konstante Do not create log file übergeben haben, siehe Parameter Optionen). Er liegt im Ordner Logs der aktuellen Datenbank und hat den Namen ihrer Strukturdatei.
Beispiel: Bei einer Strukturdatei mit Namen “myDB” lautet der Prüfbericht “myDB_Verify_Log.xml.”
Haben Sie die Option Timestamp log file name übergeben, zeigt der Name des Prüfberichts auch Datum und Uhrzeit der Erstellung im Format "YYYY-MM-DD HH-MM-SS", der Name im Beispiel lautet dann: “myDB_Verify_Log_2015-09-27 15-20-35.xml”. Das bedeutet, dass ein neuer Prüfbericht nicht den vorigen 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 Prüfberichts nach Ausführung des Befehls in der Systemvariablen Document zurückgegeben.
Einfache Überprüfung von Daten und Indizes:
Vollständige Überprüfung mit Prüfbericht
VERIFY DATA FILE($StructName;$DataName;Verify all;0;"")
Nur Datensätze überprüfen
Nur Datensätze der Tabellen 3 und 7 überprüfen:
ARRAY LONGINT($arrTableNums;2)
$arrTableNums{1}:=3
$arrTableNums{2}:=7
VERIFY DATA FILE($StructName;$DataName;Verify records;0;"FollowScan";$arrTableNums)
Bestimmte Indizes überprüfen (Index von Feld 1 der Tabelle 4 und Index der Felder 2 und 3 der Tabelle 5)
ARRAY LONGINT($arrTableNums;0)
ARRAY LONGINT($arrIndex;2;0)
$arrIndex{1}{0}:=4
APPEND TO ARRAY($arrIndex{1};1)
$arrIndex{2}{0}:=5
APPEND TO ARRAY($arrIndex{2};2)
APPEND TO ARRAY($arrIndex{2};3)
VERIFY DATA FILE($StructName;$DataName;Verify indexes;0;"FollowScan";$arrTableNums;$arrIndex)
Existiert die Callback Methode nicht, wird keine Überprüfung durchgeführt, ein Fehler erzeugt und die Systemvariable OK auf 0 (Null) gesetzt. Wurde ein Prüfbericht generiert, wird sein kompletter Pfadname in der Systemvariable Document zurückgegeben.