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 :

Acceder à un enregistrement particulier dans un formulaire


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Acceder à un enregistrement particulier dans un formulaire
    Bonjour,

    Voila mon probleme.
    J'ai un formulaire qui comprend tous les champs de ma table. Ds ce formulaire, je voudrai pouvoir choisir un des enregistrements.

    J'avais comme idée de creer un menu deroulant, de choisir le nom du champ qui je voulais atteindre (ce champ est le champ clé) et ensuite de cliquer sur un bouton de commande pour afficher cet enregistrement.

    J'ai pu voir dans la FAQ plusieurs choses mais rien qui correspond à ce que je cherche (ou alors, j'ai mal chercher... )

    Je joins un apercu de ce que j'ai deja creer, pour plus de clarté.

    Merci de votre aide!
    Virginie
    Images attachées Images attachées  

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 214
    Points : 169
    Points
    169
    Par défaut
    je te conseil d'utiliser VBA :

    tu remplis ta zone de liste déroulante par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sql = "Select champclé" & _
              "FROM taTable;"
     
    Me.MaZoneDéroulante.RowSourceType = "table/Requête"
    Me.MaZoneDéroulante.RowSource = Sql
    et pour remplir le zone de text, tu joue avec les recordset tu sais comment faire sa ou pas??
    règle numéro 12 : toujours s'offrir une entrée charismatique !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    En fait, ma liste deroulante marche bien. J'avais deja ce que tu m'as dit (cad SELECT Table1.ID FROM Table1; ds Row source et table/Requete dans RowSourceType)

    Par contre, je ne connais pas tres bien les record set...
    J'avais été voir dans la FAQ, et j'etais tombé sur

    http://access.developpez.com/faq/?page=PositionForm

    qui explique comment ouvrir un formulaire sur un nouvel enregistrement ou au premier/dernier enregistrement, etc... Mais ce n'est pas trop ce que je veux faire. Car mon formulaire est deja ouvert, et je veux simplement aller automatiquement à un enregistrement, au lieu de cliquer sur next/previous...

  4. #4
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut,

    Je pense que tu peux te servire du tuto de cafeine, il traite la recherche multicritères mais il va te montrer des choses intérressantes.
    http://cafeine.developpez.com/access...recherchemulti


  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 223
    Points : 240
    Points
    240
    Par défaut
    Pourquoi n'utilises-tu pas l'assistant de création de liste modifiable et en sélectionnant la 3ème méthode :




  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 214
    Points : 169
    Points
    169
    Par défaut
    pour utiliser un recordset, il te faut ta base de donnée
    dans les déclaration

    ensuite, il te faut une chaine de caractère pour ta requète

    puis le jeux d'enregistrement

    ensuite le code à proprement parlez

    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
     'on affecte la base de donnée courante à Db  
    Set Db = CurrentDb  'sa evite de le réécrir à chaque fois 
    
     'ensuite tu écrit ta requète
    
    Sql = "SELECT CeQueTuAsBesoinPourRemplirTesZoneDeTexte " & _
            "FROM LaTableOuSaSeTrouve " & _
            "WHERE LaClé = " & Me.TaZoneDeListe.Value & ";"
    
    'on ouvre le recordset
    
    Set Rs = Db.OpenRecordset(Sql, dbOpenSnapshot)
     'sauf si tu a besoin de modifier les tables 
    'tu utilisera plutôt dbOpenDynaset si tu à besoin defaire des modifs, 
    'ou des requète update.
    
    'Maintenant tu as un Recordset fonctionel, 
    'il te sufit de rentré les valeurs du Rs dans chaque zone de text.
    
    'ci dessous je considère que tes ZT on le même nom 
    'que les champs leurs correspondant dans tes tables.
    
    
    Me.Zt_ID.Value = Rs.Fields("ID").Value
    Me.Zt_Issue.Value = Rs.Fields("Issue").Value
    Me.Zt_Data1.Value = Rs.Fields("data1").Value
    Me.Zt_Data2.Value = Rs.Fields("data2").Value
    Si tu as des quetion n'ésite pas
    règle numéro 12 : toujours s'offrir une entrée charismatique !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Merci pour ton aide. J'ai effectivement qq questions...

    Qu'est-ce que tu appeles "CeQueTuAsBesoinPourRemplirTesZoneDeTexte" ?
    Et ce programme, je le rentre dans quel Private Sub?

    Sinon, le reste est clair. Merci !!!

  8. #8
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    slt,

    Apparement le formulaire est lié à une source de données, donc il ne faut pas modifier les valeurs des zones de texte sinon ça va modifier l'enregistrement en cours

    Pour un positionnement essaye déjà l'assistant comme le dis scorpion1611

    Après tu peux toujours améliorer le code générer

  9. #9
    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,

    Pour info, tu peux regarder ce post :
    http://www.developpez.net/forums/sho...d.php?t=161454

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

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 223
    Points : 240
    Points
    240
    Par défaut
    Je repose ma question :

    Pourquoi n'utilises-tu pas l'assistant de création de liste modifiable et en sélectionnant la 3ème méthode ??

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Merci à tout le monde pour votre aide.
    La solution de scorpion1611 est celle que j'ai retenue et ca marche tres bien!!!
    Encore merci!

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    J'avais une derniere question...

    Comment faire pour afficher un message d'erreur si ce que je rentre au clavier comme ID n'existe pas dans le champ?

    Ce qui se passe actuellement est :
    Si je rentre au clavier mon ID, mais qu'il n'existe pas, pour le moment, ca me dirige vers un enregistrement au hasard. J'avais pensé interdire la saisie au clavier, ms il est embetant de devoir faire defiler toute la liste des ID pour pouvoir en selectionner un...Dc le plus simple serait d'afficher un message d'erreur comme quoi l'ID n'existe pas...Ms je ne vois pas trop comment changer le code (je connais le VB depuis 3jours...)

    Merci de votre aide

  13. #13
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut,

    Tu peux utiliser l'événement NoInList de liste.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Ok, merci.
    Pour informatiin, j'ai rajouté ce programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub R_ID_NotInList(NewData As String, Response As Integer)
      MsgBox "Sorry, I can not accept that entry." & vbCrLf & _
            "Please choose an item from the list." _
            , vbExclamation, "Error"
        Response = acDataErrContinue
    Forms![table1]!R_ID = ""
    End Sub
    Il a aussi fallu que je change dans la propriété de ma combo box Limit to list : Yes.

    Merci encore de votre aide!

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/06/2007, 16h58
  2. Réponses: 3
    Dernier message: 24/04/2007, 15h44
  3. Enregistrements fantomes dans un formulaire
    Par JayL22 dans le forum IHM
    Réponses: 5
    Dernier message: 07/02/2007, 17h27
  4. Empecher l'enregistrement direct dans un formulaire
    Par eddyG dans le forum Sécurité
    Réponses: 2
    Dernier message: 09/06/2006, 21h10
  5. Réponses: 5
    Dernier message: 02/03/2006, 11h10

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