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

VBA Access Discussion :

Parcourir des enregistrements [AC-2007]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 49
    Par défaut Parcourir des enregistrements
    Bonjour,

    je travaille actuellement sur un petit projet Access 2007 mais débute en VBA...
    Mon problème se situe au niveau suivant :

    J'ai 3 tables liées : une représentant des "projets", une table "modules" liée à projet et enfin une table "roue" liée à "module".
    En gros un projet est constitué de plusieurs modules eux même regroupant chacun plusieurs roues.

    J'ai deux formulaire : un présentant les projets sous forme de liste (type tableau excel) et un autre détaillant chaque projet (formulaire détails_projets contenant un sous formulaire module et un sous-sous formulaire "roue" )

    Dans le 1° formulaire j'ai la colonne N° (qui représente la clé primaire de type NuméroAuto de la table projets)
    et ce que je veux faire c'est quand je clique sur le numero, le deuxième formulaire s'ouvre sur l'enregistrement correspondant

    J'ai donc écris ces quelques lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub N°_Click()
    Dim i As Variant 
    DoCmd.OpenForm "Saisie_projet"     //Ouvre le formulaire
    i = N°
    If i<>0 then 
         DoCmd.GoToRecord , , acGoTo, i  //ouvre l'enregistrement i 
    Else 
         DoCmd.GoToRecord , , acNewRec 
         //ouvre le formulaire vide dans le cas où je clickerais sur (Nouv.)
    End If 
    End Sub

    Seulement ce à quoi je n'avais pas pensé...ce que je puisse avoir des trous dans ma numérotation et ce qu'il se passe ....c'est que je me retrouve avec le N° 7 correspondant à l'enregistrement 6...
    et donc je n'ouvre pas le bon projet.

    Je pensais à créer une fonction avec compteur parcourant la table et comparant le N° sur lequel j'ai cliqué avec le N° de chaque ligne. Le compteur me donnerais donc l'enregistrement correspondant (mon i dans mon programme) mais c'est quand même assez lourd si je me retrouve avec 1000 projets....

    Donc je voulais savoir si quelqu'un n'aurait pas une solution plus pratique et efficace à me proposer

    Merci d'avance

  2. #2
    Expert confirmé
    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
    Par défaut
    bjr,

    Il est possible de filtrer à l'ouverture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.OpenForm "Saisie_projet", , , "n° = " & []
    ou si on ne souhaite pas filtrer, se positionner avec Bookmark si la source de données des formulaires est similaire (même table source) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DoCmd.OpenForm "Saisie_projet"
    Forms("Saisie_projet").Bookmark = Me.Bookmark
    Il faut également ajouter une gestion d'erreur avec on error goto pour le cas où on est positionné sur un nouvel enregistrement.

  3. #3
    Membre averti
    Inscrit en
    Février 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 49
    Par défaut
    Merci beaucoup pour ta réponse

    C'est effectivement beaucoup plus simple de cette façon
    J'ai cependant un petit soucis sur le On Error GoTo

    En effet sans cette instruction tout marche très bien excepté biensur sur un nouvel enregistrement...
    J'ajoute donc l'instruction On Error GoTo et sur chaque click j'arrive sur le formulaire vierge comme si j'avais clické sur nouveau...

    J'ai cherché sur l'aide d'access...mais je vois pas vraiment
    voilà mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub N°_Click()
       On Error GoTo NewProject 
       DoCmd.OpenForm "Ingresa_proyectos", , , "n° = " &  []
     
    NewProject : 
       DoCmd.GoToRecord , , acNewRec
     
    End Sub
    et j'ai aussi essayé l'autre avec le même résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub N°_Click()
       On Error GoTo NewProject 
       DoCmd.OpenForm "Ingresa_proyectos"
       Forms("Ingresa_Proyectos").Bookmark = Me.Bookmark
     
    NewProject : 
       DoCmd.GoToRecord , , acNewRec
     
    End Sub
    Ai-je mal écris quelque chose?

  4. #4
    Expert confirmé
    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
    Par défaut
    il manque un exit sub avec l'étiquette de gestion d'erreur

  5. #5
    Membre averti
    Inscrit en
    Février 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 49
    Par défaut
    Super !!!!!
    Merci beaucoup ca marche super bien

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

Discussions similaires

  1. [WD15] Parcourir des enregistrements
    Par thierrybatlle dans le forum WinDev
    Réponses: 9
    Dernier message: 07/12/2010, 21h04
  2. Parcourir l'ensemble des enregistrements d'une table
    Par Aurèl90 dans le forum Access
    Réponses: 17
    Dernier message: 22/09/2005, 14h51
  3. Réponses: 7
    Dernier message: 21/04/2004, 17h16
  4. Réponses: 3
    Dernier message: 29/12/2003, 13h47
  5. Enlever tous les M&Mme des enregistrements
    Par marc olivier dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/07/2003, 12h24

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