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 :

Comment un parametre d'une requete peut prendre la valeur éditée dans un formulaire?


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 153
    Points : 89
    Points
    89
    Par défaut Comment un parametre d'une requete peut prendre la valeur éditée dans un formulaire?
    Bonjour,
    En gros, mon formulaire sert à ouvrir un état selon l'option selectionnée dans les options disponible sur mon fomulaire
    chaque état récupère ses informations d'une requete existante
    tous se passe bien, sauf que :
    Les requetes ils ont un parametre alerte de type short et je veux que ce parametre prend la valeur saisi dans le textBox text6
    Donc j'ai fais ce qui suit:


    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     Private Sub Commande13_Click()
        On Error GoTo Err_Commande13_Click
        'Dim qdf As DAO.QueryDef
        'Dim rcs As DAO.Recordset
     
        Dim stDocName As String
        If Me.Option14.Value = True Then
        stDocName = "Baux avec faculté de résiliation"
        'référence à la requête
        Set qdf = CurrentDb.QueryDefs("R_BFaculteDeResiliation")
     
       qdf.Parameters("Alerte") = Me.Texte6.Value                                       
        Set rcs = qdf.OpenRecordset               
        Set qdf = Nothing
     
        End If
        If Me.Option16.Value = True Then
        stDocName = "E_Echeance"
        End If
        If Me.Option18.Value = True Then
        stDocName = "E_Tacite"
        End If
     
        DoCmd.OpenReport stDocName, acPreview
     
    Exit_Commande13_Click:
        Exit Sub
     
    Err_Commande13_Click:
        MsgBox Err.Description
        Resume Exit_Commande13_Click
     
    End Sub
    Malheureusement quand je clik sur le bouton l'état demande toujours le valeur de Alerte et ne prend pas la valeur saisi dans le textBox

    Vous avez une idée à mon sujet?
    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 353
    Points : 23 819
    Points
    23 819
    Par défaut
    Tu peux faire deux choses :

    1) Tu passe ton critere dans la clause Where de openReport (4ème param, il me semble)

    DoCmd.OpenReport stDocName, acPreview,,"[monChampParam]=""" & me.Text 6 & """"

    2) Tu mets en dur ton critère dans le critère de ta requète.

    =[Forms].[monForm].[Text6]

    Je préfère la 1ère qui fait une liaison moins forte entre les deux éléments.

    Petite note de style : Je te conseille de mettre des noms plus significatifs pour tes champs. Text6, ça dit pas grand chose sur ce que contient le champ tandis que txtCodeAlerte c'est plus parlant.

    A+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 153
    Points : 89
    Points
    89
    Par défaut
    Citation Envoyé par marot_r
    Tu peux faire deux choses :

    1) Tu passe ton critere dans la clause Where de openReport (4ème param, il me semble)

    DoCmd.OpenReport stDocName, acPreview,,"[monChampParam]=""" & me.Text 6 & """"
    J'ai essayé ça mais quand je remplace monChampParam par le nom du champ : Alerte il n'y a aucun effet
    j'ai remplacer le critere par qdf.Parameters("Alerte") = Me![Texte6] en faisant bien les declarations pour qdf... et me dit: Trop peu de parametres, 1 attendu

    Citation Envoyé par marot_r
    2) Tu mets en dur ton critère dans le critère de ta requète.

    =[Forms].[monForm].[Text6]
    Pour cette solution me dit Variable objet ou variable With non definie

    qu'est ce que vous en pensez?

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 353
    Points : 23 819
    Points
    23 819
    Par défaut
    Il faut enlever le paramêtre défini dans la requète et

    soit le passer par DoCmd.OpenForm

    soit mettre directement [Forms]. dans le critère de ton champ dans la requète.

    A+

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 153
    Points : 89
    Points
    89
    Par défaut Merci
    Merci bien Marot ça marche bien maintenent c'était facile avec la deuxieme solution

    poliana

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/06/2009, 07h00
  2. Réponses: 2
    Dernier message: 13/05/2006, 13h25
  3. Réponses: 8
    Dernier message: 06/04/2006, 18h45
  4. Comment effacer et créer une requete Access ??
    Par Mustard007 dans le forum Bases de données
    Réponses: 1
    Dernier message: 01/11/2005, 23h15
  5. Réponses: 6
    Dernier message: 21/06/2005, 10h14

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