tu sais quel message d'erreur il te met dans le services?
tu sais quel message d'erreur il te met dans le services?
unbelivable ! Ca marche ! (avec le Prompt à false et le password dans la ConnectionString...)
Bon, ben j'ai plus qu'a modifier le code dans mon service et à tester. Merci d'avance.
Dunsany
Nul homme ne se baigne deux fois dans le même fleuve car, la seconde fois, ce n'est plus le même fleuve et ce n'est plus le même homme. (Héraclite)
tu veux dire, que ca marche en appli ??
<edit> Chouette ! j'ai retrouvé ma tête ! </edit>
Oui, ça marche en appli. Je vais essayer en serveur...(ca vient de la présence du mdp dans la ConnectionString, c'est certain).
Dunsany
Nul homme ne se baigne deux fois dans le même fleuve car, la seconde fois, ce n'est plus le même fleuve et ce n'est plus le même homme. (Héraclite)
Hum...Ca a pas l'air de passer en service...Gasp. Je continue des tests.
Dunsany
Nul homme ne se baigne deux fois dans le même fleuve car, la seconde fois, ce n'est plus le même fleuve et ce n'est plus le même homme. (Héraclite)
Après plusieurs tests, mon serveur (en service) échoue à écrire dans la base. Ca parait incroyable. Ca vient de la Classe Tservice de Borland ou de MS SQL Server ? Ou de l'OS ?
Nul homme ne se baigne deux fois dans le même fleuve car, la seconde fois, ce n'est plus le même fleuve et ce n'est plus le même homme. (Héraclite)
Salut !
Après de longues recherches (il est 4h30 du mat !), j'ai fini par trouver ce qui merde...
Déjà l'erreur etait (j'ai du mettre un log !) :En fait, j'ai trouvé deux solutions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 08/08/2004 03:09:47 : CoInitialize n'a pas été appelé
mettre en premier dans le ServiceStartmettre en premier dans le ServiceStart
Code : Sélectionner tout - Visualiser dans une fenêtre à part application.Initialize;Je ne comprends pas trop pourquoi ca marche grâce à ça... Je suis preneur d'explications ! (Borland est pas tres bavard)
Code : Sélectionner tout - Visualiser dans une fenêtre à part CoInitialize(nil);
Voilà Dunsany ! Dis moi si ca le fait pour toi !
J'espère un jour avoir besoin de tout ça !
En fait tu as deux types de service sous Delphi (D6 en tout cas): Service & Service Application. Le premier ne se comporte pas comme une application (il n'a pas de Unit Projet). Le second est un service qui hérite des propriétés et méthodes d'une application. Il dispose d'une Unit Projet (que l'on peut consulter en faisant Projet/voir le source).
J'avais choisi de faire un service application, donc pas de pb pour la méthode Application.Initialize (elle est inscrite en standard dans l'Unit Projet).
Fausse joie, mais merci qd même !
Dunsany
Nul homme ne se baigne deux fois dans le même fleuve car, la seconde fois, ce n'est plus le même fleuve et ce n'est plus le même homme. (Héraclite)
Je viens de voir dans un forum US qu'un service n'initialise pas COM à l'inverse d'une application classique. Il faut donc effectivement utiliser CoInitialize(nil); dans la procédure OnCreate du service et CoUnInitialize(); dans la procédure OnDestroy du service (ne pas oublier de mettre ActiveX en uses).
CoInitialize pour Initilisation de l'interface COM (sur laquelle les composants ADO sont basés).
N'empêche ça marche toujours pas...
Nul homme ne se baigne deux fois dans le même fleuve car, la seconde fois, ce n'est plus le même fleuve et ce n'est plus le même homme. (Héraclite)
Soit ! Mais moi aussi, j'ai fais un service Application, et pour autant, (même si dans le projet...) il faut que je mette Application.Initialise dans le ServiceStart ! Sinon, cela ne fonctionne pas.Envoyé par Dunsany
De plus, moi, avec CoInitialize(nil); ca marche quand je le met dans le ServiceStart...
Une petite question, en passant, ton ADOConnection n'est pas activé par défaut ??? Si oui, ce n'est pas une tres bonne idée... Il faudrais mieux l'activé après le CoInitialize(nil);
Donne moi des news !
on en est où ??
Après quelques jours de repos mérité, je peut apporter le tag résolu a ce pb. Tag qui revient de droit à NoisetteProd comme chacun l'aura compris.
Merci à tous.
Dunsany
Nul homme ne se baigne deux fois dans le même fleuve car, la seconde fois, ce n'est plus le même fleuve et ce n'est plus le même homme. (Héraclite)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager