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 :

activer un enregistrement dans un sous formulaire [AC-2003]


Sujet :

IHM

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut activer un enregistrement dans un sous formulaire
    bonjour

    mon probleme est simple,mais pourriez vous me mettre sur une piste?
    je travaille sur une base ac-2003
    j'ai un formulaire appelé F ,qui contient deux choses:
    1) une liste deroulante appelé L (ayant comme source un seul champ d'une table appelé T ,et ce champ contient la liste des nom de fournisseurs )
    2)et un sous formulaire appelé SF (ayant comme source la table précité appeléT)

    QUESTION: je souhaites que quand je choisis un enregistrement de la liste L alors : un enregistrement du sous formulaire SF soit activé "mis en surbrillance"
    c'est à dire j'atteins la ligne de l'enregistrement qui contient le nom du fournisseur.

    pourriez vous m'indiquer un code evenementiel pour aprésMAJ de la liste deroulante L.
    sinon pourriez vous m'indiquer une piste de recherche .mais je suis debutant en vb . je ne sais pas comment utiliser Find-recordsetclone-dao bookmark-signet bookmark. si cela constituerait une piste valable et merci cordialement , car je suis a bout de soufle en tatonnant comme un aveugle

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 112
    Points : 5 237
    Points
    5 237
    Par défaut
    Bonjour,

    Il faudrait essayer un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Form_MaSousFenetre.Recordset.MoveFirst
    While Form_MaSousFenetre.Recordset!Monchamp<>MaValeur
      Form_MaSousFenetre.Recordset.MoveNext
    Wend
    Ca marche bien chez moi par contre je ne sais pas comment tester la fin de fichier si qqn a la réponse ça m'intéresse

    Un peu plus joli :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Form_stock_histo.Recordset.MoveFirst
    For i = 1 To Form_stock_histo.Recordset.RecordCount
      If Form_stock_histo.Recordset!motif = MonMotif Then Exit For
      Form_stock_histo.Recordset.MoveNext
    Next

  3. #3
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Citation Envoyé par nico84 Voir le message
    Bonjour,

    Il faudrait essayer un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Form_MaSousFenetre.Recordset.MoveFirst
    While Form_MaSousFenetre.Recordset!Monchamp<>MaValeur
      Form_MaSousFenetre.Recordset.MoveNext
    Wend
    Ca marche bien chez moi par contre je ne sais pas comment tester la fin de fichier si qqn a la réponse ça m'intéresse
    C'est vraiment très laid La méthode Find existe autant s'en servir non ?

    http://warin.developpez.com/access/d...artie_5#L5.3.2

  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Tofalu Voir le message
    C'est vraiment très laid La méthode Find existe autant s'en servir non ?

    http://warin.developpez.com/access/d...artie_5#L5.3.2
    merci Monsieur Tofalu
    j'ai utilisé la methode Find,mais en utilisant le code suivant, un message d'erreure m'indique que :
    la variable objet ou la variable du bloc with est non definie
    et cela concerne la ligne --> je souhaites vivement que l'on me suggère ce qui ne va pas car je n'avancerai plus sans votre aimable aide

    dans ce code j'ai testé si j'obtiendrait un resultat ,avec comme variable une requete SQL:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    strcritere= " nom fournisseur Like' ".....
    j'ai omis pour le moment la liste deroulante L
    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
    Option Compare Database
    Dim strcritere As String
    Dim rst As recordset
     
    Private Sub Form_Current()
    Set rst = Me.recordset
    End Sub
     
    Private Sub sf_Enter()
    Dim rst As recordset
    Dim strcritere As String
    Set rst = Me.recordset
    strcritere = " nom fourniseur Like'" & Chr(34) & "PARA*" & Chr(34)
    With rst
    .FindFirst strcritere
        If NoMatch Then
        MsgBox "client non trouvé"
        Else
           Do While True
           MsgBox rst("nom fournisseur")
           .FindNext strcritere
           If NoMatch Then Exit Do
           Loop
        End If
    End With
    End Sub
    'à la ligne FindFirst strcritere ,le message d'erreure m'indique que :
    '(variable objet ou variable Bloc With non definit).
    je penses que c'est la variable rst représentant le recordset qui n'est pas definit pourriez vous me guider vers une issue , et merci cordialement

  5. #5
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Bonjour

    Je me demande si la construction de votre chaine strcritere n'est pas erronée.

    Peut-être avec des crochets, puisque le nom de votre champ est à espace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcritere = " [nom fourniseur] Like'" & Chr(34) & "PARA*" & Chr(34)
    Et puis je me demande à quoi sert le quote après Like, puisque vous n'en mettez pas un deuxième?

    Pierre

  6. #6
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par pier.antoine Voir le message
    Bonjour

    Je me demande si la construction de votre chaine strcritere n'est pas erronée.

    Peut-être avec des crochets, puisque le nom de votre champ est à espace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcritere = " [nom fourniseur] Like'" & Chr(34) & "PARA*" & Chr(34)
    Et puis je me demande à quoi sert le quote après Like, puisque vous n'en mettez pas un deuxième?

    Pierre
    bonjour Pier.Antoine
    effectivement il me fallait des crochets pour le champ "nom fournisseur"
    et enlever le quote aprés Like.
    en plus il a falu aussi que je definisse la variable rst càd le (recordset).
    c'est fait et ca marche. je tiens a vous en remercier chaleureusement.
    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
    Private Sub sf_Enter()
    Dim db As DAO.Database
    Dim rst As DAO.recordset
    Dim strcritere As String
     
    Set db = CurrentDb
    strcritere = "[nom fournisseur] Like" & Chr(34) & " P*" & Chr(34)
    Set rst = db.OpenRecordset("SELECT F.[nom fournisseur] FROM F; ", dbOpenDynaset)
     
    With rst
      rst.FindFirst strcritere
    End With
     
    End Sub
    'c'est parfait
    petit problème : le FindFirst me donne le premier enregistrement du champ "nom fournisseur" ,et non le premier enregistrement selon la condition Like;
    question : devrai-je integrer le contenu de la variable strcritere dans la définition du recordset rst ?
    si vous auriez une idée prière de m'en faire part, et mille fois merci

  7. #7
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Je ne maîtrise pas, loin de là DAO, et les histoires de recordset.

    Ceci dit, la logique voudrait en effet, que le critère soit intégrer dans le choix du recordset.

    En gros, en parlant un langage commun, un recordset, c'est une partie des éléments de ma base correspondant à un ou plusieurs critères. Je travaille ensuite avec ce groupe.

    Pierre

  8. #8
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 112
    Points : 5 237
    Points
    5 237
    Par défaut
    Bonjour,

    Le find permet de travailler sur la sélection de la fenêtre et d'éviter donc un nouveau select.

    La syntaxe ressemble à ça (si SF est le nom de la sous fenêtre et aussi le nom de la fille) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.SF.Recordset.FindFirst "[nom fourniseur] Like " & Chr(34) & "PARA*" & Chr(34)
    ou plus généralement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form_SF.Recordset.FindFirst "[nom fourniseur] Like '" & L & "*'"

  9. #9
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par nico84 Voir le message
    Bonjour,

    Le find permet de travailler sur la sélection de la fenêtre et d'éviter donc un nouveau select.

    La syntaxe ressemble à ça (si SF est le nom de la sous fenêtre et aussi le nom de la fille) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.SF.Recordset.FindFirst "[nom fourniseur] Like " & Chr(34) & "PARA*" & Chr(34)
    ou plus généralement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form_SF.Recordset.FindFirst "[nom fourniseur] Like '" & L & "*'"
    dans le premier code le ME ne peut pas fonctionner car SF est independant
    et l'autre code LE FindFirst n'existe pas.
    en plus de cela une autre chose apparait : c'est la variable L : erreure indiquant qu'il y a une incompatibilite de type

  10. #10
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut se positionner sur enrg d'1 sf via liste deroulante
    Citation Envoyé par aciri Voir le message
    dans le premier code le ME ne peut pas fonctionner car SF est independant
    et l'autre code LE FindFirst n'existe pas.
    en plus de cela une autre chose apparait : c'est la variable L : erreure indiquant qu'il y a une incompatibilite de type
    voici la reponse a mon probleme:

    je met le code evenementiel suivant sur change de la list deroulante L :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub L_Change()
    On Error GoTo err_L_Change
    Me.sf.Form.SelTop = Me.L.ListIndex + 1
    Exit_L_Change:
    Exit Sub
    err_L_Change:
    Dim ctrl As Control
    For Each ctrl In Forms!F.Controls
    If TypeOf ctrl Is ComboBox Then 'pour des contrôles ComboBox
        ctrl = ""
    End If
    Next
    Resume Exit_L_Change
    End Sub
    et ca me donne le sous formulaire avec le curseur positionné sur l'enregistrement choisi via ma liste deroulante

    pas besoin de FindFirst de monsieur Tofalu absent depuis sa premiere remarque on dirait que l'on est avard de donner un coup de pousse.alors par defi verifiez que mon code est tres efficasse sinon vous pourriez me blamer pour le mot avard je ne nie pas que la methode Find est tres facil mais il falait me donner le petit bout de code car les recordset et le DAO est un peu delicat pour un debutant merci encore mr tofalu

    je me rejouit de ma trouvaille simpliste mais hautement efficasse merci a tous :

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/09/2007, 19h38
  2. Réponses: 4
    Dernier message: 06/12/2006, 17h04
  3. trier les enregistrements dans un sous-formulaire
    Par moicats dans le forum Access
    Réponses: 3
    Dernier message: 30/03/2006, 11h03
  4. Réponses: 4
    Dernier message: 28/02/2006, 20h12
  5. Réponses: 4
    Dernier message: 16/09/2005, 15h56

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