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 :

Mémoriser les bookmarks


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 38
    Par défaut Mémoriser les bookmarks
    Bonjour,

    J'ai besoin de mémoriser des bookmarks d'un recordset dans une table.
    Dans la table la colonne typée en Texte ou en objet OLE semble bien enregistrer le bookmark.
    Par contre, à l'affectation depuis la table j'ai une erreur de signet incompatible.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim bmk As Variant
    bmk = DLookup("ColonneTexteOuObjetOLE", "MaTable")
    rs.Bookmark = bmk
    Merci pour vos réponses.

  2. #2
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Par défaut
    Bonjour,

    As-tu pensé à faire F1 après avoir mis "Bookmark " en surbrillance ?

    As-tu vérifié ce que renvoie ta variable bmk ? (elle ne veut que des string ou des variant)

    As-tu aussi vérifié que dans ton recordset, la propriété Bookmarkable a la valeur True ?

    Dans la table la colonne typée en Texte ou en objet OLE semble bien enregistrer le bookmark.
    elle semble ou c'est sûr ?

    ton recordset est-il bien initialisé ?

    Pourrais-tu nous mettre un peu plus de ton code afin qu'on puisse t'en dire davantage ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 38
    Par défaut
    Merci pour la réponse.
    Un peu plus de 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    Private Sub Recherche()
    Dim db As Database
    Dim rs As Recordset
    Dim rsb As Recordset
    Dim bmk As Variant
     
        Set db = CurrentDb
        Set rs = db.OpenRecordset(MaTable, DB_OPEN_DYNASET)
        'Recherche du record
        Do Until rs.EOF
            If rs("[MonChamp]") = MaRecherche Then
                bmk = rs.Bookmark
                'Sauvegarde de bmk dans la table MaSauvegarde
                'La colonne MonBookmark a été typée Texte et ensuite OLE (=Echec pour la récupération)
                Set rs = db.OpenRecordset(MaSauvegarde, DB_OPEN_DYNASET)
                rsb.AddNew
                rsb("[MonBookmark]") = bmk
                rsb.Update
                rsb.Close
                Exit Do
            End If
        Loop
    End Sub
     
    Private Sub Récupération()
    Dim db As Database
    Dim rs As Recordset
    Dim bmk As Variant
     
        Set db = CurrentDb
        Set rs = db.OpenRecordset(MaTable, DB_OPEN_DYNASET)
        rs.MoveFirst
        bmk = DLookup("MonBookmark", "MaSauvegarde")
        rs.Bookmark = bmk   'Erreur'
     
    End Sub

  4. #4
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour,

    Le problème vient de ce qu'un signet est un tableau d'octets.
    En le sauvant dans un champ texte il est convertit dans le type du champ.

    Sinon, voici ce que dit l'aide :
    ... vous ne pouvez pas utiliser indifféremment les signets d'objets Recordset différents, même s'ils ont été créés à l'aide du même objet ou de la même instruction SQL.
    Les signets sont créés à l'ouverture du recordset.
    Rien ne garantie qu'ils soient toujours les mêmes, d'une fois à l'autre, même s'il s'agit de la même table.

    Une bonne vielle clé ou un champ avec index unique pourront faire office de signet.
    Un champ type NuméroAuto par exemple.

    A+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 38
    Par défaut
    Merci ! Les bookmarks sont donc ephémères.
    Je vais trouver une solution de type clé.

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

Discussions similaires

  1. Mémoriser les valeurs d'un champ calculé
    Par pierrot67 dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/01/2007, 12h07
  2. Mémoriser les champs d'un formulaire
    Par Yoshidu62 dans le forum Langage
    Réponses: 11
    Dernier message: 25/07/2006, 14h44
  3. HTTP_REFERER et les bookmarks
    Par Yoshidu62 dans le forum Langage
    Réponses: 5
    Dernier message: 06/07/2006, 12h25
  4. [C#] mémoriser les caractères saisis au clavier
    Par tiboleo dans le forum Windows Forms
    Réponses: 1
    Dernier message: 04/06/2006, 12h25

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