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 :

[VBA] Utilisation du Bookmark


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Inscrit en
    Juin 2006
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 320
    Par défaut [VBA] Utilisation du Bookmark
    Bonjour à tous,
    Dans un formulaire, je peux choisir une personne (grâce à une zone de liste) pour un dossier (un enregistrement). Un sousFormulaire donnant les infos sur eux est mis à jour.
    J'ai eu du mal mais j'ai fini par faire en sorte que lorsque que je change la personne pour un enregistrement, le sousFormulaire se mette à jour puis reste sur le même enregistrement avec un bookmark:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Modifiable60_AfterUpdate()
    Dim MonSignet As Variant
        'stockage de l'enregistrement courant
        MonSignet = Me.Bookmark
        Me.Requery
        'repositionnement sur le bon enregistrement
        Me.Bookmark = MonSignet
    end sub
    Ca, ça marchait très bien quand je modifiai la personne pour un enregistrement existant.
    Mais le formulaire revient sur l'enregistrement n°1 si l'enregistrement que je viens de modifier est un nouvel enregistrement.
    Avez-vous une idée pourquoi?

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 137
    Par défaut
    Bonjour amie transatlantique.

    Je me pose une question bête... pourquoi n'utilise-tu pas les liens formulaires/sous-formulaires au lieu de travailler avec des bookmarks.

    Tu t'affranchirais de ces petits problèmes. Mais peut-être as-tu une contrainte technique ?

    Pour l'explication de ton problème :

    Lorsque tu crées un nouvel enregistrement le recordset du sous-form n'a pas d'enregistrement correspondant (ce qui est normal) cependant il doit se positionner sur un enregistrement obligatoirement. C'est pour cela que ne trouvant pas de correspondant il affiche le 1er du recordset.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre éclairé

    Inscrit en
    Juin 2006
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 320
    Par défaut
    Bonjour petit "métro" qui se caille les fesses
    (métro = petit surnom donné aux métropolitains ici...),

    pourquoi n'utilise-tu pas les liens formulaires/sous-formulaires au lieu de travailler avec des bookmarks.
    C'est ce que je fais. En fait, je t'explique:
    mon formulaire principal gère les dossiers. Pour faciliter la gestion du demandeur associés aux dossiers, j'ai intégré une zone de liste basée sur une requête.
    Jusqu'ici, c'est pas bien difficile.
    Pour plus de transparence pour les utilisateurs de la BD, un sous-formulaire se met à jour lorsque qu'un demandeur est choisi dans la zone de liste. Ce sous-formulaire donne toutes les infos dispo sur la personne choisie.

    Donc voilà-voilà comment ça marche. En théorie.

    Quand le dossier existe déjà, pas de pb: à la sélection/changement de demandeur, l'enregistrement se met à jour et le focus retourne sur le dossier en cours avec le bookmark.
    Lorsque tu crées un nouvel enregistrement le recordset du sous-form n'a pas d'enregistrement correspondant (ce qui est normal) cependant il doit se positionner sur un enregistrement obligatoirement. C'est pour cela que ne trouvant pas de correspondant il affiche le 1er du recordset.
    Je m'en doutais. Tu ne saurais pas comment contourner le problème?

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 137
    Par défaut
    Dans ce cas je ferai un test pour savoir si le bookmark à abouti, dans le cas contraire je positionnerais le curseur d'enregistrement sur un nouveau en n'oubliant pas de remplir la clef commune.


    Ici le code généré par access et modifié par mes soins.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        ' Rechercher l'enregistrement correspondant au contrôle.
        Dim rs As recordset
     
        Set rs = Me.Recordset.Clone
        rs.FindFirst "[monchamp] = '" & Me![maliste] & "'"
        If Not rs.EOF Then 
           Me.Bookmark = rs.Bookmark
        else
           rs.addnew
           rs.fields("ChampClef") = "maclef"
           rs.update
        endif
        rs.close
        set rs = nothing
    On voit sur la ligne de test rs.EOF (fin de fichier indique que la recherche n'a pas abouti).
    le Addnew pour la création
    l'ajout de la clef
    la sauvegarde
    on ferme proprement.

    Pas trop froid aujourd'hui en tout cas baucoup moins qu'il y 1 semaine ou nous avions les fesses dans un iceberg...
    Petites carresses aux matoutous
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre éclairé

    Inscrit en
    Juin 2006
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 320
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rs.FindFirst "[monchamp] = '" & Me![maliste] & "'"
    [monchamp] ==> id_personne ou id_dossier?
    car ma liste fait le lien avec des personnes et, là, on devrai lui dire de chercher un enregistrement qui corresponde au numéro du dossier, non?

    Quant aux matoutous, mouias, moi je préfère les ibis rouges, c'est plus funky et ça "urticarise" moins...

  6. #6
    Membre éclairé

    Inscrit en
    Juin 2006
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 320
    Par défaut
    Ah, oui, j'ai oublié: le code bloque sur la même ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rs.FindFirst "id_personne = " & Me!Modifiable60.Value
    "Erreur de compilation: Membre de méthode ou de données introuvable"

Discussions similaires

  1. [VBA] utilisation de thread
    Par nemesys971 dans le forum VBA Access
    Réponses: 19
    Dernier message: 10/10/2008, 10h49
  2. Utilisation des bookmarks dans access VBA
    Par nikolla dans le forum VBA Access
    Réponses: 1
    Dernier message: 31/05/2007, 22h29
  3. [VBA] utiliser une macro contenue dans un autre classeur
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 01/02/2006, 18h46
  4. [VBA]Utiliser les objet disponible d'un programme en VB
    Par seblefebvre dans le forum Général VBA
    Réponses: 13
    Dernier message: 01/02/2006, 10h34
  5. [EXCEL][VBA] Utilisation des formules Excel en VBA
    Par Amanck dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/12/2005, 15h08

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