Bonjour,
Donc j'utilise l'outil de builder pour créer un service "Service Application".
Le but de mon service est de transférer les données d'une table vers une autre, j'ai ainsi du rajouter un TDatabase et TQuery dans mon Service Application.
Voici le code du transfert il marche correctement dans une fiche vcl avec un TTimer.
Mon problème je n'arrive pas à exécuter mon service après son l'installation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Query1->SQL->Clear(); Query1->SQL->Add( "INSERT INTO Tab2(Nom1) SELECT Nom from Tab where validation_t = 1"); Query1->ExecSQL(); //supprime Query1->SQL->Clear(); Query1->SQL->Add("Delete FROM Tab where validation_t = 1"); Query1->ExecSQL() ;
Test effectuer:
-Si ma Database est directement connecté dans les propriétés, le service ne veut pas s'exécuter (Message d'erreur le programme à prit trop temps à s'exécuter).
-Si ma Database n'est pas directement connecté mais je veux la connecter lors du démarrage du service exemple:
Problème (Message d'erreur le service à besoin d'autre service ou programme pour fonctionner.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void __fastcall TService1::ServiceStart(TService *Sender, bool &Started) { Database1->Connected=true; }
-Autre Test mais toujours les mêmes problème:
J'ai essayé d'utiliser un Thread en ajoutant un ObjetThread à mon projet mais non :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 void __fastcall TService1::ServiceExecute(TService *Sender) { while(!Terminated) { Service1->Database1->Connected=true; Service1->Query1->SQL->Clear(); Service1->Query1->SQL->Add( "INSERT INTO Tab2(Nom1) SELECT Nom from Tab where validation_t = 1"); Service1->Query1->ExecSQL(); //supprime Service1->Query1->SQL->Clear(); Service1->Query1->SQL->Add("Delete FROM Tab where validation_t = 1"); Service1->Query1->ExecSQL() ; Service1->Database1->Connected=false; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 void __fastcall MyThread::Execute() { while(!Terminated) { Service1->Database1->Connected=true; Service1->Query1->SQL->Clear(); Service1->Query1->SQL->Add( "INSERT INTO Tab2(Nom1) SELECT Nom from Tab where validation_t = 1"); Service1->Query1->ExecSQL(); //supprime Service1->Query1->SQL->Clear(); Service1->Query1->SQL->Add("Delete FROM Tab where validation_t = 1"); Service1->Query1->ExecSQL() ; Service1->Database1->Connected=false; } }Donc à ce jour je suis un peu perdu j'ai regardé sur internet mais en vain, j'ai utilisé un tutoriel voici le lien http://www.kbcafe.com/articles/TService.pdf j'ai du rater quelque chose mais je n'y arrive pas donc si quelqu'un peu me mettre sur la voie je vous en remercie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void __fastcall TService1::ServiceExecute(TService *Sender) { while(!Terminated) { ServiceThread->ProcessRequests(true); MyThread1->Resume(); } }
Cordialement KISEKI.
Partager