Version 11
VERIFY DATA FILE (; StrukturPfad; DatenPfad; Objekte; Optionen; Methode{; TabellenArray; FelderArray})
Parameter | Typ | Beschreibung | |
StrukturPfad | Text | Pfadname der zu prüfenden 4D Strukturdatei | |
DatenPfad | Text | Pfadname der zu prüfenden Datendatei | |
Objekte | Zahl | Zu prüfende Objekte | |
Optionen | Zahl | Zu prüfende Optionen | |
Methode | Text | Name der 4D Callback Methode | |
TabellenArray | Array Zahl | Nummern der zu prüfenden Tabellen | |
FelderArray | 2D Array Zahl | Nummern der zu prüfenden Indizes |
Beschreibung
Der Befehl VERIFY DATA FILE prüft die Struktur der Objekte in der 4D Datendatei, definiert durch die Parameter StrukturPfad und Daten-Pfad.
Hinweis: Weitere Informationen dazu finden Sie im Handbuch 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:
- Verify Records (4)
- Verify Indexes (8)
- Verify All No Callback (16)
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 No Callback ist ein Sonderfall. Sie führt eine voll-ständige interne Überprüfung aus (Datensätze + Indizes), erlaubt aber aus internen Gründen keine Callback Methoden. Diese Überprüfung ist trotzdem kompatibel zum Anlegen eines Prüfberichts.
Im Parameter Optionen setzen Sie Optionen zum Überprüfen. Unter dem Thema "Datendatei Wartung" gibt es die Option Do not create log file (16384).
Der Befehl VERIFY DATA FILE legt generell einen Prüfbericht im XML-Format an. Übergeben Sie diese Option, wird kein Prüfbericht ange-legt. 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. 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 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 | Sonderfall |
Nachfolgende Tabelle beschreibt den Inhalt der Parameter je nach Ereignistyp:
Ereignis | $<1 (<Lange | $<2 (<Lange | $<3 (<Text) | $<4 (<Lange | $<5 (<Lange | |
Ganzzahl) | Ganzzahl) | Ganzzahl) | Ganzzahl) | |||
Meldung | 1 | 0 | Meldung über | Erledigter Pro- | Verbleibende Zeit | |
Verlauf | zentsatz (0-100) | in Sekunden | ||||
Überprüfung | 2 | Objekttyp | Meldungstext | Tabellen- oder | Nicht verwendet | |
OK | OK | Indexnummer | ||||
Fehler | 3 | Objekttyp | Text of error- | Tabellen- oder | Nicht verwendet | |
message | Indexnummer |
Ende der
Ausführung | 4 | 0 | DONE | 0 | 0 |
Warnung | 5 | Objekttyp | Text der | Tabellen- oder | Nicht verwendet |
Fehlermeldung | Indexnummer |
Objekttyp: Wurde ein Objekt bestätigt, ist eine Meldung OK ($1=2), Feh-ler ($1=3) oder Warnung ($1=5) möglich. Für $2 sind folgende Objekt-typen 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 über-gebene Wert wird als Fehlernummer zurückgegeben. Dieser Fehler lässt sich über eine Fehlerverwaltungsmethode abfangen.
Dieser Befehl kann auch 2 optionale Arrays verwenden:
Das Array TabellenArr enthält die Nummern der Tabellen, deren Daten-sä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 zusammengesetzen 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 einen Prüfbericht im XML-Format (wenn Sie nicht die Option Do not create log file übergeben haben, siehe Parameter Optionen). Es hat den Namen der Datendatei und liegt im Ordner Logs der Datenbank. Beispiel: Bei einer Datendatei mit Namen "data.4dd" lautet der Prüfbericht "data_verify_log.xml."
Beispiele
1. Einfache Überprüfung von Daten und Indizes:
VERIFY DATA FILE($StructName;$DataName;Verify Indexes+Verify Records;Do not create log file;"")
2. Vollständige Überprüfung mit Prüfbericht
VERIFY DATA FILE($StructName;$DataName;Verify All No Callback;0;"")
3. Nur Datensätze überprüfen
VERIFY DATA FILE($StructName;$DataName;Verify Records;0;"")
4. Nur Datensätze der Tabellen 3 und 7 überprüfen:
ARRAY LONGINT($arrTableNums;2) ARRAY LONGINT($arrIndex;0) `not used but mandatory $arrTableNums{1}:=3 $arrTableNums{2}:=7 VERIFY DATA FILE($StructName;$DataName;Verify Records;0;"FollowScan";$arrTableNums;$arrIndex)
5. 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) `not used but mandatory ARRAY LONGINT($arrIndex;2;0) `2 rows (columns added later) $arrIndex{1}{0}:=4 ` table number in element 0 APPEND TO ARRAY($arrIndex{1};1) `number of 1st field to be checked $arrIndex{2}{0}:=5 ` table number in element 0 APPEND TO ARRAY($arrIndex{2};2) ` number of 1st field to be checked APPEND TO ARRAY($arrIndex{2};3) ` number of 2nd field to be checked VERIFY DATA FILE($StructName;$DataName;Verify Indexes;0;"FollowScan";$arrTableNums;$arrIndex)
Referenz
Systemvariablen oder Mengen
Existiert die Callback Methode nicht in der Datenbank, wird ein Fehler erzeugt und die Systemvariable OK wird auf 0 (Null) gesetzt.