> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Datenbankprüfungsregel

> Prüfen Sie erfasste Feldwerte in ABBYY FlexiCapture mit der Datenbankprüfungsregel anhand einer exakten oder unscharfen Suche, von Datensätzen und Primärschlüsseln gegen eine Datenbank.

Die Regel **Datenbankprüfung** vergleicht einen erkannten Feldwert mit Werten in einer Datenbanktabelle. Wenn der Wert gefunden wird, ist die Prüfung erfolgreich; andernfalls gibt die Regel einen Fehler zurück.

Verwenden Sie diese Regel, um zu prüfen, ob ein erfasster Wert in Ihrer Datenbank vorhanden ist, unscharfe Suchen durchzuführen (auch wenn Felder Tippfehler enthalten), einen Feldwert durch den entsprechenden Datensatz aus der Datenbank zu ersetzen oder Werte aus der Datenbank in Dokumentfelder zu kopieren.

<div id="create-a-database-check-rule">
  ## Erstellen einer Datenbankprüfungsregel
</div>

<Steps>
  <Step title="Öffnen des Dialogfelds „Eigenschaften“">
    Klicken Sie mit der rechten Maustaste auf das Feld und wählen Sie **Properties** aus oder öffnen Sie die Eigenschaften der Dokumentdefinition (wählen Sie dazu im Document Definition editor **Document Definition → Document Definition Properties** aus).
  </Step>

  <Step title="Erstellen einer neuen Regel">
    Klicken Sie auf der Registerkarte **Rules** auf **New Rule**. Wählen Sie **Database Check** aus und klicken Sie auf **OK**.
  </Step>

  <Step title="Festlegen der allgemeinen Regeloptionen">
    Geben Sie einen **Name** ein, legen Sie den [Schweregrad](/de/flexi-capture/templates/rules#severity), die [Bedingungen für die Anwendung der Regel](/de/flexi-capture/templates/rules#launchconditions) und bei Bedarf **Tags** fest und klicken Sie auf **Next**. Eine vollständige Liste der allgemeinen Regeloptionen finden Sie unter [Einrichten von Regeln](/de/flexi-capture/templates/rules#create-rule).
  </Step>

  <Step title="Herstellen einer Verbindung zur Datenquelle">
    Geben Sie den Datenquellentyp und die Verbindungsparameter an. Folgende Datenquellen werden unterstützt:

    | Datenquelle                      | Beschreibung                                                                                                                                                                                                                                                           |
    | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | **External Database (Simple)**   | Die Verbindung wird für jede Regel in der Document Definition eingerichtet.                                                                                                                                                                                            |
    | **External Database (Variable)** | Die Verbindung wird einmal in den Projekteigenschaften (**Project Properties → Environment Variables**) eingerichtet und kann von mehreren Regeln verwendet werden. Wenn Sie die Datenbank wechseln, müssen Sie die Verbindung nur in den Projekteigenschaften ändern. |
    | **Datensatz**                    | Die Verbindung wird in den Eigenschaften der Dokumentdefinition (**Document Definition Properties → Data Sets**) eingerichtet.                                                                                                                                         |

    <Tip>
      Verwenden Sie für den OLE DB Provider beim Export nach SQL **OLE DB Provider for ODBC Drivers** und beim Export nach Oracle **Oracle Provider for OLE DB**. Weitere Informationen finden Sie unter [Export in eine Oracle-Datenbank](/de/flexi-capture/templates/export-bd#export-to-oracle).
    </Tip>

    <Note>
      Um das Kennwort nicht bei jeder Verbindung eingeben zu müssen, wählen Sie **Allow saving password** aus oder konfigurieren Sie die Datenbank so, dass kein Kennwort erforderlich ist, beispielsweise über die Windows-Authentifizierung.
    </Note>
  </Step>

  <Step title="Auswählen des Schemas und der Tabelle">
    Wählen Sie das Schema und die Datenbanktabelle aus den Dropdownlisten aus oder geben Sie den Datensatz an, wenn Sie eine Verbindung mit einem Datensatz herstellen.

    <Note>
      Wenn **Find in all schemas** ausgewählt ist und sich die Tabelle nicht im Standardschema befindet, kann ein Fehler wie `Invalid object name` auftreten. Geben Sie in diesem Fall das Schema mit der Tabelle explizit an.
    </Note>
  </Step>

  <Step title="Festlegen der verbleibenden Optionen">
    * Wählen Sie **Don't check if all fields are empty** aus, um die Prüfung zu überspringen, wenn die verglichenen Felder keine Werte enthalten. Dies beschleunigt die Validierung.
    * Verknüpfen Sie die Felder der Dokumentdefinition mit den Datenbankfeldern (siehe [Angeben der zu vergleichenden Felder](#specify-fields)). Verwenden Sie **Add**, **Edit** und **Delete**, um die Verknüpfungen zu verwalten.
    * Wenn die Quelle ein Datensatz ist, wählen Sie in der Liste **Field where to save record ID** das Feld mit dem [Primärschlüssel](#primarykey) aus.
  </Step>
</Steps>

<Note>
  Auf einen Datensatz kann auch über das Datenformular mit einem **Button**-Steuerelement zugegriffen werden. Wählen Sie im Document Definition editor **Form → Insert Control → Button** aus. Klicken Sie im Dialogfeld **Properties** auf die Registerkarte **Format**, wählen Sie in der Liste **Type** die Option **Datenbankabgleich** aus und anschließend eine von Ihnen erstellte Datenbankprüfungsregel.
</Note>

<div id="specify-fields-to-compare">
  ## <a id="specify-fields" />Zu vergleichende Felder angeben
</div>

Die Gruppe **Feldverknüpfung** auf der Registerkarte **Regeleinstellung** zeigt die Feldvergleiche an. Sie können eine Datenbankprüfungsregel für ein einzelnes Feld oder einen [Feldsatz](#data-set) einrichten.

Geben Sie für jeden Vergleich Folgendes an:

| Einstellung       | Beschreibung                                                                                                                                                                                                                                      |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Dokumentfeld**  | Das Feld einer Dokumentdefinition, das mit einem Datenbankfeld verglichen wird.                                                                                                                                                                   |
| **Datenbankfeld** | Das Datenbankfeld, das mit dem Dokumentfeld verglichen wird.                                                                                                                                                                                      |
| **Suche**         | Der Vergleichstyp: **Exakt** (der Dokumentwert muss mit dem Datenbankwert übereinstimmen; bei der Suche wird die Groß- und Kleinschreibung nicht berücksichtigt) oder **Fuzzy** (der Dokumentwert kann teilweise übereinstimmen; nur Textfelder). |

Eine unscharfe Suche findet die ähnlichsten Übereinstimmungen, bei denen die wenigsten Buchstaben hinzugefügt, entfernt oder ersetzt werden müssen. Die Anzahl der zulässigen Fehler hängt von der Wortlänge ab. Wenn mehr als ein Wert übereinstimmt, sieht der Operator `Too many records found` sowie eine Liste ähnlicher Übereinstimmungen, aus der er auswählen kann.

Die folgenden zusätzlichen Optionen sind verfügbar:

| Option                                | Beschreibung                                                                                                                                                                                                                                                  |
| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Nicht suchen, wenn Feld leer ist**  | Ein leerer Feldwert wird nicht mit der Datenbank verglichen.                                                                                                                                                                                                  |
| **Wert aus Datenbank eingeben**       | Wenn eine Fuzzy-Suche eine Übereinstimmung findet, wird der Datenbankwert in das Feld eingetragen, wenn sich Feld- und Datenbankwert unterscheiden oder das Feld leer ist. Bei exakten Suchen hat diese Option keine Auswirkung, da die Werte identisch sind. |
| **Leere Werte in Datenbank zulassen** | Wenn das Datenbankfeld leer ist und das Dokumentfeld nicht, werden die Werte als identisch behandelt. Wenn auch **Aus Datenbank füllen** ausgewählt ist, wird der leere Datenbankwert nicht in das Feld eingetragen.                                          |

<div id="primary-keys-in-data-sets">
  ## <a id="data-set" /><a id="primarykey" />Primärschlüssel in Datensätzen
</div>

Wenn Ihr Project einen Datensatz (eine lokale Kopie einer externen Datenbank) enthält, aus dem Sie Feldwerte beziehen, können Sie mit einer Datenbankprüfungsregel ein Feld als Primärschlüssel (eindeutigen Bezeichner) eines Datensatzes festlegen.

Die Daten im Datenformular werden dann mit den Daten im Datensatz abgeglichen. Wenn Sie einen Datensatz auswählen, werden alle Felder mit Werten aus dem Datensatz gefüllt, und Sie können die Werte im Datenformular nicht bearbeiten. Wenn Sie dies dennoch versuchen, werden Sie in einem Dialogfeld aufgefordert, einen anderen Datensatz auszuwählen oder den vorhandenen Datensatz zu bearbeiten. Um Datensätze hinzuzufügen oder zu bearbeiten, klicken Sie mit der rechten Maustaste auf ein Feld und wählen Sie **Datensatz bearbeiten** oder **Datensatz hinzufügen**. Wenn Sie Daten in einem gefüllten Feld mit der Taste **Delete** löschen, werden auch die Daten in allen anderen Feldern gelöscht, die mit der Regel verknüpft sind. Die Regel wird erneut geprüft, wenn Sie Ihre Änderungen übernehmen.

<div id="how-primary-keys-work">
  ### Funktionsweise von Primärschlüsseln
</div>

1. Für alle von der Regel betroffenen Felder muss **Enter value from database** aktiviert sein. Wenn das Primärschlüsselfeld einen Wert enthält, trägt FlexiCapture die Werte aus der Datenbank in die anderen Felder ein, statt nach deren Werten zu suchen.
2. Wenn das Primärschlüsselfeld keinen Wert enthält, prüft FlexiCapture die anderen Felder, für die im Dialogfeld **Field Link** die Option **Search** aktiviert war (siehe [Zu vergleichende Felder festlegen](#specify-fields)). Wird ein eindeutiger Datensatz gefunden, werden die Werte aus der Datenbank verwendet, wie in Schritt 1.

Anschließend entscheiden Sie, ob Sie alle Änderungen übernehmen oder einen anderen Datensatz auswählen.

Der Primärschlüssel funktioniert nur, wenn:

* ein Datensatz als Quelle ausgewählt ist.
* im Datensatz ein Primärschlüssel festgelegt ist (für ein Feld ist die Option **Primary key** aktiviert).
* das Primärschlüsselfeld nicht in der Liste **Feldverknüpfung** auf der Registerkarte **Regeleinstellung** aufgeführt ist.

Weitere Informationen zu Datensätzen und einem Beispielprojekt finden Sie im Abschnitt [ABBYY FlexiCapture for Invoices](/de/flexi-capture/invoice-reader/ir-title-topic) sowie in den Themen [Verwendung von Vendor- und Geschäftsbereichsdatenbanken](/de/flexi-capture/invoice-reader/ir-db-connection) und [Suchen von Vendoren und Geschäftsbereichen in der Datenbank](/de/flexi-capture/invoice-reader/ir-data-set-using).

<div id="do-a-database-check-for-a-set-of-fields">
  ### Durchführen einer Datenbankprüfung für einen Feldsatz
</div>

FlexiCapture durchsucht die Datenbank nach einem Datensatz, der den Werten in einem Feldsatz entspricht, wobei jedes Feld einer anderen Spalte des gefundenen Datensatzes zugeordnet wird.

Verknüpfen Sie beispielsweise die Dokumentfelder **Fa**, **Fb** und **Fc** mit den Datenbankspalten **Ta**, **Tb** und **Tc**:

* **Fa** stimmt exakt mit **Ta** überein.
* **Fb** stimmt unscharf mit **Tb** überein.
* Wenn beide Bedingungen erfüllt sind, wird der Wert von **Tc** in **Fc** kopiert.

<Frame>
  <img src="https://mintcdn.com/abbyy/mpS3pcxC_lkohQUS/images/flexi-capture/Sample_compare_fields.png?fit=max&auto=format&n=mpS3pcxC_lkohQUS&q=85&s=6e3f73fad0506e7af76357ba805204b4" alt="Diagramm zum Vergleich der Dokumentfelder a, b und c mit den Datenbankspalten Ta, Tb und Tc, das eine erfolgreiche TRUE-Übereinstimmung in einer Datenbankzeile und eine fehlgeschlagene FALSE-Übereinstimmung zeigt, die sich über verschiedene Zeilen erstreckt." width="387" height="461" data-path="images/flexi-capture/Sample_compare_fields.png" />
</Frame>

Die Prüfung ist erfolgreich, wenn FlexiCapture einen Datensatz in der Datenbank findet, bei dem **Ta** exakt mit **Fa** übereinstimmt und **Tb** unscharf mit **Fb** übereinstimmt. Der Wert von **Tc** in diesem Datensatz wird in **Fc** kopiert. Wird kein solcher Datensatz gefunden, gibt die Regel einen Fehler zurück, selbst wenn **Ta** = **Fa** und **Tb** = **Fb** in unterschiedlichen Datensätzen vorkommen.

<Note>
  Verschiedene Kombinationen sind möglich: exakte, unscharfe oder gemischte Übereinstimmungen, kein automatisches Ausfüllen und eine beliebige Anzahl von Feldern.
</Note>
