Curseurs d'importation (tech)
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 —