Traitée Query Access paramétrée avec ADODB

  • lundi 27 février 2012 08:26
     
      A du code

    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

Toutes les réponses

  • mercredi 29 février 2012 13:21
     
     
    personne n'a une petite idée ?
  • mercredi 7 mars 2012 11:42
     
     Traitée

    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.