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

    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 en abondance, 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


    Un formulaire de contrôle des disponibilités du matériel sur une période donnée :
    Disponibilité du matériel

    ça permet de voir l'état du "stock" de matériel maintenant et dans le futur

    Quand on a la tête dans le guidon,...

  3. #3
    Membre régulier
    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

    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 en abondance, 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


    Un formulaire de contrôle des disponibilités du matériel sur une période donnée :
    Disponibilité du matériel

    ça permet de voir l'état du "stock" de matériel maintenant et dans le futur

    Quand on a la tête dans le guidon,...

  5. #5
    Membre régulier
    En ADO sur MySql, ça ne fonctionne pas.

  6. #6
    Rédacteur/Modérateur

    Sans doute, je n'ai malheureusement pas la possibilité de tester...
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information en abondance, 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


    Un formulaire de contrôle des disponibilités du matériel sur une période donnée :
    Disponibilité du matériel

    ça permet de voir l'état du "stock" de matériel maintenant et dans le futur

    Quand on a la tête dans le guidon,...

  7. #7
    Rédacteur/Modérateur

    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 en abondance, 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


    Un formulaire de contrôle des disponibilités du matériel sur une période donnée :
    Disponibilité du matériel

    ça permet de voir l'état du "stock" de matériel maintenant et dans le futur

    Quand on a la tête dans le guidon,...

  8. #8
    Membre régulier
    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 !!!!!