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 :

Acces à la proprieté MaxRecords


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2008
    Messages : 152
    Par défaut Acces à la proprieté MaxRecords
    Bonjour je suis nouveau sur ce forum. Je suis automaticien et plus axé sur les automates programmables et les logiciels IHM.
    Depuis le mois de juin j'ai décidé de suivre une formation pour utilisé ACCESS via mes heures de DIF, j'avais vu un peu les SGBD lors de mes études mais c"est très loin !! J'ai fait 3 jours "initiation" ou on voit la base d'Access et 3 jours plus spécialisés dans la partie automatisation et VBA. Il me reste 2 jours à faire fin septembre.
    Voila pour les présentations, maintenant passons à mon problème dans un formulaire de consultation d'une table j'ai un bouton suivant et précédent pour parcourir les enregistrements pour une modification éventuelle.
    Les bouton suivant et précédent test les variables acFirst et acLast pout tester si l'on est au dernier enregistrement. Si c'est le cas mesBox d'avertissement et disparition du bouton concerné.
    Cela marche sauf que pour la variable acFirst (premier) cela marche. Mais pour acLast pour une raison que je n'explique je ne vais pas jusqu'au dernier enregistrement valide ????
    Je me suis donc rabattu sur la variable MaxRecords j'ai repris l'exemple donné par l'aide de VBA mais systématiquement j'ai une erreur erreur exécution 2455 " La référence d'une expression MaxRecords n'est pas valide" ?
    Voici la portion de code concernée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Form_Open(Cancel As Integer)                ' a L'ouverture du formulaire
    
     Dim monformulaire As Form
     
      Set monformulaire = Forms("FModifsPiecesStockElec")  'Initialisation du formulaire
      DoCmd.OpenForm ("FModifsPiecesStockElec")            ' ouverture du formulaire
      maxi = Forms("FModifsPiecesStockElec").MaxRecords
      ChangeCouleur (Me)                                     ' Change les couleurs des etiquettes des cases à cocher
      DoCmd.GoToRecord , , acFirst                         ' on pointe sur le premier enregistrement
    End Sub
    La syntaxe utilisée pour récupérer maxRecords est celle donnée dans l'aide VBA. La variable maxi est déclarée en tête de module après Option compare afin d'être public pour tout le module, et notamment dans la procedure évènementielle du bouton suivant. Je bute sur ce problème depuis 3 jours si quelqu'un peu m'aider soit sur le probleme MaxRecords soit pourquoi acLast ne pointe pas réellement sur le dernier enregistrement.
    Merci d'avance

  2. #2
    Membre chevronné Avatar de robyseb
    Homme Profil pro
    Programmeur-Analyste
    Inscrit en
    Juillet 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-Analyste
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2011
    Messages : 305
    Par défaut
    Salut,

    Tu pourrais simplement englober l'erreur suite à "end of file" ou "begining of file" exemple:

    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
    private sub suivant_click()
    on error goto err_suivant_click
     
    docmd.gotorecord ,acnext
    me.precedent.visible = true
     
    exit_suivant_click:
    exit sub
    err_suivant_click:
     
    msgbox "Il n'y a plus d'enregistrement !", "vbinformation", "Fin des données"
     
    me.precedent.visible = true
    me.suivant.visible = false
     
    resume exit_suivant_click
    end sub 
    '-------------------------------------------------------------------------
    private sub precedent_click()
    on error goto err_precedent_click
     
    docmd.gotorecord, acprevious
    me.suivant.visible = true
     
    exit_precedent_click:
    exit sub
    err_precedent_click:
     
    msgbox "Vous êtes au début des données !", "vbinformation", "Début des données ! "
     
    me.precedent.visible = false
    me.suivant.visible = true
     
    resume exit_precedent_click 
     
    end sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Juillet 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2011
    Messages : 27
    Par défaut
    pour ma part et comme mon collègue ce dessus je n'utiliserai pas la méthode du MaxRecords.
    tu peux tester le positionnenent en début ou fin de fichier du recordset du formulaire.

    cf code ci dessous (nb : il faut ajouter en référence la librairie microsoft dao)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub BoutonPrecedent_Click()
    Dim rc As DAO.Recordset
        Set rc = Me.Recordset
        If rc.BOF Then
            Call MsgBox("vous avez déjà atteint le premier enregistrement")
        Else
            rc.MovePrevious
        End If
        set rc = Nothing
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub BoutonSuivant_Click()
    Dim rc As DAO.Recordset
        Set rc = Me.Recordset
        If rc.EOF Then
            Call MsgBox("vous avez déjà atteint le dernier enregistrement")
        Else
            rc.MoveNext
        End If
        set rc = Nothing
    End Sub

  4. #4
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2008
    Messages : 152
    Par défaut
    Citation Envoyé par robyseb Voir le message
    Salut,

    Tu pourrais simplement englober l'erreur suite à "end of file" ou "begining of file" exemple:

    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
    private sub suivant_click()
    on error goto err_suivant_click
     
    docmd.gotorecord ,acnext
    me.precedent.visible = true
     
    exit_suivant_click:
    exit sub
    err_suivant_click:
     
    msgbox "Il n'y a plus d'enregistrement !", "vbinformation", "Fin des données"
     
    me.precedent.visible = true
    me.suivant.visible = false
     
    resume exit_suivant_click
    end sub 
    '-------------------------------------------------------------------------
    private sub precedent_click()
    on error goto err_precedent_click
     
    docmd.gotorecord, acprevious
    me.suivant.visible = true
     
    exit_precedent_click:
    exit sub
    err_precedent_click:
     
    msgbox "Vous êtes au début des données !", "vbinformation", "Début des données ! "
     
    me.precedent.visible = false
    me.suivant.visible = true
     
    resume exit_precedent_click 
     
    end sub

    Merci 1000 fois cela marche Seulement il ne faut pas utiliser la propriété me.précèdent.visible true/false qui génere une erreur 2165 "impossible de masquer le control actif" la parade j'ai pris la propriété Transparent qui fait aussi apparaitre ou disparaitre le bouton mais sans généré d'erreur.
    Encore merci pour ton aide. J'aurais surement à demander d'autres astuces dans la base que je suis en train de constituer. Venant durant mes études de l'univers Pascal & C puis Delphy, le vba n'est pas évident pour moi même si le concept ressemble beaucoup à Delphy sauf la syntaxe et la méthode.

  5. #5
    Expert confirmé
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Par défaut
    Bonsoir,

    Il existe de nombreuses ressources dans la FAQ ou dans les Sources.

    Par exemple, pour recréer les boutons de navigation.

    Domi2

  6. #6
    Membre chevronné Avatar de robyseb
    Homme Profil pro
    Programmeur-Analyste
    Inscrit en
    Juillet 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-Analyste
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2011
    Messages : 305
    Par défaut
    Super vraiment content que mon code fonctionne pour toi et merci du tuyau pour la propriété ... j'ai écrit ce code entre 2 biberons du bébé lolll

    N'oublie pas RÉSOLU si ton problème est réglé

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/11/2014, 19h44
  2. Réponses: 0
    Dernier message: 14/02/2009, 13h08
  3. Accès a une propriete protected depuis un objet Field
    Par caesarvanou dans le forum JDBC
    Réponses: 3
    Dernier message: 03/12/2007, 14h55
  4. [VB]Acces aux proprietes des fichiers windows
    Par oliviersof dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 27/01/2006, 17h10
  5. acces propriete autoexec
    Par coco21 dans le forum Access
    Réponses: 4
    Dernier message: 25/01/2006, 14h37

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