1. #1
    Membre habitué
    Profil pro
    Inscrit en
    mai 2008
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 232
    Points : 128
    Points
    128

    Par défaut HOuvreConnexion et connexion SQL Server

    Bonjour,
    je développe une application que je souhaite reliée à la base de données d'une application externe; cette base de données est en SQL Server et le connecteur ODBC est configuré pour cette base de données Dans les "Sources de données système" sur le serveur.

    J'ai beau suivre la doc de PCSOFT pour la fonction HOuvreConnexion mais je ne sais pas où se situe mon problème, voici le code que j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SI PAS HOuvreConnexion("MaConnexion",Par_IdentBDD,Par_MdpBDD,Par_ServBDD,Par_BaseBDD,hODBC,hOLectureEcriture) ALORS
    	ErreurInfo()
    FIN
    Par_identBDD et Par_MdpBDD sont les login et mots de passe pour se connecter à la base de données (ceux-ci fonctionnent car je les utilisent pour me connecter au serveur SQL)
    Par_ServBDD contient l'adresse IP du serveur (cette adresse fonctionne car je peux prendre la main sur le serveur avec)
    Par_BaseBDD est le nom de la base de données

    j'aurais voulu savoir si je n'avais pas oublié quelque chose.

    la fonction ErreurInfo renvoie le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Erreur de l'accès ODBC/OLEDB (provider=MSDASQL).<RC>Numéro d'erreur = 170124 <RC> <RC>Echec de l'ouverture de la connexion  :<RC>Source de données <XXX.XXX.XXX.XXX><RC>Provider OLEDB <MSDASQL><RC>Détail de l'erreur système : 	Description = [Microsoft][Gestionnaire de pilotes ODBC] Source de données introuvable et nom de pilote non spécifié<RC>	Source = Microsoft OLE DB Provider for ODBC Drivers<RC>	SQL State = IM002<RC>	Error Number = -2147467259 (0x80004005)<RC>
    Je vous remercie
    Qui vit par le Troll périra par le Troll!

  2. #2
    Expert éminent
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    janvier 2009
    Messages
    3 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : janvier 2009
    Messages : 3 144
    Points : 6 457
    Points
    6 457

    Par défaut

    Bonjour,
    D'après l'aide en ligne de hOuvreConnexion il faut indiquer le nom de la source de données ODBC (configurée dans le panneau de configuration de Windows) et non l'adresse IP du serveur.

    Tatayo.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    mai 2008
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 232
    Points : 128
    Points
    128

    Par défaut

    Bonjour,
    je vous remercie pour votre réponse mais j'ai toujours le même message d'erreur en mettant le nom de la source de données dans la variable Par_ServBDD
    Qui vit par le Troll périra par le Troll!

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    mai 2003
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : mai 2003
    Messages : 86
    Points : 156
    Points
    156

    Par défaut

    Bonjour,

    Il y a plusieurs méthodes:
    1. Variable de type connexion
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      gcnxTest est Connexion
      gcnxTest..Accès		= hOLectureEcriture
      gcnxTest..Utilisateur	= "user"
      gcnxTest..MotDePasse	= "mdp"
      gcnxTest..Provider	= hODBC
      gcnxTest..Source		= "test"
      HOuvreConnexion(gcnxTest)
    2. Avec HDécritConnexion
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      HDécritConnexion("MaConnexion","user","mdp","test","",hODBC)
      HOuvreConnexion("Maconnexion")
    3. Directement dans le HOuvreConnexion
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      HOuvreConnexion("Maconnexion","user","mdp","test","",hODBC)


    elles fonctionnent toutes les 3, je viens de les tester. Si tu as toujours l'erreur c'est que tu as mal déclaré ta source de donnée ODBC. 3 possibilités selon moi, soit elle n'existe pas, soit elle est mal orthographiée, soit tu as déclarée ta source de donnée en 32 bits et ton appli est en 64 bits ou inversement.

    Bon dev,

    Philippe SAINT-BERTIN

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    mai 2008
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 232
    Points : 128
    Points
    128

    Par défaut

    Bonjour,
    je vous remercie pour votre réponse.
    Effectivement, la source de données avait été déclarée en 64 bits et mon appli était en 32 bits.

    j'ai un autre soucis, quand je veux exécuter une requete SQL d'INSERT, j'ai un message d'erreur qui me dit que je n'ai pas de connexion courante alors que je l'ai déclarée avec le HOuvreConnexion avec une variable de type Connexion.

    voici le code que j'utilise:
    ouverture de la connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    MaConnexion est une Connexion
    MaConnexion..Accès = hOLectureEcriture
    MaConnexion..Utilisateur = Par_IdentBDD
    MaConnexion..MotDePasse = Par_MdpBDD
    MaConnexion..Provider = hODBC
    MaConnexion..Source = "qualios"
     
    SI HOuvreConnexion(MaConnexion) ALORS
    	Info("Connexion a la base de données réussie.")
    SINON
    	Erreur("Connexion à la base de données impossible"+RC+ErreurInfo())
    FIN
    exécution de la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    commande = "INSERT INTO "+Par_TableBDD+" (NomGroupe,NumMat,NomUtil,PrenomUtil,NomService,NomQualif) VALUES ('"+nomGroupe+"','"+NumMat+"','"+NomUtil+"','"+PrenomUtil+"','"+NomService+"','"+NomQualif+"')"
    SI PAS SQLExec(commande,"REQIns") ALORS
    	Erreur("Enregistrement de l'utilisateur "+nomGroupe+" | "+NumMat+" | "+NomUtil+" | "+PrenomUtil+" | "+NomService+" | "+NomQualif+" impossible."+RC+ErreurInfo())
    FIN
    Qui vit par le Troll périra par le Troll!

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    mai 2003
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : mai 2003
    Messages : 86
    Points : 156
    Points
    156

    Par défaut

    As-tu changé la connexion de tes fichiers avec un HChangeConnexion() ?

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    mai 2008
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 232
    Points : 128
    Points
    128

    Par défaut

    Oui, et le HChangeConnexion ne me retourne aucune erreur.

    Un fichier de données est créé dans l'analyse avec les rubriques qui sont contenues dans la table de la base de données SqlServer.
    Qui vit par le Troll périra par le Troll!

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur freelance
    Inscrit en
    juillet 2002
    Messages
    2 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : juillet 2002
    Messages : 2 313
    Points : 4 738
    Points
    4 738

    Par défaut

    Bonjour

    Tu mélanges deux modes d'accès : les ordres H et les fonctions SQL

    Vu que tu initialises la connexion par ordre H il faut utiliser HExecuteRequeteSQL (avec paramètre hRequêteSansCorrection fortement conseillé)

    Si tu veux utiliser SQLExec il faut ouvrir la connexion par SQLConnecte

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    mai 2008
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 232
    Points : 128
    Points
    128

    Par défaut

    Bonjour,
    je vous remercie pour votre réponse.

    Effectivement, j'ai voulu tester différentes choses et j'ai mélangé les deux méthodes.

    j'ai réessayé avec la fonction HExecuteRequeteSQL mais j'ai maintenant l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Erreur de l'accès ODBC/OLEDB (provider=MSDASQL).<RC>Numéro d'erreur = 170129 <RC> <RC>Echec de l'ouverture du fichier.<RC>Détail de l'erreur système : 	Description = [Microsoft][ODBC SQL Server Driver][SQL Server]Nom d'objet 'ImportUtilisateurs' non valide.<RC>	Source = Microsoft OLE DB Provider for ODBC Drivers<RC>	SQL State = S0002<RC>	Error Number = -2147217865 (0x80040e37)<RC>	Native Error Number = 208 (0xd0)<RC><RC><RC>	Description = [Microsoft][ODBC SQL Server Driver][SQL Server]Le curseur n'a pas été déclaré.<RC>	Source = Microsoft OLE DB Provider for ODBC Drivers<RC>	SQL State = 37000<RC>	Error Number = -2147217865 (0x80040e37)<RC>	Native Error Number = 16945 (0x4231)<RC>
    j'obtiens cette erreur en exécutant la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "SELECT COUNT(*) AS NB_UTIL FROM "+Par_TableBDD+" WHERE NumMat = '"+NumMat+"'"
    pour vérifier si un enregistrement existe déjà dans la table
    Qui vit par le Troll périra par le Troll!

  10. #10
    Membre émérite
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    1 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2013
    Messages : 1 166
    Points : 2 457
    Points
    2 457

    Par défaut

    Pour inciter des gens à t'aider , je recopie ton message d'erreur de façon lisible :

    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
     
    Erreur de l'accès ODBC/OLEDB (provider=MSDASQL).
    Numéro d'erreur = 170129 
     
    Echec de l'ouverture du fichier.
    Détail de l'erreur système : 	Description = [Microsoft][ODBC SQL Server Driver][SQL Server]Nom d'objet 'ImportUtilisateurs' non valide.
    	Source = Microsoft OLE DB Provider for ODBC Drivers
    	SQL State = S0002
    	Error Number = -2147217865 (0x80040e37)
    	Native Error Number = 208 (0xd0)
     
     
    	Description = [Microsoft][ODBC SQL Server Driver][SQL Server]Le curseur n'a pas été déclaré.
    	Source = Microsoft OLE DB Provider for ODBC Drivers
    	SQL State = 37000
    	Error Number = -2147217865 (0x80040e37)
    	Native Error Number = 16945 (0x4231)

  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    mai 2003
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : mai 2003
    Messages : 86
    Points : 156
    Points
    156

    Par défaut

    Là le message il dit que ta table n'existe pas

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    mai 2008
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 232
    Points : 128
    Points
    128

    Par défaut

    Bonjour,

    c'est bizarre car j'enregistre dans un fichier texte la commande que je veux exécuter et si je la colle dans SQL Server Management Studio, elle s'exécute correctement et me renvoie le bon résultat.
    La table existe bien.
    Qui vit par le Troll périra par le Troll!

  13. #13
    Membre confirmé

    Profil pro
    Inscrit en
    mars 2002
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 1 065
    Points : 556
    Points
    556

    Par défaut

    J'ai rencontré une fois ce problème (mais pas avec WD)
    Il s'agissait dans mon cas d'un oubli de spécifier la base de données que je voulais utiliser.
    Quand on créé le lien ODBC on définit le serveur, le login etc et l'initial catalog, en d'autres termes la base à utiliser

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    mai 2008
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 232
    Points : 128
    Points
    128

    Par défaut

    D'accord, je vais voir avec ceux qui ont configuré le connecteur ODBC si la base de données est bien spécifiée.
    Par contre, ceux qui ont configuré le connecteur ont installé une application qui l'utilise et cette application fonctionne correctement donc je suppose que le connecteur a du être correctement configuré.

    Je vous remercie pour votre réponse.
    Qui vit par le Troll périra par le Troll!

  15. #15
    Membre confirmé

    Profil pro
    Inscrit en
    mars 2002
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 1 065
    Points : 556
    Points
    556

    Par défaut

    une application qui l'utilise et cette application fonctionne correctement
    Vous utilisez le même login ?

  16. #16
    Expert éminent
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    janvier 2009
    Messages
    3 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : janvier 2009
    Messages : 3 144
    Points : 6 457
    Points
    6 457

    Par défaut

    L'autre application peut très bien spécifier d'elle-même la base à utiliser.

    Tatayo.

  17. #17
    Membre éprouvé
    Profil pro
    Inscrit en
    mars 2003
    Messages
    528
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : mars 2003
    Messages : 528
    Points : 1 115
    Points
    1 115

    Par défaut

    Bonjour,

    sinon pour être sûr envoyer un sqlexec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    USE MaDataBaseOuSeTrouveMaTable
    puis l'exécution de la requête.

    Cordialement

Discussions similaires

  1. connexion sql server sécurisé
    Par liliprog dans le forum ASP.NET
    Réponses: 21
    Dernier message: 08/06/2005, 20h31
  2. [DEBUTANT] Connexion à SQL Server
    Par jesus144 dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/03/2005, 12h38
  3. [C#] Problème de connexion sql server 2000
    Par rabbiwan dans le forum ASP.NET
    Réponses: 8
    Dernier message: 22/12/2004, 16h21
  4. Connexion à SQL Server avec ASP
    Par ayobo dans le forum ASP
    Réponses: 3
    Dernier message: 25/05/2004, 17h06
  5. Connexion SQL Server
    Par Bart51 dans le forum MS SQL-Server
    Réponses: 3
    Dernier message: 06/05/2004, 10h49

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