none
Query Access paramétrée avec ADODB RRS feed

  • Question

  • Bonjour à tous,

    un étrange phénomème se présente :

    je me connecte à une base de données Access avec ADODB, dans cette DB il y a une query paramétrée que j'execute avec ADODB.

    Quand j'exécute cette query directement dans ACCESS, j'ai un résultat correct (clause where), mais lorsque je l'exécute via ADODB on dirait que la clause where est zappée (le filtre n'est pas appliqué).

    voici le code :

    cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & DBSource
        Set cmd.ActiveConnection = cnn
        cmd.CommandType = adCmdTable
        cmd.Parameters.Append cmd.CreateParameter("[Date ? (xx/xx/xxxx)]", adDBDate, adParamInput, 8, MyDate)
        cmd.CommandText = "[Query 01 Help Consolidation per Goods Recipient]"
        Set rst = cmd.Execute()

    J'ai essayé d'exécuter cette même query avec DAO et là, ça fonctionne très bien mais c'est beaucoup plus lent que ADODB.

    Pouvez-vous m'aider à résoudre ce mystère ?

    Merci beaucoup

    Greg

    lundi 27 février 2012 08:26

Réponses

  • Si j'ai bien compris, ta requête est en fait définie comme cela:

    cmd.CommandText = "[Query 01 Help Consolidation per Goods Recipient]"

    "Query 01 ...." est le nom que tu as donné à ta "vue" ACCESS.

    J'imagine que la clause WHERE paramétrée est incluse dans ta table "Query 01".

    Si mes suppositions sont correctes, alors ACCESS peut résoudre ta commande parce qu'il a accès à la définition de "Query 01", et qu'il peut y injecter la valeur choisie pour tes paramètres.

    En revanche, depuis l'extérieur d'ACCESS, cela ne marche pas parce que ADODB ne transmet pas les paramètres. La raison est que la requête "[Query 01 Help Consolidation per Goods Recipient]" est une requête directe de table, donc non paramétrée.

    mercredi 7 mars 2012 11:42

Toutes les réponses

  • personne n'a une petite idée ?
    mercredi 29 février 2012 13:21
  • Si j'ai bien compris, ta requête est en fait définie comme cela:

    cmd.CommandText = "[Query 01 Help Consolidation per Goods Recipient]"

    "Query 01 ...." est le nom que tu as donné à ta "vue" ACCESS.

    J'imagine que la clause WHERE paramétrée est incluse dans ta table "Query 01".

    Si mes suppositions sont correctes, alors ACCESS peut résoudre ta commande parce qu'il a accès à la définition de "Query 01", et qu'il peut y injecter la valeur choisie pour tes paramètres.

    En revanche, depuis l'extérieur d'ACCESS, cela ne marche pas parce que ADODB ne transmet pas les paramètres. La raison est que la requête "[Query 01 Help Consolidation per Goods Recipient]" est une requête directe de table, donc non paramétrée.

    mercredi 7 mars 2012 11:42