« Curseurs d'importation (tech) » : différence 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...) |
Aucun résumé des modifications |
||
| 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 à 13:41
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 | ||||||||
| 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 | <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
<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 —
}}