Curseurs d'importation (tech)
De Wiki1000
(Différences entre les versions)
(Nouvelle page : ===Introduction=== Les curseurs d’importation sont des curseurs particuliers permettant à un processus de contrôler une session d’importation. ===Déclaration d'une variable C...) |
(→Exemples) |
||
(11 révisions intermédiaires par 2 utilisateurs sont masquées) | |||
Ligne 14 : | Ligne 14 : | ||
Pour créer un curseur d'importation dans une base de données particulière : | Pour créer un curseur d'importation dans une base de données particulière : | ||
− | <source lang='delphi'>function ClassManager.CreateImportCursorInDatabase(aClassName,aDescriptifFileName,aSourceFileName, | + | <source lang='delphi'>function ClassManager.CreateImportCursorInDatabase(aClassName,aDescriptifFileName,aSourceFileName, aImportMode:String; aDatabaseInfo:TdatabaseInfo):TimportCursor;</source> |
Les paramètres sont : | Les paramètres sont : | ||
{|class="wikitable" | {|class="wikitable" | ||
+ | |- | ||
+ | !Nom | ||
+ | !Type | ||
+ | !Usage | ||
|- | |- | ||
|aClassName | |aClassName | ||
Ligne 26 : | Ligne 30 : | ||
|string | |string | ||
|Ce paramètre indique le chemin du fichier descriptif d’importation | |Ce paramètre indique le chemin du fichier descriptif d’importation | ||
− | |||
|- | |- | ||
|aSourceFileName | |aSourceFileName | ||
|string | |string | ||
|Ce paramètre indique le chemin du fichier à importer. | |Ce paramètre indique le chemin du fichier à importer. | ||
− | |||
|- | |- | ||
− | | | + | |aImportMode |
|string | |string | ||
− | |Ce paramètre indique | + | |Ce paramètre indique le mode d'importation. |
− | Le | + | |} |
− | {| | + | |
+ | Le paramètre ImportMode peut comporter les options désirées séparées par des virgules : | ||
+ | |||
+ | {{:ImportMode}} | ||
+ | |||
+ | {{info|Les descriptifs d'importation ont pour extension .dip}} | ||
+ | {{warning|Le chemin du fichier source doit être accessible, préférez un chemin UNC lorsque le processus est utilisé en Serveur.}} | ||
+ | |||
+ | ===Propriétés=== | ||
+ | {|class="wikitable" | ||
|- | |- | ||
− | + | !Nom | |
− | + | !Type | |
+ | !Usage | ||
|- | |- | ||
− | | | + | |EOI |
− | | | + | |Boolean |
+ | |Indique si le curseur est positionné sur le dernier enregistrement d'un ensemble de données. | ||
|- | |- | ||
− | | | + | |FETCHCOUNT |
− | | | + | |Integer |
+ | |Renvoie le nombre de fetch réalisés. | ||
|- | |- | ||
− | | | + | |OID |
− | | | + | |TOID |
− | | | + | |Renvoie l'identifiant de l'objet courant. |
+ | |- | ||
+ | |INSTANCE | ||
+ | |TitObject | ||
+ | |Renvoie l'instance d'objet courant. La classe de cette instance est la classe spécifiée à la création du curseur. | ||
+ | |- | ||
+ | |DESCFILENAME | ||
+ | |string | ||
+ | |Nom du descriptif d'importation (*) | ||
+ | |- | ||
+ | |FILENAME | ||
+ | |string | ||
+ | |Nom du fichier à importer (*) | ||
+ | |- | ||
+ | |INDEX | ||
+ | |Integer | ||
+ | |Position dans la source en cours d'importation. | ||
|} | |} | ||
− | === | + | (*)Ces propriétés doivent être positionnées avant l'ouverture. |
− | + | ===Méthodes=== | |
+ | {|class="wikitable" | ||
+ | |- | ||
+ | !Signature | ||
+ | !Action | ||
+ | |- | ||
+ | |procedure Open; | ||
+ | |Ouvre le curseur et exécute la requête. | ||
+ | |- | ||
+ | |procedure Close; | ||
+ | |Ferme le curseur. | ||
+ | |- | ||
+ | |procedure RollBack; | ||
+ | |Annule toutes les modifications, insertions ou suppressions de données de la transaction en cours et termine la transaction. Valable pour un curseur de type modification. | ||
+ | |- | ||
+ | |procedure Next; | ||
+ | |Déplace le curseur sur l'enregistrement suivant. | ||
+ | |} | ||
===Exemples=== | ===Exemples=== | ||
Ligne 61 : | Ligne 108 : | ||
var aCursor:TImportCursor; | var aCursor:TImportCursor; | ||
begin | begin | ||
− | aCursor := ClassManager. | + | aCursor := ClassManager.CreateCursorImport('Tpays','pays.dip','c:\pays.txt','miUpdate'); |
ClassManager.BeginTran; | ClassManager.BeginTran; | ||
try | try | ||
Ligne 140 : | Ligne 187 : | ||
end; | end; | ||
</source> | </source> | ||
+ | |||
+ | Voir aussi: | ||
+ | |||
+ | *[[TImportContext_(tech)|Contexte d'importation]] | ||
+ | *[[Import (rtl)|Fonction d'importation]] | ||
{{Footer|Code métier}} | {{Footer|Code métier}} | ||
[[category:Objets techniques]] | [[category:Objets techniques]] | ||
+ | [[category:Import]] |
Version actuelle en date du 4 novembre 2017 à 09:19
Sommaire |
Introduction
Les curseurs d’importation sont des curseurs particuliers permettant à un processus de contrôler une session d’importation.
Déclaration d'une variable Curseur d'importation
Les curseurs d'importation doivent être déclaré :
var cur:TImportCursor;
Création d'un curseur d'importation
Le ClassManager expose deux fonctions pour créer un Curseur d'importation:
Pour créer un curseur d'importation dans la base de données par défaut :
function ClassManager.CreateImportCursor(aClassName,aDescriptifFileName,aSourceFileName,aImportOptions: String):TimportCursor;
Pour créer un curseur d'importation dans une base de données particulière :
function ClassManager.CreateImportCursorInDatabase(aClassName,aDescriptifFileName,aSourceFileName, aImportMode:String; aDatabaseInfo:TdatabaseInfo):TimportCursor;
Les paramètres sont :
Nom | Type | Usage |
---|---|---|
aClassName | string | Ce paramètre indique la classe métier sur laquelle est réalisée l'importation. |
aDescriptifFileName | string | Ce paramètre indique le chemin du fichier descriptif d’importation |
aSourceFileName | string | Ce paramètre indique le chemin du fichier à importer. |
aImportMode | string | Ce paramètre indique le mode d'importation. |
Le paramètre ImportMode peut comporter les options désirées séparées par des virgules :
- miInsert
- Insertion des nouveaux objets
- miUpdateOnly
- Mise à jour des objets existant
- miUpdate
- Insertion et modification des objets
- miDeleteBefore
- Suppression des objets existants-obsolète
- miActiveControl
- Application des règles métiers
- miRejet
- Génération d'un fichier contenant les lignes rejetées dans le même répertoire que le fichier importé, de même nom que le fichier importé suffixé par « rejected ». Ne fonctionne pas avec les curseurs d'import.
- miTest
- Tester le fichier d'import
- miAppendErrorFile
- Les erreurs sont ajoutées dans le fichier de rejet
- miPass2InErrorFile
- Les erreurs lors du deuxième passage sont ajoutées dans le fichier de rejet
- miRenameFile
- Après l'importation le fichier est renommé
- miDeleteFile
- Après l'importation le fichier est supprimé
- miAtomic
- Utilisation dune seule transaction
- miUseImportRules
- Utiliser les règles d'importation
- miNoCheckRules
- Ne pas exécuter les règles de validation
Attention : Le chemin du fichier source doit être accessible, préférez un chemin UNC lorsque le processus est utilisé en Serveur. |
Propriétés
Nom | Type | Usage |
---|---|---|
EOI | Boolean | Indique si le curseur est positionné sur le dernier enregistrement d'un ensemble de données. |
FETCHCOUNT | Integer | Renvoie le nombre de fetch réalisés. |
OID | TOID | Renvoie l'identifiant de l'objet courant. |
INSTANCE | TitObject | Renvoie l'instance d'objet courant. La classe de cette instance est la classe spécifiée à la création du curseur. |
DESCFILENAME | string | Nom du descriptif d'importation (*) |
FILENAME | string | Nom du fichier à importer (*) |
INDEX | Integer | Position dans la source en cours d'importation. |
(*)Ces propriétés doivent être positionnées avant l'ouverture.
Méthodes
Signature | Action |
---|---|
procedure Open; | Ouvre le curseur et exécute la requête. |
procedure Close; | Ferme le curseur. |
procedure RollBack; | Annule toutes les modifications, insertions ou suppressions de données de la transaction en cours et termine la transaction. Valable pour un curseur de type modification. |
procedure Next; | Déplace le curseur sur l'enregistrement suivant. |
Exemples
Procesure doImport ; var aCursor:TImportCursor; begin aCursor := ClassManager.CreateCursorImport('Tpays','pays.dip','c:\pays.txt','miUpdate'); ClassManager.BeginTran; try aCursor.Open; while not aCursor.EOI do begin ShowMessage(aCursor.Instance.CodeISO); aCursor.Next; end; finally ClassManager.RollBack; end; end.
procedure TImportProduit.Excute; // curseur sur le descriptif d'import var vHasGUI : Boolean; vCursor : TImportCursor; vImportProduit : TImportProduit; vCursorOpened : Boolean; vOptionImport : String; vIdx : Integer; begin vHasGUI := ClassManager.HasGUI; ClassManager.HasGUI := False; vOptionImport :=''; result := 0; vIdx := 0; try vOptionImport := 'miImport'; vCursor := ClassManager.CreateCursorImport('TImportProduit',descriptifImport,fichierImport,vOptionImport); ClassManager.BeginTran; vCursor.Open; try ProgressMax(vCursor.Count); ProgressValue(0); while (not vCursor.Eoi) do begin if UserAbort then begin ProgressMessage(_TP('Traitement interrompu par l''utilisateur')); Break; end; // // Une transaction doit être ouverte car on crée des objets sur Open et sur Next // try // vImportProduit := vCursor.Instance; _ImporterProduit(vImportProduit); // supprimer l'object temporaire, on ne doit pas le sauvegarder dans la BD vImportProduit.Deleted := True; // ClassManager.Commit; ProgressMessage(Format(_TP('Produit %s importé'),[vImportProduit.codeProduit])); except result := 1; ClassManager.Rollback; end; ProgressValue(vCursor.index); vIdx := vIdx + 1; ClassManager.BeginTran; vCursor.Next; end; except ClassManager.RollBack; ProgressMessage(Format(_TP('Erreur(s) %s détectée(s). Le traitement est abandonné.'),[E.Message])); end; finally ProgressFull; vCursor.Close; ClassManager.HasGUI := vHasGUI; end; end;
Voir aussi:
— Code métier — Développement DSM —