Accueil > Forum > > > > Contrôler ma réplication des données
Contrôler ma réplication des données
vendredi 21 septembre 2012 à 17:38:46 |
Contrôler ma réplication des données

sekoname2
|
Bonjour à tous,
J'ai écris un code qui me permet récupérer des données d'une base de données distante et de les insérer dans une BD locale.
Le problème, c'est que quand je lance la reconstitution de ma BD, toute l'application reste indisponible jusqu'à la fin du processus alors que j'aimerai utiliser les autres fonctionnalités pendant que ce processus s'exécute.
En résumé, j'aimerai savoir comment lancer cette tâche en arrière plan et avoir la possibilité de l'arrêter au besoin.
J'utilise Delphi 7 et SQL Server.
Je remercie par avance toute personne qui pourrait m'apporter une quelconque aide.
Voici mon code :
Code Delphi : Procedure ExportToExcel(aGrid : TDBGrid);//Export vers ma bd locale
Var
I, J, nb_jrnl, nb_enreg: Integer;
Begin
with DM do
BEGIN//1
TListeTable.Close;
TListeTable.Open;
if not TListeTable.IsEmpty then
begin//1.1
TListeTable.First;
nb_enreg := TListeTable.RecordCount;
for j := 1 to nb_enreg do
begin//2
/////////////
//Préparation du fichier à télécharger
TFichier.Active := False;
TFichier.TableName := 'MON_EMPLACEMENT.'+TListeTable.FieldValues['code_table'];
TFichier.Open;
//Fin Préparation du fichier à télécharger
if not TFichier.IsEmpty then
begin//3
TFichier.First;
//Préparation de la table à charger
TTampon.Close;
TTampon.TableName := 'dbo.'+TListeTable.FieldValues['code_table'];
TTampon.Open;
if not TTampon.IsEmpty then
begin
TTampon.Close;
TTampon.EmptyTable;
TTampon.Open;
end;
//Fin Préparation de la table à charger
//Historiq_bebut
TJournal.Close;
TJournal.Open;
if TJournal.IsEmpty then
begin
TJournal.Insert;
nb_jrnl := 1;
TJournal.FieldByName('num_journal').AsInteger := nb_jrnl;
TJournal.FieldByName('nom_table').AsString := TListeTable.FieldValues['code_table'];
TJournal.FieldByName('debut_chargement').AsDateTime := Date()+Time();
TJournal.Post
end
else
begin
TJournal.Last;
nb_jrnl := TJournal.FieldValues['num_journal'] + 1;
TJournal.Insert;
TJournal.FieldByName('num_journal').AsInteger := nb_jrnl;
TJournal.FieldByName('debut_chargement').AsDateTime := Date()+Time();
TJournal.FieldByName('nom_table').AsString := TListeTable.FieldValues['code_table'];
TJournal.Post
end;
//Fin Historiq_bebut
//Transaction
if DM.dbLocal.InTransaction then DM.dbLocal.Rollback;
DM.dbLocal.StartTransaction;
try
//Remplissage de la table concernée
While Not TFichier.Eof Do
Begin
DM.TTampon.Insert;
For I := 0 To TFichier.FieldCount - 1 Do
If TFichier.Fields[I].Visible Then //A REVOIR POUR EVITER DE RATER LES CHAMPS DE MÊME TYPE
Begin
DM.TTampon.Fields[I].Value := TFichier.Fields[I].Value;
End;
DM.TTampon.Post;
TFichier.Next;
end;
//Fin Remplissage de la table concernée
//Historique_Fin
TJournal.Locate('num_journal',nb_jrnl,[]);
TJournal.Edit;
TJournal.FieldByName('fin_chargement').AsDateTime := Date()+Time();
TJournal.FieldByName('reussit').AsBoolean := True;
TJournal.Post;
//Validation
DM.dbLocal.Commit;
except
DM.dbLocal.Rollback;
raise;
end;//Transact
end;//3
////////////
TListeTable.Next;//Passage à la table suivante
end//2
end//1.1
END//1
End;
|
|
vendredi 21 septembre 2012 à 19:10:43 |
Re : Contrôler ma réplication des données

walidlam
|
salut!!!
essayer d ajouter a la boucle:
Code Delphi : Application.ProcessMessages;
@+
|
|
dimanche 23 septembre 2012 à 21:43:21 |
Re : Contrôler ma réplication des données

solilog
|
Réponse acceptée !
Bonsoir,
Une solution serait de faire un thread en tâche de fond.
Une autre, plus simple est de faire tourner ta procédure dans une autre Form que la Form active avec un bouton (ou autre) qui lance la proc dans l'autre fenetre et garder le focus sur la main form (chaque form est un thread).
Salut.
|
|
lundi 24 septembre 2012 à 11:06:44 |
Re : Contrôler ma réplication des données

sekoname2
|
Bonjour et merci de l'intérêt que vous portez à mon sujet,
A WALIDLAM : à quoi sert cette instruction (car j'arrive pas à afficher l'aide de Delphi sous win 7 ce qui est déjà un problème que j'ai pas encore pu régler)? et où la placer dans ma boucle?
A SOLILOG : pourriez vous me donner plus d'indications sur comment créer un thread en tâche de fond? En ce qui concerne le fait de mettre la procédure sur une autre forme, c'est ce que j'ai fait la première fois avec cette instruction : Code Delphi : FTelechargeur := TFTelechargeur.Create(Application);
FTelechargeur.btExportClick(Self); mais j'ai eu le même résultat (le sablier sql qui demeure jusqu'à la fin du traitement).
je dois ajouter que : j'aimerai afficher en même temps une barre de progression qui montre l'avancée de mon traitement.
Merci encore.
|
|
lundi 24 septembre 2012 à 11:31:29 |
Re : Contrôler ma réplication des données

yanb
|
Salut,
Pour l'aide de D7 sous W7 regarde ce que j'ai dit Ici
@+
|
|
lundi 24 septembre 2012 à 19:03:38 |
Re : Contrôler ma réplication des données

solilog
|
Salut
- processmessages: dire au programme d'executer toutes les messages (ou tâches) en attente. Mais c'est pas super dans ce cas.
- Pour faire tourner ta proc dans une autre fenêtre ca semble pas super non-plus.
- thread: regarde dans le rep demo de D7, il y a un rep threads, une demo de 3 ex de tri qui s'executent en même temps (dans 3 threads). Et cherche dans le help tthread. Trop long sur le forum.
- tu peux aussi faire un programme à côté qui fait ta proc et tu le lances depuis ton programme principal. Et là ça marchera, sûr. Ce prog pourrait recevoir un param qui dirait quelle proc lancer, ainsi toutes les proc de "maintenance" pourraient y être :
dans le programme appelé:
var nomproc;
...
nomproc := lowercase(trim(paramstr(1)));
if nomproc = 'xxxxx' then XXXXX
else if nomproc = 'yyyyy' then YYYYY
....
else messagedlg('Tu t''es planté dans le nom de ta proc', mterror, [mbOk], 0);
regarde dans l'aide comment appeler un programme: shellexec (minimized)
Faut que tu bosses. Mais tu devrais t'en sortir.
Bon courage.
|
|
mardi 25 septembre 2012 à 01:32:58 |
Re : Contrôler ma réplication des données

sekoname2
|
Une fois de plus merci à vous tous!
Particulièrement à Yanb pour l'aide de Delphi que j'arrive maintenant à ouvrir. Ça faisait longtemps  mais la solution est plus simple quand on l'a prend sur le site du 01.net ici pour les 32 bits et là pour les 64 bits
Encore plus à Solilog, j'ai pas encore tester la solution mais dès que c'est fait je donne les résultats.
A très bientôt j'espère. 
|
|
Cette discussion est classée dans : end, table, begin, tjournal, tlistetable
Répondre à ce message
Sujets en rapport avec ce message
Champs Chamboulés [ par apz ]
Salut,1- En voulant avoir une table *.DB à partir d'une table *.DBF, en utilisant le Module Base de Données (Outils/Utilitaires/Copier), j'avais dans
Index d'un table Dbase [ par webazard ]
Bonjour, je crée un base Dbase indiqué dans l'aide de delphi en remplacant ttparadox par ttdbase.en supprimant la construction d'index min prog marche
Probleme lecture/ecriture dans fichier. [ par Cybric ]
Bonsoir.Je débute avec DELPHI, donc novice.Je recopie tel quel le code de lecture de fichier trouvé dans "tout en poche" et cela ne fonctionne pas. Le
pb d'affichage d'un TChart [ par Pegase20 ]
bonjour, J'affiche une autre fiche qui contient un graphique (créé à l'aide d'un TChart) quand je clique sur un bouton.Mon pb c'est que le graph ne
MDI Filles dans une DLL [ par DarkSky ]
..::= DarkSky =::..Salut almi,j'ai exactement le même problème que toi (Hint) sur l'utilisation de MDI Filles dans une DL
Aide variable [ par SatanCorporation ]
je vien de commencé le delphi cet aprem et g un probleme :procedure TForm1.BitBtn1Click(Sender: TObject);vari:integer;beginfor I := 1 to 10000 do b
ou est mon erreur [ par Rapakooti ]
R A P A K O O T Ica devrais trie mais ca le fais pasprocedure TForm1.Button1Click(Sender: TObject);begin If ComboBox1.Text='' Then Table1.F
cacher, hide, process, application, xp [ par Den ]
voici un code trouvé sur le web, il devrait permettre de cacher le processus du gestionnaire des taches de XP, je ne sait pas l'utiliseret j'ai déposé
Code 1 à tester [ par apz ]
salut a tous,je voulais faire un filtrage sur une table en utlisant les numeros d'enregistrements pour marquer les record et ensuite applique une requ
erreur [ par BRIVE ]
Votre texte ICIVotre texte ICIBonjour,J'ai un problème avec la lecture d'un fichier et l'affichage de son contenu dans un ListBox.La session se dérou
Livres en rapport
|
Derniers Blogs
VOTEZ POUR LE TOP 10 DES INFLUENCEURS SHAREPOINT FRANCOPHONES !VOTEZ POUR LE TOP 10 DES INFLUENCEURS SHAREPOINT FRANCOPHONES ! par Patrick Guimonet
Si ce n'est déjà fait (comme plus de 600 personnes déjà), il est encore temps de voter pour le concours TOP 10 des influenceurs SharePoint francophones ! Il est organisé par harmon.ie et accessible ici : http://harmon.ie/top-...
Cliquez pour lire la suite de l'article par Patrick Guimonet [CONF'SHAREPOINT] DERNIER RAPPEL ! :-)[CONF'SHAREPOINT] DERNIER RAPPEL ! :-) par Patrick Guimonet
La Conf'SharePoint en chiffres c'est : 3 jours de SharePoint ! 4 parcours et 60 sessions 17 partenaires représentant toutes les fac...
Cliquez pour lire la suite de l'article par Patrick Guimonet [ #SHAREPOINT 2013 ] LES MODèLES DE SITES STANDARDS.[ #SHAREPOINT 2013 ] LES MODèLES DE SITES STANDARDS. par Patrick Guimonet
C'est un point peu mis en avant mais SharePoint 2013 a été l'occasion de remettre de l'ordre dans les modèles de sites. Tout d'abord, un certain nombre de modèles ont été tout simplement rendus obsolètes (cf. Fonctionnalités déco...
Cliquez pour lire la suite de l'article par Patrick Guimonet 10 ERREURS DE COMPRéHENSION CONCERNANT SHAREPOINT.10 ERREURS DE COMPRéHENSION CONCERNANT SHAREPOINT. par Patrick Guimonet
Une excellente infographie (qui a sa source ici :http://www.evokeit.com/sharepoint-blog/misconceptions-of-microsoft-sharepoint) que j'ai traduite et commentée sur le blog d'Abalon : http://abalon.fr/blog/10-erreurs-de-comprhension-...
Cliquez pour lire la suite de l'article par Patrick Guimonet
Logiciels
Nego Facturation (1.84)NEGO FACTURATION (1.84)Nego Facturation est un logiciel complet qui permet de gérer vos factures et devis très simplemen... Cliquez pour télécharger Nego Facturation Revealer Keylogger Free (2.07)REVEALER KEYLOGGER FREE (2.07)Keylogger invisible et gratuit pour Windows 8, 7, Vista ou XP. Revealer Keylogger Free vous perme... Cliquez pour télécharger Revealer Keylogger Free Devis-Factures PHMSD (2.1.0.1)DEVIS-FACTURES PHMSD (2.1.0.1)Configuration minimale
Nécessite Windows™ 2000, XP, Windows 7, 8, Vista (Service Pack à... Cliquez pour télécharger Devis-Factures PHMSD Ludoprêt (3.2)LUDOPRêT (3.2)Logiciel gratuit de gestion de ludothèque.
Gestion des jeux et des adhérents.
Gestion des for... Cliquez pour télécharger Ludoprêt 974 Application Server (13.2.1.3)974 APPLICATION SERVER (13.2.1.3)Ecommerce, Blogueur, Vitrine, Newsletter, Java IDE, ..., in the cloud et sous haute dispo. Facile... Cliquez pour télécharger 974 Application Server
|