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...) |
|||
| Ligne 54 : | Ligne 54 : | ||
===Propriétés=== | ===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" | ||
| + | |- | ||
| + | |OPEN | ||
| + | |<source lang='delphi'>procedure Open;</source> | ||
| + | |Exécute la requête. | ||
| + | |- | ||
| + | |CLOSE | ||
| + | |<source lang='delphi'>procedure Close;</source> | ||
| + | |Ferme le curseur. | ||
| + | |- | ||
| + | |ROLLBACK | ||
| + | |<source lang='delphi'>procedure RollBack;</source> | ||
| + | |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. | ||
| + | |- | ||
| + | |NEXT | ||
| + | |<source lang='delphi'>procedure Next;</source> | ||
| + | |Appelez Next pour placer le curseur sur l'enregistrement suivant. | ||
| + | |} | ||
===Exemples=== | ===Exemples=== | ||
Version du 17 juillet 2009 à 14:41
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, aImportOptions: String; aDatabaseInfo:TdatabaseInfo):TimportCursor;
Les paramètres sont :
| 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. | ||||||||
| aImportOptions | string | Ce paramètre indique les options utilisées pour l’importation.
Le chaîne comporte les options désirées séparées par des virgules, les options possibles sont :
|
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
| OPEN | procedure Open; |
Exécute la requête. |
| CLOSE | procedure Close; |
Ferme le curseur. |
| ROLLBACK | 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. |
| NEXT | procedure Next; |
Appelez Next pour placer le curseur sur l'enregistrement suivant. |
Exemples
Procesure doImport ; var aCursor:TImportCursor; begin aCursor := ClassManager.CreateImportCursor('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;
— Code métier — Développement DSM —
| Whos here now: Members 0 Guests 0 Bots & Crawlers 1 |