Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : HELP (je vais devenir fou) : Problème de recup de données MySQL [ Base de données / SQL ] (Polack77)

jeudi 12 avril 2007 à 11:57:14 | HELP (je vais devenir fou) : Problème de recup de données MySQL

Polack77

Bonjour,
J'ai un problème pour recupérer des données d'une base MySQL et je ne comprend pas ce qui pose problème (j'ai bien sure installé une base MySQL et un driver ODBC).
J'ai donc une base de données MySQL sur la quel je me connect et tente de récup des données. J'ai dévelopé un module de classe pour communiquer avec ma base (très inspirer d'un code trouver sur CodeS SourceS il y à quel que temps, merci à celui/celle qui l'à posté ici). Voila un bout du code de cette classe :
-------------------------------------------------------
Private connex As ADODB.Connection

Private Sub Class_Initialize()
  Set connex = New ADODB.Connection
End Sub

Public Sub etablir_connec(ByRef Serveur As String, ByRef BaseDeDonnées As String, ByRef User As String, ByRef Password As String)
  On Error GoTo Erreur
  connex.CursorLocation = adUseServer
  connex.Open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=" & Serveur & ";DATABASE=" & BaseDeDonnées & ";USER=" & User & ";PASSWORD=" & Password & ";OPTION=" & 85 & "" 'lalala
  Exit Sub
Erreur:
MsgBox "Impossible de trouver la base de données."
End Sub

Public Function requete(ByVal rs_sql As String, ByRef rs_sub As ADODB.Recordset) As Boolean
  If connex.State = 0 Then
    requete = False
    Exit Function
  End If
  If connex.State = 1 Then
    Set rs_sub = New ADODB.Recordset
    rs_sub.ActiveConnection = connex
    On Error GoTo Erreur
    rs_sub.Open rs_sql, connex, adOpenDynamic, adLockOptimistic
    If rs_sub.EOF Then
      requete = False '*******************************************************************
    Else
      requete = True
    End If
  Exit Function
Erreur:
MsgBox "Une erreur c'est produite avec.... " & rs_sql
requete = False
End Function

Public Function EtatConnection() As Boolean
    EtatConnection = connex.State
End Function
-------------------------------------------------------
Mes tables sont : Articles,Vecteur et AnalysesSpecifiques. Pour le momant seul AnalysesSpecifiques contient des données (3 ligne pour être exacte)
Un objet global "Connexion" est déclarer et base sur la classe d'ont j'ai mit le code plus haut.
Je me connect donc, à premierre vue pas de problème, la connection s'execute sans erreur, et la fonction EtatConnection (soit la valeur de connex.State) est à 1 (donc si je ne me trompe pas la connection est OK). Si j'execute la requette "SELECT COUNT(*) FROM AnalysesSpecifiques" l'objet passée à la fonction 'requete' contient la valeur "3". Donc j'ai bien 3 ligne de données dans cette base MAIS et c'est là ma question losque j'execute la requette "SELECT * FROM AnalysesSpecifiques" mon objet est vide et le compilo me dit que je ne peut pas faire "DonneesBdD.GetString(adClipString, -1, ";", "|", "NULL")" sur un objet fermer!!! Et en plus la fonction requete me retourne faux (valeur retourné pare la ligne marqué d'*). Voila le code que j'execute pour avoir des données :

--------------------------------------------------------
Dim RetourDonnees As ADODB.Recordset
Dim Donnees as String
if Connexion.requete("SELECT * FROM AnalysesSpecifiques", RetourDonnees) then
    Donnees = RetourDonnees.GetString(adClipString, -1, ";", "|", "NULL")
else
    msgbox "Erreur1"
endif

----------------------------------------------------------

Le message box s'execute alors (message "Erreur1" bien sure)
Or je rapel que si j'execute
--------------------------------------------------------
Dim RetourDonnees As ADODB.Recordset
Dim Donnees as String
if Connexion.requete("SELECT COUNT(*) FROM AnalysesSpecifiques", RetourDonnees) then
    Donnees = RetourDonnees.GetString(adClipString, -1, ";", "|", "NULL")
else
    msgbox "Erreur1"
endif

----------------------------------------------------------
alors j'ai la valeur 3 dans Donnees.

Je ne comprand plus rien moi HELP!!!
Je pense avoir été sufisament précis mais si vous avez la moindre question posé là.

PS : Si quel qu'un sais à quois serv l'opion à 85 (ligne avec le commentaire 'lalala) je serais contant de le savoir.
Merci

Amicalement


jeudi 12 avril 2007 à 15:21:38 | Re : HELP (je vais devenir fou) : Problème de recup de données MySQL

Polack77

Heeeeeee
Je me sens tout seul

Pouriez vous testé si ce code est fonctionel chez vous et me dire si vous avez une erreur ou si tout fonctione bien.

Merci

Amicalement


jeudi 12 avril 2007 à 16:16:07 | Re : HELP (je vais devenir fou) : Problème de recup de données MySQL

Polack77

Je crois que tout ce qui me rester à faire est de foutre mettre mon PC par la fenêtre (si quelqu'un est en dessous pendant ce temps et bas temps pie) et dire à mon parton qu'un pigeon géant à voulut le prendre pour en faire sont nit. Dangereux les OGM...

Ou alors je saute
AIDEZ MOI JE CRAQUE!!!

Un simple message de soutien serais le bien venue


PS : J'ai encor tester mes requête SQL (avec "DBACentral for MySQL") et évidemment elle fonctionne toute!!!! Comme si ça allait être simple .

Amicalement


vendredi 13 avril 2007 à 08:47:38 | Re : HELP (je vais devenir fou) : Problème de recup de données MySQL

Nicko11

Salut,

je vois que tu es passé au MySQL et que tu as encore des soucis. J'en suis désolé surtout que tu ne semblais pas loin de la solution avec ton ancienne base.

As tu essayé le bout de prog que je t'ai filé pour l'affichage des tables pour voir si ta connexion fonctionne?

J'ai vu aussi que tu ne mettais pas de "rs.CursorLocation = adUseServer". De plus, moi j'utilise toujours "adUseClient" mais je sais pas pourquoi en fait. Encore un chose, l'utilisateur que tu entres, a t il le droits de modifier les données de la base.

A+


vendredi 13 avril 2007 à 09:38:46 | Re : HELP (je vais devenir fou) : Problème de recup de données MySQL

Polack77

Bonjour,
   Oui j'avais récup les nom des bases en PostGres (j'ai quand même gardé le code sous le coude au cas où en final quelqu'un aurais une solution à me faire tester, moi je ne sais plus quois faire, j'ai fais des testes supplémentaire et je vais posté ça sur l'autre topic peut être que ça inspirera quelqu'un).
   Je n'ai pas fais le teste avec MySQL, mais vue que j'arrive à insérer des données dans ma base la connection est OK. De part et d'autre (sois sous MySQL et PostGres) je me connecte à mes base avec des logiciels tiere ("DBACentral for MySQL" pour MySQL et "ISQL for PgSQL" pour PostGres) et mes requête s'execute sans problème avec les login/password que j'utilise dans mon apli donc ce n'est pas ça le problème.

Je vient de faire le teste avec "adUseClient" et une nouvelle erreur me remonte :
-------------------------
Run-time error '-2147217887 (80040e21)':

Une opération en plusieurs étapes a généré des erreurs. Vérifiez chaque valeur d'état.
-------------------------
Heeeeee Quois, ques que ca veut dire encors ça???

Du coup j'aitenté de détruire mon objet entre chaque appel de ma fonction requete et cette erreur apparais toujours???
J'ai même testé de déconnecté mon appli entre chaque requete et ça ne marche pas non plus (toujour en supprimant l'objet "ADODB.Recordset") mais rien!!!
Une idée???

Amicalement


vendredi 13 avril 2007 à 10:18:35 | Re : HELP (je vais devenir fou) : Problème de recup de données MySQL

Nicko11

OK, je prefererai que tu fasses un mini projet dans lequel tu mets juste la connexion connex et le jeu d'enregistrment rs_sub :

Ensuite, tu me dis que ta requete fonctionne sous tes soft tiers. Donc, si cela se trouve, ta connexion n'est pas fausse en tant que connexion, mais peut n'est elle pas appropriée par rapport a ce que tu dois faire (paramètre manquant). Je ne connais pas bien les autres bases que access mais j'ai jamais vu une connexion comme ca.

connex.Open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=" & Serveur & ";DATABASE=" & BaseDeDonnées & ";USER=" & User & ";PASSWORD=" & Password & ";OPTION=" & 85 & "" 'lalala

La mienne donne ca (avec access) :

acn.Open "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Connexion;Password =" & MDP & ";Data Source=" & Chemin_DataSource & ";Jet OLEDB:System database=" & Chemin_System_DataBase & ";Jet OLEDB:Registry Path=" & Chemin_Registry_Path & ";"

Tu as un paramètre driver que je n'ai jamais vu, j'ai plutot la notion de provider (tape rs.sub. et normalement c'est une propriété de l'objet). Je regarderais sur VBFrance comment ils font pour se connecter en MySQL.

Pour finir, avec ton logiciel tiers, n'as tu pas un moyen de connaitre la connexion qu'il emploie.

Peut etre que je te dis de la mer.. mais j'essaie de voir tous les chemins possibles car une connexion et une requete qui fonctionnent separemment et pas ensemble, c'est bizarre.



lundi 16 avril 2007 à 12:45:00 | Re : HELP (je vais devenir fou) : Problème de recup de données MySQL

Polack77

Bonjour, désol pour le temps à répondre mais j'ai dù faire autre chose en attendant (connection à une base PostGres) je vais bientôt me remétre à ce problème.
Nicko11 : Sais tu ou trouver une liste de provider (tu m'a fais découvir cette façon de ce connecté)? Plus rapide qu'une connection par driver? Tu me dis de tapé "rs.sub.", heeeeee, où ça??? rs c'est quel objet???

Amicalement




Cette discussion est classé dans : base, données, rs, requete, connex


Répondre à ce message

Sujets en rapport avec ce message

Ouverture d'un recordset : type incompatible [ par Lilian ] Aidez-moi s'il vous plaît je vais devenir fou !Je bosse sur un projet pour lequel je dois chercher des données dans une base dBASE IV.Dans un module j Envoyer plusieurs requete à la base [ par alex1er ] Bonjour, Voila le probleme : J'ai 26000 insert à effectuer dans une base de données. Pour l'instant, je fais autant de 'ExecuteCommand(requete)' que d Requete sur une Base de données ACCESS [ par eludovic ] Bonjour,Je voudrais ssavoir comment faire un filtre dans une requete Access sur champ contenant des chiffres et des lettres, je voudrais filtres les c access a une base sur Reseau [ par elifqaoui ] bonjour,je developpe une application utilisant ADO sur un monoposte actuellement, je prévois de mettre sur le reseau la base de données utilisée par l RecordSet et base de données [ par macflyFR ] Bonjourje récupère des données XML dans un recordset de la maniere suivante:Dim rs As New adodb.Recordsetrs.open fichierXMLj'aimerais ensuite pouvoir Problème effacement base données [ par vichenzo ] Salut à tousJ'ai une base de données sans contrôle DATA reliée avec une liste box.Je souhaite selectionner un élément de la listbox et l'effacer de ce Acces a une base de données access [ par Buissonsf ] salut, j'ai un légér problème d'acces a une base de données access avec les contrôles data d'origine...en fait lorsque je fais une requete select ça m erreur -2147467259 (80004005) VB et access [ par gueststar ] j'ai développé une application qui crée une base de données access vide et qui importe des données d'un classeur Excel pour les placer dans cette base base de données [ par mathieu57100 ] bonjour, une ptite question avant le week end...J'ai une appli qui pointe dsur une base de doonée.La connection entre les 2 se fait bien.J'ai une comb Requete Insertion dans une Base de données [ par Mr Capone ] Bonjour, voilà j'essaie d'inserer des données dans une base de données depuis VB6... voici mon code Private Sub Form_Load() Dim cnx As New ADODB.Con


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.