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

Requêtes et SQL. Discussion :

Transfert des données d'une requête paramétrée de Access vres Excel


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 69
    Points : 58
    Points
    58
    Par défaut Transfert des données d'une requête paramétrée de Access vres Excel
    Bonjour,
    voilà le problème :
    j'ai un formulaire qui permet à l'utilisateur de choisir plusieurs options. J'ai une requête nommée "qryChoixMultiple" qui se construit en fonction des choix de l'utilisateur. Les données s'affiche dans une zone de liste. Jusqu'ici tout va bien, la requête fonctionne bien. Je souhaite en plus transférer les données de la requête vers excel. Lorsque la requête n'a aucune condition ca marche bien, mais lorsqu'il y des conditions il y à une erreur d'exécution '3061' : Trop peu de paramètres. 1 attendu.
    Le problème vient de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rec = CurrentDb.OpenRecordset("qryChoixMultiple", dbOpenDynaset)
    j'ai testé ma requête dans tout les sens, elle affiche bien les valeurs voulues quelque soit les conditions.
    j'ai testé directement avec une instruction SQL non paramétrée et ca marche bien.
    Je ne sait plus trop vers où chercher le problème!!!
    peut être que quelqu'un à déjà eu ce cas.
    merci à tous pour votre aide

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 69
    Points : 58
    Points
    58
    Par défaut
    Après une longue recherche je me suis aperçu qu'il fallait peut être dans ce cas utiliser la déclaration PARAMETERS dans ma requête, déclaration que je découvre!!
    une partie de ma requête est constituée ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Not IsNull(Me![ListParamètre]) Then
    strWHERE = strWHERE + " And (([MaTable].MonChamp) = Me![ListParamètre].[Value])"]
    Me![ListParamètre] est la zone de liste où l'utilisateur fait un choix. J'ai essayé d'inclure la déclaration PARAMETERS ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    strSQL = "PARAMETERS Me![ListParamètre] TEXT;"
    strSQL = strSQL + " SELECT " + strSELECT
    strSQL = strSQL + " FROM [MaTable]"
    strSQL = strSQL + " WHERE" + strWHERE
    Apparement ce n'est pas la bonne synthaxe, ça ne fonctionne pas mieux!!
    Si quelqu'un à une petite idée....pour l'info je suis sur Access97 et j'ai coché dans références : Microsoft DAO 3.5 Object Library
    merci pour votre aide.

  3. #3
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Bjr,

    Il faut passer par un objet QueryDef et utiliser la collection Parameters pour mettre à jour les paramètres.
    Il doit y avoir des exemples d'utilisation sur le forum et/ou la FAQ.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 69
    Points : 58
    Points
    58
    Par défaut
    merci Arkham46 pour ton intervention
    je cherche, mais c'est toujours le hic!!!
    je ne suis pas encore à l'aise avec les collections mais je m'accroche
    Pour mieux comprendre, mon instruction SQL est construite de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'si l'utilisateur à choisit un paramètre
    If Not Is Null(Me![ListParamètre] Then
    strWHERE = strWHERE + "And (([MaTable].[paramètre]) = Me![ListParamètre].[Value])"
    End If
    'si l'utilisateur à choisit une solution
    If Not Is Null(Me![ListSolution] Then
    strWHERE = strWHERE + "And (([MaTable].[solution]) = Me![ListSolution].[Value])"
    End If
    j'ai repris une partie de mon code pour créer un objet queryDef :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Dim db As DAO.Database, rec As DAO.Recordset
    Dim qdf As QueryDef
    Dim strParm As String
     
    'dénit la clause parameters pour le choix du paramètre
    strParm = "PARAMETERS [Paramètre] TEXT;"
     
    'construction de la chaîne SQL
    strSQL = strParm + " SELECT " + strSELECT
    strSQL = strSQL + " FROM [MaTable]"
    strSQL = strSQL + " WHERE" + strWHERE
     
    'cré  un objet queryDef
    Set db = CurrentDb
    Set qdf = db.CreateQueryDef("requête transfert", strSQL)
     
    'cré un recordset
    Set rec = qdf.OpenRecordset(dbOpenDynaset)
    ensuite j'ai le code pour transférer les données. Je ne suis pas très à l'aise avec les collections...je pense que je n'utilise pas comme il faut le terme PARAMETERS. J'ai toujours le même message d'erreur('trop peu de paramètre')
    je ne déclare pas comme il faut les données des paramètres. Avez vous une idée ou un lien qui me faciliterai la vie.
    merci à tous

  5. #5
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Ok je n'avais pas compris....

    Ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strWHERE = strWHERE + " And (([MaTable].MonChamp) = Me![ListParamètre].[Value])"]
    Me![ListParamètre].[Value] ne doit pas être écrit tel quel dans la requête.
    Me ne signifie rien dans une requête.

    Tu dois sortir l'expression de la chaîne de caractère pour l'évaluer. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strWHERE = strWHERE + " And (([MaTable].MonChamp) = " & Me![ListParamètre].[Value])"
    (le crochet à la fin était de trop)
    (rajouter des quotes (') si le champ est de type texte)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 69
    Points : 58
    Points
    58
    Par défaut
    ca va beaucoup mieux... j'ai donc modifier ma requête ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strWHERE = strWHERE + " And (([MaTable].[paramètre]) = '" & Me![ListParamètre].[Value] & "')"
    et ca va beaucoup mieux, le transfert est OK!!
    pour mes critères "dates" je n'est pas mis de quotes('), le transfert se fait bien sauf que mes dates se sont transformées en valeur numérique!!
    Existe t il une facon aussi simple que les quotes pour les champs de type texte, pour faire référence à une date?
    Je vais fouiner pour voir ça, mais dans tout les cas un grand merci parce que ça faisait un moment que je coinçait...
    merci arkham

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Import données access/excel
    Bonjour tout le monde,



    J'ai un soucis avec l'import de données d'access vers excel. En effet, j'ai une requête dans ma base de données que je souhaite importer dans excel, (Données / Données Externes / Import de données) cependant lors de l'importation, les critères de tri de données ne sont pas pris en compte. Comment faire pour avoir excatement les mêmes résultats que lors de l'excecution de la requête sous access?

    En vous remerciant d'avance de votre aide.



    Cordialement

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

Discussions similaires

  1. Transfert des données d'une boucle vers une feuille
    Par chelmi95 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/09/2007, 13h03
  2. Réponses: 8
    Dernier message: 04/04/2007, 15h29
  3. [MySQL] problème de récupération des données d'une requête
    Par maniaco_jazz dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/02/2007, 12h12
  4. ajouter des données dans une requête htttp en js
    Par jeromejanson dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/10/2005, 15h34
  5. [SQL server] Comment Fusionner des données dans une requête
    Par MoTUmBo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/07/2005, 15h24

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