Curseurs d'importation (tech)

De Wiki1000
Révision datée du 17 juillet 2009 à 10:42 par Syfre (discussion | contributions) (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...)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

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é :

<source lang='delphi'>var cur:TImportCursor;</source>

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 : <source lang='delphi'>function ClassManager.CreateImportCursor(aClassName,aDescriptifFileName,aSourceFileName,aImportOptions: String):TimportCursor;</source>

Pour créer un curseur d'importation dans une base de données particulière : <source lang='delphi'>function ClassManager.CreateImportCursorInDatabase(aClassName,aDescriptifFileName,aSourceFileName, aImportOptions: String; aDatabaseInfo:TdatabaseInfo):TimportCursor;</source>

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
Note : Ces descriptifs ont pour extension .dip
aSourceFileName string Ce paramètre indique le chemin du fichier à importer.
Attention : Ce chemin doit être accessible, préférez un chemin UNC lorsque le processus est utilisé en Serveur.
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 :

miImport Réalise une importation en création
miUpdate Réalise une importation en création / modification
miUpdateOnly Réalise une importation en modification
miRejet Génération d’un fichier de rejet.

Propriétés

Exemples

<source lang='delphi'> 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. </source>

<source lang='delphi'> 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 lutilisateur'));
         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; </source>

{{#if:Code métier|

{{#if:Code métier|— Code métier |}} — Développement DSM

|

{{#if:|— [[{{{1}}}]] |}} — Développement DSM

}}