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

IHM Discussion :

Activation boutons navigation


Sujet :

IHM

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 32
    Par défaut Activation boutons navigation
    Bonjour,

    Après de nombreux essais et recherches, je n'arrive pas à résoudre un petit soucis dans l'activation de mes boutons de navigation dans mes formulaires. J'ai saisi le code ci dessous mais à l'ouverture du formulaire ceux ci restent grisés malgré plusieurs enregistrements présents. Ils s'activent seulement dans mes formulaires de saisie lors d'un clic sur un bouton "nouvel enregistrement".

    Extrait du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Form_Current()
    ' active ou pas les boutons de navigation
    If Me.CurrentRecord = Me.RecordsetClone.RecordCount Then
    Me.btn_avt.Enabled = False
    Else
    Me.btn_avt.Enabled = True
    End If
     
    Me.btn_ar.Enabled = CBool(Me.CurrentRecord - 1)
    End Sub
    Merci d'avance pour votre précieuse aide

  2. #2
    Membre émérite Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Par défaut
    Quelle est l'erreur que te donne Access ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 32
    Par défaut
    Je n'ai pas de fenêtre d'erreur. Mon formulaire s'ouvre sans avoir acces aux boutons de navigation (grisés). J'ai toutefois réussi à les activer sur un formulaire (sans sous formulaire intégré). J'ai donc fait le test en supprimant le sous formulaire là où ca ne marche pas et toujours rien... Ce formulaire est ouvert à partir d'une requête écrite dans un recordset. La requete fonctionne très bien. Les boutons fonctionnent très bien sans ces conditions. Mais je souhaite vraiment les appliquer pour les futurs utilisateurs.

    Dans le cas où j'ai plusieurs enregistrements, j'ai rusé en demandant un setfocus à l'ouverture sur mon "bouton suivant", dans ce cas les boutons fonctionnent très bien. Mais, ce n'est pas une solution car parfois je n'ai qu'un seul enregistrement affiché notamment lors de l'éxécution de requetes !

    Je ne vois donc toujours pas d'où ca peut venir...

  4. #4
    Membre émérite Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Par défaut
    Si tu n'as pas de message d'erreur, c'est qu'Access considère qu'il n'y a aucun enregistrement.
    Un bon conseil pour te débuguer :
    quand tu as une erreur tu clique sur débogage, et tu passe la souris sur les différents éléments de ton code. Tu vois ainsi la valeur des éléments, et ça aide souvent à comprendre ce qui clcohe et pourquoip. Si tu n'as pas de message d'erreur qui te permet de déboguer, tu lace un point d'arrêt dans ton code, puis tu vois si tout va bien avec la méthode que je t'ai donné. Si tout est ok, tu place ton point d'arrêt plus bas, et ainsi de suite jusqu'à trouver ton souci.
    C'est un bon réflèxe à prendre et ça m'a aidé plus d'une fois pour comprendre un dysfonctionnement

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 32
    Par défaut
    Bonjour,

    Je te remercie Azertix, j'ai pris connaissance de ta réponse aujourd'hui, j'étais absent ces derniers jours.
    J'ai effectué plusieurs tests pour essayer de comprendre mon problème. J'ai utilisé des messages box ou la fenêtre execution VBA afin de retourner les valeurs des "CurrentRecord" et des "recordsetClone.RecordCount" à partir de mes différents formulaires remplis à partir de requetes. D'après ce que j'ai pu identifier, il s'avèrerait que mon anomalie viendrait de la valeur du "RecordsetClone.RecordCount" qui est parfois égale à 1. Cette valeur vient alors désactiver mon "bouton avant" (ce qui est logique d'après mon code de desactivation du bouton, current record = RecordsetClone.RecordCount = 1). Dans l'autre cas où ca fonctionne (où le bouton avant est disponible) mon RecordsetClone.RecordCount retourne la totalité des enregistrements de ma table. Là aussi il y a une erreur même si le "bouton avant" apparait, le nombre d'enregistrements ne correspond pas aux enregistrements issues de ma requête.
    D'après mes recherches sur le web et ce que j'en ai compris, il se pourrait que ce soit lié à mon type de recordset utilisé lorsque j'exécute ma requête. Mais là je suis un peu perdu...
    Pour l'écriture du code de mes requêtes et du recordset, étant débutant en VBA, je me suis inspiré de l'exemple donné en ADO dans le bouquin "VBA pour Access et pour les nuls"

    Exemple d'une de mes requêtes

    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
    38
    39
    40
    Private Sub btn_req_click()
     
    Dim cnn1 As ADODB.Connection
    Set cnn1 = CurrentProject.Connection
     
    Dim myrecordset As New ADODB.Recordset
    myrecordset.ActiveConnection = cnn1
     
    ' vérification du theme choisi "Clients"
     
    If Me.cmb_theme = "Clients" Then
     
    Dim mysql As String
     
    ' Requête selection pour formulaire consultation client
     
    mysql = "SELECT..."
    mysql = mysql + " WHERE T_FICHES_ASTREINTE.ID_CLIENT <> 0"
     
    ' conditions du where avec ou sans muticritère (je donne juste un extrait)
     
    If Me.chk_nom_cl And Me.chk_req_multi.Value = 0 Then
    mysql = mysql + " AND T_FICHES_ASTREINTE.ID_CLIENT = " & Me.cmb_req_client.Value & " "
    End If
     
    'ouverture recordset
     
    myrecordset.Open mysql
     
    'Ouverture formulaire, maj source
     
    DoCmd.OpenForm "F_REQ_NOM", , , , acFormReadOnly
    Forms![F_REQ_NOM].RecordSource = mysql
     
    ' vide recordset + deconnect
     
    'myrecordset.Close
     
    'Set myrecordset = Nothing
    'Set cnn1 = Nothing
    Je suis donc preneur de tous conseils. Je suis vraiment bloqué par ce problème de navigation dans les formulaires. Je dois fournir cette base à des utilisateurs pour des tests...
    Merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 32
    Par défaut
    Bonjour,

    Je me permets de relancer mon post. Je suis toujours bloqué avec cette histoire de recordset. Au delà, de mon soucis avec mes boutons de déplacement (visible ou pas), j'ai voulu également empêcher l'ouverture d'un formulaire si les enregistrements sont nuls, en m'inspirant de ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      If Me.RecordsetClone.RecordCount = 0 Then
            MsgBox "Le formulaire ne s'ouvre pas car il est vide.", vbInformation
            Cancel = True 'Annule l'ouverture
        End If
    Je rencontre toujours un problème, mon nombre d'enregistrement ne correspond pas aux valeurs retournées par ma requête.

    Je me pose alors des questions sur cette histoire de recordset. J'ai essayé d'insérer dans mon code, au niveau d'une requete exécutée (avec un recordset), une msgbox pour vérifier le nombre d'enregistrements retourné par ma requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     msgbox Me.RecordsetClone.RecordCount
    La valeur qui apparait est celle de la totalité de mes enregistrements. Pourtant la requête fonctionne correctement et affiche bien les différentes valeurs liées à mon critère de sélection (cf. exemple de requête ci-dessus)

    Si quelqu'un pouvait m'éclairer sur le comptage du nombre d'enregistrements (avec une requête utilisant un recordset)...

    Merci d'avance (j'espère avoir été clair dans mes explications...)

Discussions similaires

  1. activer bouton aprés la saisie JTextField
    Par fraisa1985 dans le forum Composants
    Réponses: 4
    Dernier message: 03/05/2008, 00h31
  2. Activation bouton selon utilisateur
    Par hugo1992 dans le forum Sécurité
    Réponses: 11
    Dernier message: 27/01/2008, 15h13
  3. [JFileChooser]Désactiver les boutons navigations
    Par doudine dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 19/06/2006, 15h10
  4. Activer boutons checkbox SEULEMENT si un input radio est coché
    Par bobic dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 28/04/2006, 15h05
  5. [VB6] Bouton navigation précédent et suivant
    Par predictus dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 23/03/2006, 23h36

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