Affichage automatique des données

Bonjour,

mon problème est comme suit:

- j'ai des données déjà saisies, à partir d'une fenêtre de saisie
- Ces données sont portées sur un Tableau
- Ce tableau est localisé dans une Base de donnée DB.mdb

sur une autre autre feuille, j'ai trois zones de texte

Zone n° 1 : Matricule
Zone n° 2 : Nom
Zone n° 3 : Prénom

mon objectif est de :

une fois le matricule est saisi, le Nom et le Prénom s'affiche automatiquement et respectivement, chacun sur sa zone.

je tente est je re tente sans résultat

je travaille sur VB6, et Microsoft Access 2003, avec la librairie ADO

si vous pourriez m'aider à écrire le code adéquat, je vous en serai reconnaissant.

Merci d'avance

7 réponses

  1. Bonjour,

    un exemple de code, base 2007, mais pas de difference pour le principe.

    une combobox pour le matricule et un certain nombre de textebox pour les infos

    https://www.cjoint.com/?CDgkqOIrSKH

    Bonne suite
    0
    1. Bonjour,

      Je suis toujours bloqué sur ce point. Je continue à ne pas réussir de faire afficher

      le NOM dans sa zone, le PRENOM dans la sienne

      sachant que :

      dans la base des données BD.mdb , le Matricule, le Nom et le Prénom sont déjà enregistrés

      ce que je tente est de faire afficher le Nom et le Prénom dans leurs zones respectives, une fois le numéro du matricule est sélectionné sur le comboText

      mes objets sont :

      cmbMatricule
      TNom
      TPrenom

      la liaison avec la base des données se fait par :

      SQLs="select * from table"

      la BD est localisée sur Access 2003

      Provider=" Microsoft.Jet.OLEDB.4.0"

      Merci pour votre aide
      0
      1. Bonjour,

        Avez-vous regarde le code de ce que j'ai mis a dispo????? Normalement vous n'avez qu'a copier en adaptant vos infos et champs. La connexion est un peu differente, mais sans plus.

        A+
        0
        1. Merci pour votre attention, le lien que vous m'aviez indiqué m'a inspiré.
          J'ai enfin réussi mes tentatives merci une autre fois.

          Voilà ce que j'avais fais

          A l'intérieur de l'objet ComboBox ( cmbMatricule) j'ai écris le code suivant :

          Private Sub cmbMatricule_KeyPress(KeyAscii As Integer)
          
          Dim n
          Dim x
          Dim z
          
          z = CLng(cmbMatricule)
          
          SQLs = " select * from TableauInfo where MATRICULE='" & CLng(cmbMatricule) & "'"
          If RS.State = adStateOpen Then RS.Close
          RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
          
          If KeyAscii = 13 Then
          If RS.EOF And RS.BOF Then
          MsgBox "Ce numéro existe déjà", vbCritical + vbMsgBoxRight, "Erreur"
          
          Else
          
          RS.MoveFirst
             For x = 0 To n
             
          TCin = RS![CIN]
          TNom = RS![NOM]
          TPrenom = RS![PRENOM]
             
            Next
             
          End If
          
          RS.Close
          End If
          End Sub
          


          Sur la feuille au moment du chargement

          Private Sub Form_Load()
          
          
          Do Until RS.EOF
          cmbMatricule.AddItem (RS![MATRICULE])
          RS.MoveNext
          Loop
          
          End Sub
          0
          1. Bonjour,

            Ceci aurait ete un peu mieux, par contre quelques questions:

            Private Sub Form_Load() 
                'RS est rempli comment???????? 
                'en general il vaut mieux faire une requete avec un order by 
                ' pour avoir un tri croissant ou decroissant des donnees 
                Do Until RS.EOF 
                    cmbMatricule.AddItem (RS![MATRICULE]) 
                    RS.MoveNext 
                Loop 
            End Sub 
            
            Private Sub cmbMatricule_KeyPress(KeyAscii As Integer) 
                Dim n       '?????????? pas initialise par la suite 
                Dim x 
                Dim z 
            
                z = CLng(cmbMatricule) 
            
                SQLs = " select * from TableauInfo where MATRICULE='" & CLng(cmbMatricule) & "'" 
                If RS.State = adStateOpen Then RS.Close 
                RS.Open SQLs, Db, adOpenKeyset, adLockPessimistic 
                'peut-etre rajouter le controle de la longueur du matricule 
                If KeyAscii = 13 Then 
                    If RS.EOF And RS.BOF Then       'recordset vide 
                        'MsgBox "Ce numéro existe déjà", vbCritical + vbMsgBoxRight, "Erreur" 
                        MsgBox "Ce numéro n'existe PAS", vbCritical + vbMsgBoxRight, "Erreur" 
                    Else 
                        RS.MoveFirst 
                        'pourquoi une boucle si matricule unique????? 
                        'For x = 0 To n 
                        TCin = RS![CIN] 
                        TNom = RS![NOM] 
                        TPrenom = RS![PRENOM] 
                        'Next 
                    End If 
                    RS.Close 
                End If 
            End Sub 


            Bonne suite
            0
            1. Bonjour L'ami,
              Concernant votre première remarque,
              le RS. est rempli par la phrase SQLs suivante :

              Private Sub Form_Load()
              PoolConnection
              SQLs = "select * from TableauInfo"
              If RS.State = adStateOpen Then RS.Close
              RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
              
              Do Until RS.EOF
              cmbMatricule.AddItem (RS![MATRICULE])
              RS.MoveNext
              Loop
              
              End Sub


              Pour le tri par ordre croissant, j'ai sélectionné la valeur True de la propriété Sorted
              de l'objet cmbMatricule.

              Pour la boucle For x=0 to n
              c'est vrai, j'en ai pas besoin.

              comme ça la Dim x et la Dim n n'ont plus besoin à être

              Merci pour votre aide. Je ne vous cache pas. Je ne suis qu'un passionné du Visual Basic, je n'ai aucune formation informatique.

              Ceci dit,

              Ce soir je tente de réussir la différence entre deux zone d'heures

              Sur la cmbHEntreeMatin : j'ai une heure
              sur la cmbHSortieMatin : j'ai une autre heure

              Sur le TTotalHMatin : je dois avoir le nombre d'heures ( c'est à dire la différence entre cmbHSortieMatin et cmbHEntreeMatin )

              Merci pour vos suggestions

              A +
              0
              1. Bonjour,

                Tout simplement:

                ex:

                Private Sub Command1_Click()
                Dim x As Date
                x = CDate(Textbox2) - CDate(Textbox1)

                Command1.Caption = x
                End Sub


                Bonne suite
                0