Curseurs d'importation (tech)
De Wiki1000
(Différences entre les versions)
(→Exemples) |
|||
Ligne 115 : | Ligne 115 : | ||
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 |
Version du 27 janvier 2016 à 17:25
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.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;
— Code métier — Développement DSM —