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

    Informations forums :
    Inscription : mai 2008
    Messages : 250
    Points : 131
    Points
    131

    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 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : janvier 2009
    Messages : 3 276
    Points : 6 923
    Points
    6 923

    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
    250
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 250
    Points : 131
    Points
    131

    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 actif
    Homme Profil pro
    Inscrit en
    mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : mai 2003
    Messages : 164
    Points : 276
    Points
    276

    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
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

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

    Informations forums :
    Inscription : mai 2008
    Messages : 250
    Points : 131
    Points
    131

    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 actif
    Homme Profil pro
    Inscrit en
    mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : mai 2003
    Messages : 164
    Points : 276
    Points
    276

    Par défaut

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


    N'hésitez à lever le pouce si mon aide vous a été utile.

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

    Informations forums :
    Inscription : mai 2008
    Messages : 250
    Points : 131
    Points
    131

    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 318
    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 318
    Points : 4 743
    Points
    4 743

    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
    250
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 250
    Points : 131
    Points
    131

    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
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    1 534
    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 534
    Points : 3 190
    Points
    3 190

    Par défaut

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

    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)
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

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

    Informations forums :
    Inscription : mai 2003
    Messages : 164
    Points : 276
    Points
    276

    Par défaut

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


    N'hésitez à lever le pouce si mon aide vous a été utile.

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

    Informations forums :
    Inscription : mai 2008
    Messages : 250
    Points : 131
    Points
    131

    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 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 1 103
    Points : 568
    Points
    568

    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
    250
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 250
    Points : 131
    Points
    131

    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 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 1 103
    Points : 568
    Points
    568

    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 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : janvier 2009
    Messages : 3 276
    Points : 6 923
    Points
    6 923

    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
    539
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : mars 2003
    Messages : 539
    Points : 1 148
    Points
    1 148

    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

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    mai 2008
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 250
    Points : 131
    Points
    131

    Par défaut

    Bonjour,
    je suis désolé de répondre après tant de temps, mais j'ai du mettre en stand by ce projet pendant une dizaine de jours pour une urgence chez un autre client.

    J'ai passé l'ouverture de la connexion en SqlConnecte; la connexion se fait bien. Par contre lorsque je veux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    commande2 = "SELECT * FROM Matable"
    TableSupprimeTout(Table1)
    SI PAS SQLExec(commande2,"REQIMPORTUTIL") ALORS
    	SQLInfoGene("REQIMPORTUTIL")
    	Erreur(SQL.MesErreur)
    SINON
    	TANTQUE SQLAvance("REQIMPORTUTIL") = 0
    		TableAjouteLigne(Table1,SQLLitCol("REQIMPORTUTIL",1),SQLLitCol("REQIMPORTUTIL",2),SQLLitCol("REQIMPORTUTIL",3),SQLLitCol("REQIMPORTUTIL",4),SQLLitCol("REQIMPORTUTIL",5),SQLLitCol("REQIMPORTUTIL",6),SQLLitCol("REQIMPORTUTIL",7))
    	FIN
    FIN
    j'obtient le message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [Microsoft][Gestionnaire de pilotes ODBC] Longueur de chaine ou de mémoire tampon non valide
    J'ai vu que d'autres personnes avaient ce message d'erreur sur google mais je n'ai pas vu de réponse probante.
    Sur le site de Microsoft, ils indiquent que cela viendrait de la taille du nom de la table qui dépasse les 18 caractères mais le nom de ma table fait moins de 18 caractères.

    Est-ce que vous savez d'où peut provenir cette erreur?

    Je vous remercie
    Qui vit par le Troll périra par le Troll!

  19. #19
    Membre expérimenté Avatar de romulus001
    Homme Profil pro
    Développeur VB.NET et Windev (22) sur produits SAGE ligne 100
    Inscrit en
    mai 2009
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur VB.NET et Windev (22) sur produits SAGE ligne 100

    Informations forums :
    Inscription : mai 2009
    Messages : 1 103
    Points : 1 302
    Points
    1 302

    Par défaut

    Bonjour,

    Pourquoi ne faites vous pas une connexion directe avec sql serveur?

    2 remarques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    commande2 = "SELECT * FROM Matable"
    à remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    commande2 = "SELECT Champ1 ,Champ2,..... FROM Matable"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TANTQUE SQLAvance("REQIMPORTUTIL") = 0
    		TableAjouteLigne(Table1,SQLLitCol("REQIMPORTUTIL",1),SQLLitCol("REQIMPORTUTIL",2),SQLLitCol("REQIMPORTUTIL",3),SQLLitCol("REQIMPORTUTIL",4),SQLLitCol("REQIMPORTUTIL",5),SQLLitCol("REQIMPORTUTIL",6),SQLLitCol("REQIMPORTUTIL",7))
    	FIN
    à remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLTable("REQIMPORTUTIL", Table1)
    Par contre, il manque dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLFerme("REQIMPORTUTIL")
    Chat alors!

    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    mai 2008
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 250
    Points : 131
    Points
    131

    Par défaut

    Bonjour,
    je vous remercie pour votre réponse.

    Qu'est-ce que vous entendez par connexion directe?

    je vais faire la modif pour les codes, ce sera plus propre.

    J'ai effectivement oublié de fermer la requete mais de toute façon, j'ai mon erreur lors de l'exécution de celle ci.
    Qui vit par le Troll périra par le Troll!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

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

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