4D v14.3

VERIFY DATA FILE

Home

 
4D v14.3
VERIFY DATA FILE

VERIFY DATA FILE 


 

VERIFY DATA FILE ( StrukturPfad ; DatenPfad ; Objekte ; Optionen ; Methode {; TabellenArray {; FelderArray}} ) 
Parameter Typ   Beschreibung
StrukturPfad  Text in Pfadname der zu prüfenden 4D Strukturdatei
DatenPfad  Text in Pfadname der zu prüfenden Datendatei
Objekte  Lange Ganzzahl in Zu prüfende Objekte
Optionen  Lange Ganzzahl in Zu prüfende Optionen
Methode  Text in Name der 4D Callback Methode
TabellenArray  Array Lange Ganzzahl in Nummern der zu prüfenden Tabellen
FelderArray  Array 2D Ganzzahl, Array 2D Lange Ganzzahl, Array 2D Zahl in Nummern der zu prüfenden Indizes

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 Meldung
    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 die Konstante Do not create log file (16384).
    Konstante Typ Wert Meldung
    Do not create log file Lange Ganzzahl 16384 Dieser Befehl erstellt generell ein Logbuch im XML Format. Mit dieser Option wird kein Logbuch angelegt.

    Der Befehl VERIFY DATA FILE legt generell einen Prüfbericht im XML-Format an. Ü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. 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:
    - $1Lange GanzzahlMeldungstyp (siehe Tabelle)
    - $2Lange GanzzahlObjekttyp
    - $3TextMeldung
    - $4Lange GanzzahlTabellennummer
    - $5Lange GanzzahlReserviert

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)
Meldung10Meldung über Erledigter Prozent-Reserviert
Verlaufsatz (0-100)Reserviert
Überprüfungsende (*)2Objekttyp (**) MeldungstextTabellen- oderReserviert
OKIndexnummer
Fehler3Objekttyp (**)Text der Fehler-Tabellen- oderReserviert
meldungIndexnummer
Ausführungsende40Fertig0Reserviert
Warnung5Objekttyp (**)Text derTabellen- oderReserviert
FehlermeldungIndexnummer

(*) 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 einen Prüfbericht im XML-Format (wenn Sie nicht die Konstante 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.”

Einfache Überprüfung von Daten und Indizes:

 VERIFY DATA FILE($StructName;$DataName;Verify indexes+Verify records;Do not create log file;"")

Vollständige Überprüfung mit Prüfbericht

 VERIFY DATA FILE($StructName;$DataName;Verify all;0;"")

Nur Datensätze überprüfen

 VERIFY DATA FILE($StructName;$DataName;Verify records;0;"")

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) `wird nicht verwendet, ist aber zwingend
 ARRAY LONGINT($arrIndex;2;0) `2 Zeilen (Spalten werden später hinzugefügt)
 $arrIndex{1}{0}:=4 `Tabellennummer in Element 0
 APPEND TO ARRAY($arrIndex{1};1) `Nummer des 1. zu prüfenden Feldes
 $arrIndex{2}{0}:=5 `Tabellennummer in Element 0
 APPEND TO ARRAY($arrIndex{2};2) `Nummer des 1. zu prüfenden Feldes
 APPEND TO ARRAY($arrIndex{2};3) `Nummer des 2. zu prüfenden Feldes
 VERIFY DATA FILE($StructName;$DataName;Verify indexes;0;"FollowScan";$arrTableNums;$arrIndex)

Existiert die Callback Methode nicht in der Datenbank, wird ein Fehler erzeugt und die Systemvariable OK wird auf 0 (Null) gesetzt.

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: 4D Umgebung
Nummer: 939

Dieser Befehl ändert die Systemvariable OKDieser Befehl ändert die Systemvariable Error

 
GESCHICHTE 

Geändert: 4D v11 SQL Release 3

 
SIEHE AUCH 

VERIFY CURRENT DATA FILE

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v14 R2)
4D Programmiersprache ( 4D v11 SQL Release 6)
4D Programmiersprache ( 4D v14 R3)
4D Programmiersprache ( 4D v12.4)
4D Programmiersprache ( 4D v13.5)
4D Programmiersprache ( 4D v14.3)
4D Programmiersprache ( 4D v14 R4)