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 :

Problèmes d'acces aux enregistrement d'une table. [AC-2010]


Sujet :

IHM

  1. #1
    Membre régulier
    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
    Points : 110
    Points
    110
    Par défaut Problèmes d'acces aux enregistrement d'une table.
    Bonjour,

    J'ai un souci un peu curieux, mais il y a sans doute une explication rationnelle que je n'ai pas !
    Dans une liste de choix je selectionne un numéro d'equipement, je récupere l'ID de la fiche correspondant à l'équipement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ' Selection d'un N° usine moteur
    Private Sub ListMotNUsine_AfterUpdate()
        VNEnreg = ListMotNUsine.Value
        OuvreModifs
    End Sub
    En me mettant en pas à pas avec le débug je constate que je récupere bien la bonne valeur ID. La variable VNEnreg et public de type long.

    Plus loin dans le programme j'execute le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Form_Open(Cancel As Integer)
    Dim Monformulaire As Form
    Dim rc As DAO.Recordset
        Set Monformulaire = Forms("FModifsMoteurs")       'Inialisation du formulaire
        DoCmd.OpenForm ("FModifsMoteurs")                  ' ouverture du formulaire
        DoCmd.GoToRecord acDataForm, "FModifsMoteurs", acGoTo, VNEnreg
    Dans la derniere ligne au niveau de l'instruction GotoRecord, toujours en mode pas à pas j'ai toujours la bonne valeur d'ID dans VNEnreg mais si je tape dans les premiers enregistrements de la table cela marche mais ensuite comme il y a des trous dans la N° des ID (Fiches effacées) je me retrouve par exemple avec une demande de 40 dans la variable VNEnreg et j'affiche l'enregistrement 56 ? Le systeme compte les trous ou quoi ?
    Un avis un peu eclairé serait le bienvenue, car là

  2. #2
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour Jeanpierre71.
    Avec GoToRecord ,l'argument Reference ne represente pas la valeur à atteindre ,mais le numéro de l'enregistrement à atteindre (sa position, si tu préfère).
    Pour connaitre cette position ,tu peux faire une fonction qui recherche une valeur (VNEnreg dans ton cas) ,et donne sa position dans le recordset:
    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
    Function TrouvePositionRecordset(ByVal NUMERO As Long) As Integer    '<255
        Dim rst As DAO.Recordset
        Dim StrSql As String
        Dim Nb As Integer
        StrSql = Forms!FModifsMoteurs.RecordSource
     
        Set rst = CurrentDb.OpenRecordset(StrSql, dbOpenSnapshot)
        rst.MoveFirst
        Nb = 1
        While Not rst.EOF
            If rst.Fields("VNEnreg") = NUMERO Then
                TrouvePositionRecordset = Nb
                GoTo fin:
            End If
            rst.MoveNext
            Nb = Nb + 1
        Wend
     
    fin:
        rst.Close
        Set rst = Nothing
     
     
    End Function
    et ta sub form open:
    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)
        Dim Monctrl As Integer
        Dim Monformulaire As Form
        Dim rc As DAO.Recordset
        Set Monformulaire = Forms("FModifsMoteurs")       'Inialisation du formulaire
        DoCmd.OpenForm ("FModifsMoteurs")                  ' ouverture du formulaire
     
        Monctrl = TrouvePositionRecordset(VNEnreg)
     
        DoCmd.GoToRecord acDataForm, "FModifsMoteurs", acGoTo, Monctrl
    Cdlt

  3. #3
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Autant utiliser directement la méthode FindFirst du recordset du formulaire

  4. #4
    Membre régulier
    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
    Points : 110
    Points
    110
    Par défaut
    Merci a vous, finalement j'ai trouvé beaucoup plus simple mais grace à vous quand même.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     Set Monformulaire = Forms("FModifsMoteurs")                     ' Inialisation du formulaire
         selection = " [Numero usine] like '*" & VNEnreg & "*'"          ' définition du code SQL parametre
         DoCmd.OpenForm "FModifsMoteurs", , , selection                  ' ouverture du formulaire
    Et cela marche du tonnerre Mais encore merci pour m'avoir mis sur la voie

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

Discussions similaires

  1. [SQL] Problème avec nombre d'enregistrements dans une table
    Par zana74 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 14/08/2006, 14h28
  2. Problème avec nombre d'enregistrements dans une table
    Par zana74 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/08/2006, 14h21
  3. Problème d'accès aux méthodes d'une classe
    Par RR instinct dans le forum Langage
    Réponses: 5
    Dernier message: 26/06/2006, 15h51
  4. Bloquer l'accès à un enregistrement d'une table
    Par Denti-fritz dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/12/2005, 16h59
  5. [TOMCAT] JSP problème d'accès aux méthodes d'une classes
    Par gunnm dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 22/05/2004, 15h02

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