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

IHM Discussion :

Problème pour un formulaire avec RefreshQuery


Sujet :

IHM

  1. #1
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut Problème pour un formulaire avec RefreshQuery
    Bonjour tout le monde
    Alors j'ai crée un formulaire et je souhaire afficher les réponses dans une listbox.
    Alors voilà j'ai bien regardé le cours ici : http://cafeine.developpez.com/access...echerchemulti/

    j'ai utilisé le même principe que dans le cours mais quand je souhaite changer des champs pour afficher la requêtes un message apparaît avec :
    enregistrer le champ en cours avant d'exécuter l'action Actualiser.@
    Aidez moi svp car je ne vois pas trop comment faire...
    Si je ne suis pas claire n'hésitez pas...
    ~ Lola ~

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 62
    Points
    62
    Par défaut
    Bonjour

    Sans voir le code, je dirais que tu as une action requery qui a lieu avant tout enregistrement de données.

    Tu pourrais mettre le code pour qu'on voit le déroulement ?

  3. #3
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Voilà le code, mais en fait maintenant j'ai un autre problème, et comme j'ai vraiment beaucoup de mal pour ça je ne vois pas d'où vient l'erreur.
    Maintenant il me met aussi "utilisation incorrecte de Null"

    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
     
    Private Sub résultats_BeforeUpdate(Cancel As Integer)
     
    Dim SQL As String
    Dim SQLWhere As String
    SQL = "SELECT CodeSystème,Date, HeureDébut, Durée, Type, Caractéristique, CodeCause FROM ARRET Where ARRET!CodeSystème <> 0 "
    If Me.q3Blocage Then
        SQL = SQL & "And ARRET!Type = 'Blocage' "
    End If
    If Me.q3Planifié Then
        SQL = SQL & "And ARRET!Type = 'Planifié' "
    End If
    If Me.q2 Then
        SQL = SQL & "And ARRET!Date like '*" & Me.q2Date & "*' "
    End If
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
    SQL = SQL & ";"
    Me.résultats.RowSource = SQL
    Me.résultats.Requery
    End Sub
    Merci de m'aider, j'ai pas tout compris dans le cours que j'avais trouvé...
    ~ Lola ~

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 62
    Points
    62
    Par défaut
    les q2... q3. (q3Blocage)... correspondent à quoi dans les conditions if ?

    autant pour moi, je viens de voir le tutoriel dont tu t'es inspiré

    q3date, c'est un format date. Dans ce cas, remplace dans le select les * par #

  5. #5
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Alors voilà:

    q2 correspond à une case à cocher
    q2Date correspond à une zone de liste mofiable
    q3. correspondent tous les deux à des cases à cocher
    ~ Lola ~

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 62
    Points
    62
    Par défaut
    sinon pour tester, tu mets dans le code avant le me.résultats.rowsource
    msgbox SQL. Tu vas pouvoir regarder le résultat du select et voir si une donnée n'est pas vide

  7. #7
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    ok merci je tente ça et je te tiens au courant,
    c'est gentil de m'aider parce que c'est pas trop ce que je fais d'habitude ça...
    ~ Lola ~

  8. #8
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Alors voilà ce que le msgbox m'affiche qd je sélectionne toutes mas cases et que je choisis une date :

    SELECT CodeSystème, Date, HeureDébut, Durée, Type, Caractéristique, CodeCause FROM ARRET where ARRET!CodeSystème <> 0 And ARRET!Type = 'Blocage' And ARRET!Type = 'Planifié' And ARRET!Date like '*08/01/2007*';
    Puis après j'ai toujours le même message d'erreur :

    enregistrer le champ en cours avant d'exécuter l'action Actualiser.@
    ~ Lola ~

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 62
    Points
    62
    Par défaut
    bon pour la date, c'est bien ce que je pensais met # à la place * dans le code

  10. #10
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut Et c'est pas fini...
    Maintenant je viens de remarquer que si je ne cocher pas toutes les cases alors l'erreur suivante apparait :
    utilisation incorrecte de Null

    Est ce que tu sais à quoi ça correspond ? Il vaut mieux faire au cas par cas ou alors faire en premier le global ?
    Merci encore de m'aider
    ~ Lola ~

  11. #11
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    En mettant # à la place de * j'obtient :
    ... And ARRET!Date like '#08/01/2007#';
    Avec toujours l'erreur d'actualiser après.
    ~ Lola ~

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 62
    Points
    62
    Par défaut
    j'essaie de voir une chose à la fois. Résultat, c'est une listbox ? Plutot que de mettre l'événement sur beforeupdate, tu peux essayer sur afterupdate par exemple ? BeforeUpdate est en général utilisé pour une validation de donnée. Dans ton cas, la validation est effectuée. Tu veux le résultat

  13. #13
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Alors voilà j'ai mis AfterUpdate et ça me met cette alerte :

    L'expression Avant MAJ entrée comme paramètre de la propriété de type évènement est à l'origine d'une erreur. La déclaration de la procédure ne correspond pas à la description de l'évènement ou de la procédure du même nom.
    * Le résultat de l'expression n'est pas le nom d'une macro, d'une fonction définie par l'utilisateur ou [Event Procédure].
    * Une erreur a peut-être été commise lors de l'évaluation d'une fonction, d'un évènement ou d'une macro.
    Sinon résultat est bien une listbox avec plusieurs colonnes possibles, d'ailleurs elles apparaissent...
    ~ Lola ~

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 62
    Points
    62
    Par défaut
    bon bon je stoppe ce que je fais et je me concentres sur ton truc. Les colonnes apparaissent vides c'est normal car le select ne fonctionne pas entièrement.

    Récapitulons
    Tu coches tes cases ou ta liste puis tu veux que le résultat en fonction des choix apparaisse dans la listbox résultats

    sur ton événement click de

    q2
    q2Date
    q3*
    as tu du code ?

    parce quand reprenant ton raisonnement, tu agis sur les événements de résultats.

    Or d'après ce qu'à fait cafeine, il faut
    a)créer dans l'événement clic de chaque case à cocher ce code. Le clic appelle alors la procédure RefreshQuery qui gère la requête sql pour ta listbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    Private Sub q2_Click()
     
      RefreshQuery 
    End Sub
    b)ensuite à la suite du code tu copies cela. J'ai viré sqlwhere car tu ne t'en sers pas si j'ai bien lu

    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
     
    private sub RefreshQuery
    Dim SQL As String
     
    SQL = "SELECT CodeSystème,Date, HeureDébut, Durée, Type, Caractéristique, CodeCause FROM ARRET Where ARRET!CodeSystème <> 0 "
    If Me.q3Blocage Then
        SQL = SQL & "And ARRET!Type = 'Blocage' "
    End If
    If Me.q3Planifié Then
        SQL = SQL & "And ARRET!Type = 'Planifié' "
    End If
    If Me.q2 Then
        SQL = SQL & "And ARRET!Date like '*" & Me.q2Date & "*' "
    End If
     
    SQL = SQL & ";"
    Me.résultats.RowSource = SQL
    Me.résultats.Requery
    End Sub
    c)Tu supprimes le code dans l'événement before update

    Là, ça devrait fonctionner car tu essaies de coupler 2 actions en une seule si j'ai bien suivi

  15. #15
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Alors voici les parties du code que tu me demandes :

    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
     
    Private Sub résultats_DblClick(Cancel As Integer)
        DoCmd.OpenForm "Formulaire1", acNormal, , "[CodeSystème] = " & Me.résultats
    End Sub
     
    Private Sub q2_Click()
        Me.q2.Visible = Not Me.q2.Visible
        RefreshQuery
    End Sub
     
    Private Sub q3Blocage_BeforeUpdate(Cancel As Integer)
        RefreshQuery
    End Sub
     
    Private Sub q3Planifié_BeforeUpdate(Cancel As Integer)
        RefreshQuery
    End Sub
    Alors si j'ai bien compris, il faudrait que je mette "private sub RefreshQuery" à la place de l'évènement before update.
    Mais les codes pour les évènements q2_click... doivent_ils se mettrent avant ou après la RefreshQuery?
    ~ Lola ~

  16. #16
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Alors j'ai mis le code comme tu l'as dit et maintenant j'ai une nouvelle erreur :

    impossible de masquer le contrôle actif


    Tu veux peut-être voir à quoi ressemble mon formulaire ou tu n'en a pas besoin?
    ~ Lola ~

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 62
    Points
    62
    Par défaut
    en fait c'est bon, tu as déjà le code que je pensais inexistant. Comme quoi le dépannage quand on a pas le nez dedans

    il te suffit de mettre en effet à la place de before update ce que je t'ai donné

    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
    private sub RefreshQuery
    Dim SQL As String
     
    SQL = "SELECT CodeSystème,Date, HeureDébut, Durée, Type, Caractéristique, CodeCause FROM ARRET Where ARRET!CodeSystème <> 0 "
    If Me.q3Blocage Then
        SQL = SQL & "And ARRET!Type = 'Blocage' "
    End If
    If Me.q3Planifié Then
        SQL = SQL & "And ARRET!Type = 'Planifié' "
    End If
    If Me.q2 Then
        SQL = SQL & "And ARRET!Date like '*" & Me.q2Date & "*' "
    End If
     
    SQL = SQL & ";"
    Me.résultats.RowSource = SQL
    Me.résultats.Requery
    End Sub

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 62
    Points
    62
    Par défaut
    pff c'est normal le code essaie de masquer un controle qui est actif

    Me.q2.Visible = Not Me.q2.Visible

    je supposes que tu veux le laisser visible ? dans ce cas tu peux virer la ligne sinon met la provisoirement en parenthèse en la faisant précédé du signe '

  19. #19
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    J'ai enlevé la ligne comme demandé et là j'ai encore un nouveau message d'erreur, on dirai que j'y suis abonnée...

    utilisation incorrecte de Null
    ~ Lola ~

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 62
    Points
    62
    Par défaut
    bon il s'agit d'identifier la source. Mets en parenthèse 2 des 3 conditions dans la procédure refreshquery et tu verras si l'erreur apparaît quand tu cliques sur

    q3Blocage
    q3Planifié Then
    q2
    en alternant la mise en parenthèse ou alors mets ce code en cliquant alternativement

    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
      private sub RefreshQuery
    Dim SQL As String
     
    SQL = "SELECT CodeSystème,Date, HeureDébut, Durée, Type, Caractéristique, CodeCause FROM ARRET Where ARRET!CodeSystème <> 0 "
    If Me.q3Blocage Then
        SQL = SQL & "And ARRET!Type = 'Blocage' "
    msgbox "arrêt 1" & ARRET!CodeSystème.value & ARRET!Type.value
    End If
    If Me.q3Planifié Then
        SQL = SQL & "And ARRET!Type = 'Planifié' "
    msgbox "arrêt 2" &ARRET!CodeSystème.value & ARRET!Type.value
    End If
    If Me.q2 Then
        SQL = SQL & "And ARRET!Date like '*" & Me.q2Date & "*' "
    msgbox "arrêt 3" &ARRET!CodeSystème.value & ARRET!Type.value
    End If
     
    SQL = SQL & ";"
    Me.résultats.RowSource = SQL
    Me.résultats.Requery
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 1234 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/07/2012, 23h04
  2. Problème pour stopper thread avec runnable
    Par fabou3377 dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 13/03/2008, 13h43
  3. Problème pour la Division avec NOT EXISTS
    Par myzu69 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 08/11/2007, 14h50
  4. Problème pour compiler Ogre avec VS 2005
    Par Oxideur dans le forum Ogre
    Réponses: 2
    Dernier message: 01/03/2007, 18h33
  5. Problème pour utiliser split avec "\"
    Par Nicolas_555 dans le forum Langage
    Réponses: 6
    Dernier message: 03/08/2006, 14h42

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