Passer au contenu principal
Une vérification en base de données des valeurs des champs consiste à comparer la valeur d’un champ reconnu aux valeurs d’un tableau de base de données. Si une valeur de champ capturée figure parmi les valeurs de la base de données, la vérification est validée. Sinon, la règle renvoie une erreur. Vous pouvez utiliser cette règle pour vérifier qu’il existe une entrée pour une valeur capturée dans votre base de données, effectuer des recherches approximatives dans votre base de données même si des fautes de frappe ou des erreurs sont présentes dans les champs, remplacer une valeur de champ par l’enregistrement correspondant de la base de données et copier certaines valeurs de la base de données dans les champs du document.

Création d’une règle de vérification de base de données

Pour créer une règle de vérification de base de données :
  1. Ouvrez la boîte de dialogue des propriétés du champ (cliquez avec le bouton droit sur le champ pour ouvrir son menu contextuel, puis sélectionnez Properties…) ou la boîte de dialogue des propriétés de la définition de document (dans le menu du définition de document Editor, sélectionnez définition de document → définition de document Properties…).
  2. Accédez à l’onglet Rules.
  3. Cliquez sur le bouton New Rule…
  4. Dans la liste des types de règles, sélectionnez Database Check, puis cliquez sur OK.
  5. Saisissez le nom de la règle.
  6. Désactivez l’option Show rule name in message to verifier si nécessaire. Si cette option est désactivée, le message d’erreur s’affichera sous la forme « message d’erreur » au lieu de « nom de la règle : message d’erreur ».
  7. Spécifiez la gravité de la règle.
  8. Si nécessaire, spécifiez les conditions dans lesquelles la règle doit être appliquée (par défaut, une règle est appliquée sans condition). Voir Conditions d’application des règles pour plus d’informations.
  9. Spécifiez des balises pour la règle.
  10. Désactivez l’option Enabled rule si nécessaire. La règle sera créée, mais elle ne sera pas appliquée tant que cette option n’aura pas été activée par un utilisateur.
  11. Cliquez sur Next >.
  12. Configurez une connexion à la source de données en spécifiant son type et ses paramètres de connexion. Les sources de données suivantes sont prises en charge :
  • External Database (Simple) La connexion à la base de données externe est configurée pour chaque règle dans la définition de document.
    • External Database (Variable) La connexion à la base de données externe est configurée uniquement dans les propriétés du projet (Propriétés du projet → Variables d’environnement). Ce type de source de données peut être utilisé simultanément pour plusieurs règles. Si vous utilisez une autre base de données pour le projet, vous devrez modifier les paramètres de connexion uniquement dans les propriétés du projet.
    • jeu de données La connexion au jeu de données est configurée par l’utilisateur dans les propriétés de la définition de document (définition de document Properties → Jeux de données). Conseil. Nous vous recommandons de sélectionner l’un des fournisseurs OLE DB suivants :
    • Lors de l’exportation vers SQL, privilégiez OLE DB Provider for ODBC Drivers
    • Lors de l’exportation vers Oracle, privilégiez Oracle Provider for OLE DB (pour plus de détails, voir Exportation vers une base de données Oracle) Remarque : Pour éviter de saisir le mot de passe à chaque connexion à la base de données, sélectionnez l’option Allow saving password ou configurez la base de données de sorte qu’aucun mot de passe ne soit requis pour s’y connecter (par exemple, vous pouvez utiliser l’authentification Windows).
  1. Sélectionnez le schéma et la table de base de données requis dans les listes déroulantes, ou spécifiez le jeu de données requis si vous configurez une connexion à une source de type jeu de données. Remarque : Si Find in all schemas est sélectionné comme schéma et que la table spécifiée n’est pas incluse dans le schéma par défaut, le message d’erreur suivant peut s’afficher : [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name K1. [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared. Si ce message d’erreur apparaît, le nom du schéma contenant la table doit être spécifié explicitement.
  2. Sélectionnez l’option Don’t check if all fields are empty pour ne pas exécuter les vérifications de règle s’il n’y a aucune valeur dans les champs impliqués dans la comparaison. Cela accélérera la validation des règles.
  3. Établissez des liens entre les champs de la définition de document et les champs de la base de données (voir Spécification des champs à comparer ci-dessous).
  4. Utilisez les boutons Add…, Edit… et Delete pour ajouter, modifier ou supprimer des liens entre les champs.
  5. Si vous avez sélectionné un jeu de données comme source, vous pouvez maintenant sélectionner le champ qui servira de clé primaire dans la liste déroulante Field where to save record ID.
Il est possible d’accéder directement à un jeu de données depuis le formulaire de données via un contrôle de type « Button ». Pour ajouter un bouton au formulaire de données, sélectionnez Form → Insert Control → Button dans le définition de document Editor. Lorsque vous ajoutez un bouton au formulaire de données, la boîte de dialogue Properties s’ouvre. Cliquez sur l’onglet Format, sélectionnez Database Lookup dans la liste déroulante Type, puis sélectionnez une règle de vérification de base de données créée précédemment.

Spécification des champs à comparer

Dans le groupe lien de champ de l’onglet Paramètres de règle, vous pouvez voir les comparaisons de champs déjà définies. Vous pouvez configurer une règle de vérification de base de données soit pour un seul champ, soit pour un jeu de champs. Lorsque vous ajoutez ou modifiez des champs à comparer, vous devez spécifier les éléments suivants :
  • Champ du document Le champ de la définition de document à comparer à un champ de la base de données
  • Champ de base de données Le champ de la base de données à comparer au champ du document
  • Recherche Spécifie le type de comparaison :
    • Exact La valeur du champ du document doit correspondre exactement à la valeur du champ de base de données (notez toutefois que les recherches ne sont pas sensibles à la casse)
    • Approchée La valeur du champ du document peut ne correspondre que partiellement à la valeur de la base de données. Seuls les champs de texte peuvent être utilisés dans ce type de comparaison.
Les recherches approchées trouvent les correspondances les plus proches, c’est-à-dire les mots pour lesquels il faut ajouter, supprimer ou remplacer le moins de lettres possible pour obtenir une correspondance. Le nombre d’erreurs autorisées dépend de la longueur du mot d’origine. Si une recherche approchée trouve plusieurs valeurs correspondantes, le message d’erreur suivant s’affiche pour l’opérateur : Too many records found. Ce message d’erreur est accompagné de la liste des correspondances proches issues de la base de données afin que l’opérateur puisse sélectionner la valeur correcte dans la liste. Les options supplémentaires suivantes sont disponibles :
  • Ne pas rechercher si le champ est vide Si le champ est vide, sa valeur ne sera pas comparée aux valeurs de la base de données.
  • Saisir la valeur depuis la base de données Si une recherche approchée trouve une valeur correspondante dans la base de données, cette valeur peut être automatiquement saisie dans le champ si :
    • les valeurs du champ et de la base de données sont différentes
    • le champ est vide. Remarque : Dans le cas des recherches exactes, sélectionner l’option Saisir la valeur depuis la base de données n’a pas de sens, car les deux valeurs seront identiques.
  • Autoriser les valeurs vides dans la base de données Selon les résultats de la vérification de la base de données et d’autres paramètres, cette option a la signification suivante :
    • si le champ de base de données est vide et que le champ du document n’est pas vide, les valeurs du champ et de la base de données sont considérées comme identiques
    • si le champ de base de données est vide et que le champ du document n’est pas vide et que Remplir à partir de la base de données est sélectionné, la valeur vide de la base de données ne sera pas saisie dans le champ.

Clés primaires dans les jeux de données

Si votre projet comprend un jeu de données (une copie locale d’une base de données externe) dont vous souhaitez utiliser les valeurs de champs comme source pour les documents lors de leur traitement, vous pouvez utiliser une règle de vérification de base de données pour spécifier un champ qui servira de clé primaire (identifiant unique) d’un enregistrement dans le jeu de données. Dans ce cas, les données du formulaire de données seront mises en correspondance avec celles du jeu de données. Lorsque vous sélectionnez un enregistrement, tous les champs sont automatiquement renseignés avec les valeurs du jeu de données. Vous ne pourrez pas modifier les valeurs dans le formulaire de données. Si vous essayez de le faire, une boîte de dialogue vous invitant à effectuer l’une des actions suivantes s’affichera :
  • sélectionner un autre enregistrement dans le jeu de données
  • modifier l’enregistrement existant
Vous pouvez ouvrir la boîte de dialogue permettant d’ajouter ou de modifier des enregistrements en cliquant avec le bouton droit sur un champ, puis en cliquant sur Edit Data Set Record… ou Add Data Set Record… dans le menu contextuel. Lorsque vous supprimez les données d’un champ renseigné en appuyant sur la touche Delete, les données de tous les autres champs associés à la règle sont également supprimées. La règle sera de nouveau vérifiée lorsque vous appliquerez vos modifications. Fonctionnement des clés primaires
  1. Tous les champs ciblés par la règle doivent avoir l’option Enter value from database activée. Dans ce cas, à condition que le champ servant de clé primaire contienne une valeur, le programme ne recherchera pas les valeurs des autres champs et les renseignera à partir de la base de données.
  2. Si le champ servant de clé primaire ne contient aucune valeur, le programme examinera les autres champs pour lesquels l’option Search a été activée lorsque les champs à comparer ont été spécifiés dans la boîte de dialogue Field Link (voir Spécification des champs à comparer ci-dessus). Si un enregistrement unique est trouvé pour ces champs, les valeurs de la base de données seront utilisées (comme au point 1 ci-dessus).
L’utilisateur n’a alors plus qu’à décider s’il accepte toutes les modifications ou choisit un autre enregistrement dans le jeu de données. Les conditions suivantes doivent être remplies pour que la clé primaire fonctionne :
  • Un jeu de données est sélectionné comme source ;
  • Une clé primaire est spécifiée dans le jeu de données, c’est-à-dire que l’option clé primaire a été activée pour un champ lorsque
  • Le champ utilisé comme clé primaire ne figure pas dans la liste lien de champ de l’onglet paramètre de règle.
La section ABBYY FlexiCapture for Invoices contient davantage d’informations sur les jeux de données et explique leur utilisation dans un exemple de projet. Voir Utilisation des bases de données des fournisseurs et des unités commerciales. Voir Recherche de fournisseurs et d’unités commerciales dans la base de données.

Vérification dans la base de données pour un ensemble de champs

Dans ce cas, le programme recherche dans la base de données un enregistrement correspondant aux valeurs d’un ensemble de champs ; chaque valeur de cet ensemble est liée à une colonne différente de l’enregistrement trouvé. Prenons l’exemple suivant : Associons les champs du document Fa, Fb et Fc aux colonnes de la base de données Ta, Tb et Tc comme suit :
  • La valeur du champ Fa correspond exactement à la valeur de Ta
  • La valeur du champ Fb correspond approximativement à la valeur de Tb
  • Lorsque les conditions spécifiées sont remplies, la valeur de la colonne Tc est copiée dans le champ Fc.
La vérification de la base de données réussira si le programme trouve un enregistrement dans lequel la valeur de la colonne Ta correspond exactement à la valeur du champ Fa et la valeur de la colonne Tb correspond approximativement à la valeur du champ Fb. La valeur de la colonne Tc de cet enregistrement sera copiée dans le champ Fc. Si aucun enregistrement de ce type n’est trouvé, la règle renverra une erreur, même si le programme trouve, par exemple, Ta = Fa et Tb = Fb dans des enregistrements différents.
Différentes combinaisons sont possibles : correspondances exactes/approximatives/mixtes, sans remplissage automatique, nombre quelconque de champs, etc.