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

Projets ADP Discussion :

Recordset vide avec ADO


Sujet :

Projets ADP

  1. #1
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2009
    Messages : 167
    Points : 118
    Points
    118
    Par défaut Recordset vide avec ADO
    Bonjour,

    Je me connecte à MySql via ODBC sur mon serveur dédié LAMP. La partie attachement des tables au frontal ACCESS fonctionne très bien. La connexion fonctionne.

    Maintenant j'ai besoin de lancer des opérations SQL coté serveur. Je veux donc écrire une fonction à laquelle je passe un SQL et je récupère un recordset ADO.

    Mais ça ne marche pas ! Voila le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim Cnn1 As ADODB.Connection, MonRs As ADODB.Recordset, s As String
     
    Set Cnn1 = New ADODB.Connection
     
    s = "DRIVER={MySQL ODBC 8.0 Unicode Driver};" & "SERVER=xxx.xxx.xxx.xxx  ;" & "DATABASE=mabase;" & "uid=user;" & "pwd=password;" & "Option=3;"
    Cnn1.ConnectionString = s
    Cnn1.Open
    MsgBox (Cnn1.Errors.Count) 'donne 0
     
    Set MonRs = New ADODB.Recordset
    MonRs.Open "SELECT * FROM t_staff", Cnn1, adOpenDynamic, adLockPessimistic
    MonRs.MoveLast
     
    MsgBox (MonRs.RecordCount) 'donne toujours -1, et le SQL exécuté dans PHPMyAdmin renvoie 3 enregistrements
    Quand je lance le SQL coté serveur je récupère 3 enregistrements. Ici il me renvoie toujours -1. Par ailleurs je n'ai pas d'erreur sur la connexion à la base.

    Qu'est-ce que je fais mal ???

    Christian

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 261
    Points : 19 424
    Points
    19 424
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Avez-vous la possibilité d'utiliser acOpenStatic pour la propriété CursorType.

    Il me semble qu'il faut un curseur "static" pour utiliser recordCount.

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2009
    Messages : 167
    Points : 118
    Points
    118
    Par défaut
    Bonsoir,

    Bonne idée, mais même résultat. J'ai essayé avec toutes les configurations et cela ne fonctionne pas.

    Merci pour votre aide.

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 261
    Points : 19 424
    Points
    19 424
    Billets dans le blog
    63
    Par défaut
    C'est étonnant, j'ai essayé en local :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonRs.Open "SELECT * FROM t_staff", Cnn1, adOpenDynamic, adLockPessimistic
    Et ça me renvoie -1

    Par contre quand je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonRs.Open "SELECT * FROM t_staff", Cnn1, , adOpenStatic, adLockOptimistic
    J'obtiens bien le bon nombre d'enregistrements...

    Bizarre
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2009
    Messages : 167
    Points : 118
    Points
    118
    Par défaut
    En ADO sur MySql, ça ne fonctionne pas.

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 261
    Points : 19 424
    Points
    19 424
    Billets dans le blog
    63
    Par défaut
    Sans doute, je n'ai malheureusement pas la possibilité de tester...
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 261
    Points : 19 424
    Points
    19 424
    Billets dans le blog
    63
    Par défaut
    Tu as peut-être vu sur le net, il propose de définir avant l'ouverture la propriété CursorLocation du recordset à adUseClient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set MonRs = New ADODB.Recordset
    MonRs.CursorLocation = adUseClient
    MonRs.Open "SELECT * FROM t_staff", Cnn1, , adOpenStatic, adLockOptimistic
    A tester...

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  8. #8
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2009
    Messages : 167
    Points : 118
    Points
    118
    Par défaut
    En fait le problème vient de :

    MonRs.CursorLocation = adUseClient (qui fonctionne alors très bien)

    Si je veux faire exécuter la requête par le serveur je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonRs.CursorLocation = adUseServer
    et cela ne fonctionne plus !

    Conclusion : ODBC MySql semble ne pas pouvoir exécuter du SQL coté serveur.

    Très curieux !!!!!

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 18/12/2013, 15h33
  2. Réponses: 2
    Dernier message: 27/07/2007, 16h37
  3. incompréhension avec ado
    Par Orgied dans le forum Bases de données
    Réponses: 3
    Dernier message: 19/05/2004, 18h24
  4. probleme avec ADO
    Par k_boy dans le forum Bases de données
    Réponses: 5
    Dernier message: 24/02/2004, 13h07
  5. Bug sur la prorpiété required d'un TField avec ADO ???
    Par denrette dans le forum Bases de données
    Réponses: 6
    Dernier message: 04/11/2003, 11h04

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