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 :

[Access 2003/VBA]Affecter une requète à un raport dans Access ?


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut [Access 2003/VBA]Affecter une requète à un raport dans Access ?
    Bonjour,

    La question du jour est : comment affecter un rowsource ou un recordset à un objet report ?

    De toutes les manières, ce que je veux, c'est d'abord affecter une requète à un raport (par programme) et ensuite sélectionner un des enregistrements de parmis ceux qui vont être sélectionnés. Est ce possible et si oui comment faire ?

    Access me dit que c'est impossible dans un MDB (par le rowsource et le recordset j'ai des messages d'erreur).

    Par avance merci.

    Marco.

  2. #2
    Membre éclairé Avatar de stéphane_ais2
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 792
    Points : 891
    Points
    891
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.RecordSource = "SELECT * FROM TABLE"
    sur l'évenement Report_Open de l'état...

    Est-ceci que tu voulais?

    SE
    Si le monde explose, la dernière voix audible sera celle d’un expert, disant que la chose est impossible. - P. Ustinov

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Oui c'est ce genre de chose, sauf qu'il me refuse d'affecter un rowsource au runtime.

    Il doit donc me manquer quelquechose, mais quoi ? Est ce que j'aurais oublié de cocher une option quelquepart ?

    Sur ce point VB n'est pas trèqs explicite au niveau des messages d'erreur.

    Par avance merci.

    Marco.

  4. #4
    Membre éclairé Avatar de stéphane_ais2
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 792
    Points : 891
    Points
    891
    Par défaut
    Citation Envoyé par cotmar
    Oui c'est ce genre de chose, sauf qu'il me refuse d'affecter un rowsource au runtime.
    Je ne comprends pas...désolé...

    SE
    Si le monde explose, la dernière voix audible sera celle d’un expert, disant que la chose est impossible. - P. Ustinov

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Ah partdon.
    En fait je veux dire que je ne peux pas affecter la requète à la propriété "rowsource" au momment de l'exécution (runtime = exécution). Apapremment ça ne marche pas.
    Sinon, j'ai essayé de faire ça en le mettant en dur dans les propriétés de l'état.

    J'espère être plus clair cette fois ci.

    Par avance merci.

    Marco.

  6. #6
    Membre éclairé Avatar de stéphane_ais2
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 792
    Points : 891
    Points
    891
    Par défaut
    Sur quel objet veux-tu utiliser la propriété RowSource ?

    SE
    Si le monde explose, la dernière voix audible sera celle d’un expert, disant que la chose est impossible. - P. Ustinov

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    En fait je voudrais affecter au rowsource de mon état directement.
    Mais apparemment ça ne marche pas.

    Est ce que tu saurais pourquoi ? Peut être que je m'y prends mal ?

    Marco.

  8. #8
    Membre éclairé Avatar de stéphane_ais2
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 792
    Points : 891
    Points
    891
    Par défaut
    Cette propriété ne s'applique pas à un état...
    Il faut utiliser la Propriété RecordSource qui peut par contre utiliser le RowSource d'une zone de liste par exemple...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.RecordSource = Liste.RowSource
    SE
    Si le monde explose, la dernière voix audible sera celle d’un expert, disant que la chose est impossible. - P. Ustinov

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Bonsoir stéphane_ais2,

    J'ai été un peut long à répondre ce coups ci. J'ai fais plusieurs essais autour de la solution que tu m'indiques plus haut et rien à faire. J'ai un "runtime error" : Access se ferme assez violemment.

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
     
     
     
    Private Sub Imprimer_Click()
    On Error GoTo ErrHandler
     
        Dim StrRequete As String
     
        If Not ModSQL.FctGetClauseWhereFicheIncident(StrRequete) Then ' .FctGetRowSourceFicheIncident(StrRequete) Then
            Exit Sub
        End If
     
        Dim Nom_Etat As String
        Nom_Etat = "FrmFormulaireIncident3"
     
        DoCmd.OpenReport Nom_Etat, acViewDesign 
     
        Report_FrmFormulaireIncident3.RecordSource = StrRequete
     
        SendKeys "{f11}"
        SendKeys "{f10}"
        SendKeys "{F}"
        SendKeys "{p}"
        SendKeys "{right}"
        SendKeys "{TAB}"
        SendKeys "{right}"
        SendKeys "{enter}"
        DoCmd.OpenReport Nom_Etat, acViewPreview     
     
        If MsgBox("Voulez vous imprimer l'enregistrement courant ?", vbInformation + vbYesNo + vbDefaultButton2, CstAppName) = vbYes Then
            DoCmd.PrintOut
        End If
        DoCmd.Close acReport, Nom_Etat
     
    ExitHandler:
        Exit Sub
     
    ErrHandler:
    Resume
        MsgBox Err.Description, vbExclamation, CstAppName
        Resume ExitHandler
     
    End Sub
    Est ce quelqu'un saurait d'où ça peut venir ?

    Et si jamais fais sans le recordsource et avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
     
    DoCmd.OpenReport Nom_Etat, acViewDesign ', , StrRequete
    Il me renvoie des fenêtres pour me demander des valeurs de champs qui doivent apparaître dans le rapport.

    J'avoue que je ne sais plus trops quoi essayer d'autre.


    Par avance merci.

    Marco.

  10. #10
    Membre éclairé Avatar de stéphane_ais2
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 792
    Points : 891
    Points
    891
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Not ModSQL.FctGetClauseWhereFicheIncident(StrRequete) Then ' .FctGetRowSourceFicheIncident(StrRequete) Then
    Exit Sub
    End If
    à quoi correspond cette portion de code ?
    Tu déclares une variable StrRequete mais où est-elle définie ?
    As-tu essayé de placer le Recordsource de l'état sur l'ouverture de l'état ?

    SE
    Si le monde explose, la dernière voix audible sera celle d’un expert, disant que la chose est impossible. - P. Ustinov

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Cette portion du code permet de récupérer la requète SQL qui me permet d'alimenter l'écranà partir duquel je lance l'impression sur laquelle je travaille.

    Par rapport à cette requète, il faut juste que rajoute une condition dans la clause WHERE : sur le numéro de l'identifiant de la fiche que je souhaite imprimer.

    En fait j'ai regardé à nouveau la syntaxe de l'instruction que tu m'as donnée et j'ai vu que tu mettais Me.RecordSource = Liste.RowSource et du coups je l'ai mis dans l'évènement Report_Open.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     
    Private Sub Report_Open(Cancel As Integer)
        Dim StrRequete As String
     
        If Not ModSQL.FctGetClauseWhereFicheIncident(StrRequete) Then ' .FctGetRowSourceFicheIncident(StrRequete) Then
            Exit Sub
        End If
        StrRequete = Mid(StrRequete, 1, InStr(1, StrRequete, "where ") - 1) & " AND Incident.NumIncident= " & Form_FrmFormulaireIncident.NumIncident.Value
        Me.RecordSource = StrRequete
     
    End Sub
    Et mantenant ça marche... Par contre je n'arrive pas à me positionner sur le bon enregistrement. J'ai un message d'erreur : il me dit : "erruer de syntaxe dans la clause FROM".

    Voici la requète SQL telle qu'elle apparaît dans StrRequete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
     
    SELECT Incident.NumIncident, Incident.Typologie, Incident.NumSite, Incident.DatIncident, Incident.NomRedacteur, Incident.TypIncident, Incident.MatIncident, Incident.EquipIncident, Incident.DatAnalyseNational, Incident.ResponsableAnalyse, Incident.OuvertLe, Incident.ClosLe, Incident.ClosPar, Incident.CompteRendu, Incident.MesuresSecurisationIntermédiaires, Incident.DateAnalyse, Incident.ResultatAnalyse, Incident.ChefDeProjetRegional, Incident.ChefDeProjetNational, Incident.Statut FROM Incident where Incident.NumIncident in ( SELECT Incident.NumIncident FROM ((((Ville INNER JOIN (Site INNER JOIN Incident ON Site.Site=Incident.NumSite) ON Ville.Ville=Site.Ville) INNER JOIN ReqEstAnalyse ON Incident.NumIncident=ReqEstAnalyse.NumIncident) INNER JOIN ReqEstVisible ON Incident.NumIncident=ReqEstVisible.NumIncident) INNER JOIN ReqEstTraiteNationalement ON Incident.NumIncident=ReqEstTraiteNationalement.NumIncident) INNER JOIN ReqEstClos ON Incident.NumIncident=ReqEstClos.NumIncident WHERE Incident.Statut Like "*"  OR
    DER BY Incident.NumIncident ) ;
    J'espère que j'ai été assez clair dans l'énnoncé de mon problème. Je te remercie de m'aider pour le résoudre.

    Bonne soirée et à plus tard.

    Marco.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Bon apparemmernt j'ai rajouté des vbcrlf dans la chaine SQL à l'endroit où je la récupère et là ça va mieurx.

    Par contre à présent il ne m'affiche toujours pas les sous formulaires dans mon impression.

    Est ce que tu sais d'où celà pourrait venir ?

    Par avance merci.

    Bonne soirée.

    Marco.

  13. #13
    Membre éclairé Avatar de stéphane_ais2
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 792
    Points : 891
    Points
    891
    Par défaut
    Citation Envoyé par cotmar
    Par contre à présent il ne m'affiche toujours pas les sous formulaires dans mon impression.
    Bonjour,

    La rqt source du subfrm renvoie-t-elle un résultat ?

    SE
    Si le monde explose, la dernière voix audible sera celle d’un expert, disant que la chose est impossible. - P. Ustinov

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Tu veux dire que dire que si la requète ne renvoie pas d'enregistrements, le sous état ne sera pas visible ?

  15. #15
    Membre éclairé Avatar de stéphane_ais2
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 792
    Points : 891
    Points
    891
    Par défaut
    Non pas précisement, je cherche à comprendre...
    c'est vrai qu'à priori si le SQL ne renvoie aucun enregistrement, Access affiche l'état vide...sauf si c'est géré par une gestion d'état vide...

    Est-ce que toutes les propriétés relatives à l'affichage sont correctement définies ?
    Le SQL source est bien débogué ?

    ...

    SE
    Si le monde explose, la dernière voix audible sera celle d’un expert, disant que la chose est impossible. - P. Ustinov

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    En fait je viens de faire un esai et il semblerait que tu aies raison... Si il n'y a pas d'enregistrements dans le sous formulaire, le sous état correspondant est vide.

    Donc la requète fonctionne, mais je ne sais pas si il ne serait pas préférable de faire apparaître le sous état, même si il ne renvoie pas de données, car celà va faire un espace vide à l'impression. Ca serait là la suite de ma question.

    Merci de ton aide en tous les cas.

    Marco.

  17. #17
    Membre éclairé Avatar de stéphane_ais2
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 792
    Points : 891
    Points
    891
    Par défaut
    Dans ce cas, tu prévoies un test sur l'existence ou non d'enregistrements et en cas de résultat vide, tu formates l'état en conséquence...

    SE
    Si le monde explose, la dernière voix audible sera celle d’un expert, disant que la chose est impossible. - P. Ustinov

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Merci.
    La question suivante est : apparemment il n'imprime pas ce que je veux, mais le premier qui a été ouvert (à savoir l'écran de connection). Y a t il moyen de lui dire d'imprimer ce que je veux ?

    Par avance merci.

    Marco.

  19. #19
    Membre éclairé Avatar de stéphane_ais2
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 792
    Points : 891
    Points
    891
    Par défaut
    Citation Envoyé par cotmar
    Merci.
    La question suivante est : apparemment il n'imprime pas ce que je veux, mais le premier qui a été ouvert (à savoir l'écran de connection). Y a t il moyen de lui dire d'imprimer ce que je veux ?
    J'ai quelques soucis de compréhension...
    ...à préciser

    SE
    Si le monde explose, la dernière voix audible sera celle d’un expert, disant que la chose est impossible. - P. Ustinov

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Pardon effectivement je ne suis pas très clair. On va mettre ça sur la proximité du week end.
    Je voulais dire que au lieu d'imprimer l'état que je veux imprimer, il imprime le premier formulaire ouvert par l'application, à) savoir l'écran de conection.

    Voilà j'espère avoir été plus clair. Excuses moi encore pour le message précédent. C'est ce qui arrive quand on fait plusieurs choses à la fois.

    Marc.

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/02/2015, 16h48
  2. [access 2003/VBA/SQL] Erreur d'execution 3201 sur une requête.
    Par Milyshyn76 dans le forum VBA Access
    Réponses: 6
    Dernier message: 02/05/2008, 09h04
  3. Réponses: 3
    Dernier message: 08/06/2006, 11h53
  4. Réponses: 12
    Dernier message: 30/05/2006, 15h57
  5. Réponses: 1
    Dernier message: 29/05/2006, 18h42

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