IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Erreur DBX avec XE3 et SQL Server 2008


Sujet :

Bases de données Delphi

  1. #1
    Membre confirmé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    520
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 520
    Points : 543
    Points
    543
    Par défaut Erreur DBX avec XE3 et SQL Server 2008
    Bonjour tout le monde,

    Je tourne en rond avec un problème que je n'arrive pas à résoudre.
    J'ai une appli qui se connecte à une base de données SQL Server 2008 à l'aide d'un composant TSQLConnection.
    J'ai un bout de code qui ressemble à ça:

    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
    20
    21
    22
     
    var sqlProc:TsqlStoredProc;
         query:TSQLQuery;
    begin
        sqlProc:=TsqlStoredProc.create(nil);
        sqlProc.SQLConnection:=maConnexion;
        sqlProc.StoredProcName:=maProcedure;
     
        query:=TSQLQuery.create(nil);
        query.SQLConnection:=maConnexion;
     
        sqlProc.Open;
        while not(sqlproc.eof) do
        begin
             query.sql.clear;
             query.sql.add('select monchamp from matable where autrechamp='+sqlproc.fileds[0].asstring);
            //maConnexion.closedatasets;
            //maConnexion.close;
             query.open;
             ....
             sqlproc.next;
         end
    Lors de l'ouverture de la requête, j'ai une erreur:
    La connexion est occupée avec un le résultat d'une autre commande.

    Si je mets l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maConnexion.closedatasets;
    J'ai bien maconnexion.activestatementcount=0 mais l'erreur apparait quand même.
    Si je mets l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maConnexion.close;
    ça fonctionne, mais plus loin dans l'appli j'ai une erreur

    Borland.Data.TDBXError: Erreur DBX : Le pilote n'a pas été correctement initialisé. La bibliothèque client est manquante, n'est pas installée correctement, sa version est incorrecte, ou le pilote n'est pas dans le chemin système.
    Alors que le pilote a bien été initialisé, puisque j'ai fait plusieurs accès à la base de données depuis le lancement de l'appli.
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maConnexion.keepConnection:=false
    pour forcer la réouverture de la connexion mais sans succès
    7 fois à terre, 8 fois debout

  2. #2
    Membre confirmé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    520
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 520
    Points : 543
    Points
    543
    Par défaut
    info complémentaire:
    à un autre endroit du code , j'ai essayé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ///ici ma connexion est ouverte après avoir servi à lire des données
    maConnexion.close;
    maConnexion.open;
    L'appel à maconnexion.open déclenche l'erreur
    Erreur DBX: Le pilote n'a pas été correctement initialisé. La bibliothèque client est manquante, n'est pas installée correctement, sa version est incorrecte, ou le pilote n'est pas dans le chemin système
    Alors que j'ai utilisé la connexion plusieurs fois avant d'arriver là
    7 fois à terre, 8 fois debout

  3. #3
    Membre confirmé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    520
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 520
    Points : 543
    Points
    543
    Par défaut
    Bon, bah je me suis débrouillé
    Pour résumer, je lit les paramètres de connexion dans un fichier XML et comme je suis dans une application service, j'avais dû rajouter Coinitialize(nil) pour ouvrir le fichier XML.
    Une fois tous les paramètres chargés je faisais CoUninitialize et, à priori, c'est ça qui rendait l'application instable.
    7 fois à terre, 8 fois debout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur lors de la connexion à SQL-Server 2008
    Par omar1988 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/03/2011, 22h25
  2. Réponses: 4
    Dernier message: 11/11/2010, 10h39
  3. Erreurs dans le rapport de SQL SERVER 2008 Update Advisor
    Par dens19 dans le forum Administration
    Réponses: 6
    Dernier message: 08/09/2010, 11h33
  4. Réponses: 0
    Dernier message: 30/09/2009, 18h13
  5. Réponses: 0
    Dernier message: 30/09/2009, 18h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo