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

Access Discussion :

Probleme d'affichage de donnees dans sous formulaire access (access unbound sub form) [Toutes versions]


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 69
    Points : 43
    Points
    43
    Par défaut Probleme d'affichage de donnees dans sous formulaire access (access unbound sub form)
    salut,
    j'ai une base de donnees qui fait la gestion des etudiants et des cours. pour un etudiant il peut exister de 0 a plusieurs cours.
    j'ai un formulaire independant qui affiche les informations pour un etudiant donner ce formulair fonctionne tres bien. cependant le sous formulaire independent cours qui affiche les cours pour un etudiant enfonction du numero etudiant ne fonctionne pas correctement, meme s'il existe plusieurs enregistrements pour cet etudiant dans la table cours, le sous formulair affiche seulement le premier enregistrement. j'ai utilise plusieurs moyens mais rien ne marche.

    je vous prie m'aider a trouver une solution.

    voici les differents codes utilizes:

    j'ai inserer la base d'exemple en piece jointe.

    Option Compare Database
    Option Explicit
    Dim s As String
    Dim rs As DAO.Recordset 'sous form
    Dim rsDb As DAO.Database
    0)
    Sub AfficherDonnees()
    s = "SELECT cours.* FROM Cours WHERE NoEtud=" & Me!NoEtu & ";"
    Set rs = rsDb.OpenRecordset(s, dbOpenDynaset)
    If Not rs.EOF Then
    'remplissage des champs du sous formulaire
    [sfCours].Form!NoCours = rs("NoCours")
    [sfCours].Form!NomC = rs("NomC")
    [sfCours].Form!DateC = rs("DateC")
    [sfCours].Form!NoEtud = rs("NoEtud")
    Else
    [sfCours].Form!NoCours = ""
    [sfCours].Form!NomC = ""
    [sfCours].Form!DateC = ""
    [sfCours].Form!NoEtud = ""
    End If
    End sub
    Private Sub Form_Load()
    Set rsDb = CurrentDb
    AfficherDonnees
    End Sub
    1 'sous form
    strFilter = "NoEtud = " & Me!NoEtu
    'remplissage des champs du sous formulaire
    [sfCours].Form!NoCours = DLookup("NoCours", "Cours", strFilter)
    [sfCours].Form!NomC = DLookup("NomC", "Cours", strFilter)
    [sfCours].Form!DateC = DLookup("DateC", "Cours", strFilter)
    [sfCours].Form!NoEtud = DLookup("NoEtud", "Cours", strFilter)
    2 ‘
    Set rs = rsDb.OpenRecordset("Select * from Cours WHERE Noetud=1", dbOpenSnapshot)
    If rs.RecordCount > 0 Then
    [sfCours].Form!NoCours = rs("NoCours")
    [sfCours].Form!NomC = rs("NomC")
    [sfCours].Form!DateC = rs("DateC")
    [sfCours].Form!NoEtud = rs("NoEtud")
    End If
    3e
    s = "SELECT * FROM Cours WHERE NoEtud=" & Me.NoEtu & ";"
    Set rs = rsDb.OpenRecordset(s, dbOpenDynaset, dbSeeChanges)

    If rs.EOF = False Then 'si EOF est False, c'est qu'il y a une réponse: on signale le probleme
    'remplissage des champs du sous formulaire
    [sfCours].Form!NoCours = rs("NoCours")
    [sfCours].Form!NomC = rs("NomC")
    [sfCours].Form!DateC = rs("DateC")
    [sfCours].Form!NoEtud = rs("NoEtud")
    Else
    [sfCours].Form!NoCours = ""
    [sfCours].Form!NomC = ""
    [sfCours].Form!DateC = ""
    [sfCours].Form!NoEtud = ""
    End If
    4e
    Me.sfCours.Form.RecordSource = _
    "SELECT Cours.NoCours, Cours.NomC, " & _
    "Cours.NoEtud FROM Cours " & _
    "WHERE (((Cours.NoEtud) =" & strSelect & "))"


    Set rs = Me.sfCours.Form.Recordset

    If Not rs.EOF Then
    Me.sfCours.Form.NoCours = _
    rs!NoCours
    Me.sfCours.Form.NomC = _
    rs!NomC
    Me.sfCours.Form.NoEtud = _
    rs!NoEtud
    End If

    de grace, aidez moi svp, je suis coince.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour samgione,

    Premièrement, il n'est pas possible d'afficher plusieurs lignes différentes dans un sous-formulaire en mode continu. Les champs doivent être liés.

    Deuxièmement dans ton code:
    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
    Sub AfficherDonnees()
    s = "SELECT cours.* FROM Cours WHERE NoEtud=" & Me!NoEtu & ";"
    Set rs = rsDb.OpenRecordset(s, dbOpenDynaset)
    If Not rs.EOF Then 
    'remplissage des champs du sous formulaire
    [sfCours].Form!NoCours = rs("NoCours")
    [sfCours].Form!NomC = rs("NomC")
    [sfCours].Form!DateC = rs("DateC")
    [sfCours].Form!NoEtud = rs("NoEtud")
    Else
    [sfCours].Form!NoCours = ""
    [sfCours].Form!NomC = ""
    [sfCours].Form!DateC = ""
    [sfCours].Form!NoEtud = ""
    End If
    End sub
    Tu ne parcours pas les enregistrements. Tu saisies le premier seulement. Pour parcourir les enregistrements il faudrait faire:
    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
    Sub AfficherDonnees()
    s = "SELECT cours.* FROM Cours WHERE NoEtud=" & Me!NoEtu & ";"
    Set rs = rsDb.OpenRecordset(s, dbOpenDynaset)
    If Not rs.EOF Then 
    'remplissage des champs du sous formulaire
    While rs.EOF = False
    [sfCours].Form!NoCours = rs("NoCours")
    [sfCours].Form!NomC = rs("NomC")
    [sfCours].Form!DateC = rs("DateC")
    [sfCours].Form!NoEtud = rs("NoEtud")
    rs.MoveNext
    Wend
    Else
    [sfCours].Form!NoCours = ""
    [sfCours].Form!NomC = ""
    [sfCours].Form!DateC = ""
    [sfCours].Form!NoEtud = ""
    End If
    End sub
    Autre remarque mais qui n'est pas la cause de ton problème, tu devrais libérer les objets à la fin de ton code.

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  3. #3
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 69
    Points : 43
    Points
    43
    Par défaut probleme affichage dans sous formulaire access independant
    salut à tous spécialement à Robert
    j'ai deja essayer de cette façon, ca n'a pas mache.

    j'ai libére tous les objets sur la fermeture du formulaire.

  4. #4
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 69
    Points : 43
    Points
    43
    Par défaut
    Rebonjour a tous
    quand j'ai utilisé cette methode,

    Sub AfficherDonnees()
    s = "SELECT cours.* FROM Cours WHERE NoEtud=" & Me!NoEtu & ";"
    Set rs = rsDb.OpenRecordset(s, dbOpenDynaset)
    If Not rs.EOF Then
    'remplissage des champs du sous formulaire
    While rs.EOF = False
    [sfCours].Form!NoCours = rs("NoCours")
    [sfCours].Form!NomC = rs("NomC")
    [sfCours].Form!DateC = rs("DateC")
    [sfCours].Form!NoEtud = rs("NoEtud")
    rs.MoveNext
    Wend
    Else
    [sfCours].Form!NoCours = ""
    [sfCours].Form!NomC = ""
    [sfCours].Form!DateC = ""
    [sfCours].Form!NoEtud = ""
    End If
    End sub

    seul le dernier enregistrement est affiché contrairement à la methode suivante qui affiche seule le premier enregistrement.
    Sub AfficherDonnees()
    s = "SELECT cours.* FROM Cours WHERE NoEtud=" & Me!NoEtu & ";"
    Set rs = rsDb.OpenRecordset(s, dbOpenDynaset)
    If Not rs.EOF Then
    'remplissage des champs du sous formulaire
    [sfCours].Form!NoCours = rs("NoCours")
    [sfCours].Form!NomC = rs("NomC")
    [sfCours].Form!DateC = rs("DateC")
    [sfCours].Form!NoEtud = rs("NoEtud")
    Else
    [sfCours].Form!NoCours = ""
    [sfCours].Form!NomC = ""
    [sfCours].Form!DateC = ""
    [sfCours].Form!NoEtud = ""
    End If
    End sub

    les objets sont libéré sur la fermeture du formulaire comme ça

    Private Sub Form_Close()
    rs.Close
    rsEtud.Close
    rsDb.Close
    Set rs = Nothing
    Set rsEtud = Nothing
    Set rsDb = Nothing
    End Sub

    si tu veux telechager ma base pourque tu puisses l'essayer.

    s'il te plait j'attend une reponse + je suis vraiment coincé.

  5. #5
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour samgione,

    Je veux bien charger ta base mais pourquoi?

    Dans mon autre post ma première réponse:
    Premièrement, il n'est pas possible d'afficher plusieurs lignes différentes dans un sous-formulaire en mode continu. Les champs doivent être liés.
    Alors pourquoi ne pas lié ton sous-formulaire à une table ou requête?

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  6. #6
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 69
    Points : 43
    Points
    43
    Par défaut
    salut,
    merci pour le conseil, mon formulaire principale est toujours independant cependant j'ai lie mon sous formulaire avec une table au numero cle du formulaire principale le sous formulaire arrive a afficher le nombre d'enregistrement lie.
    merci

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/11/2009, 14h43
  2. Réponses: 1
    Dernier message: 21/07/2009, 11h34
  3. Réponses: 2
    Dernier message: 08/12/2007, 11h16
  4. Affichage de données dans sous formulaire
    Par karibou47 dans le forum Access
    Réponses: 1
    Dernier message: 16/08/2006, 20h58
  5. affichage des enreg. dans sous-formulaire
    Par OBIWAN64 dans le forum Access
    Réponses: 5
    Dernier message: 27/04/2006, 08h10

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