Curseurs d'importation (tech)
De Wiki1000
Version du 17 juillet 2009 à 11:42 par Syfre (discuter | contributions)
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
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 —