Affichage automatique des données

Fermé
mohalesage - 5 avril 2013 à 23:46
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 - 10 avril 2013 à 09:13
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

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
6 avril 2013 à 10:20
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
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 1
8 avril 2013 à 00:41
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
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
8 avril 2013 à 10:56
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
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 1
9 avril 2013 à 02:38
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
Modifié par f894009 le 9/04/2013 à 08:36
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
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 1
10 avril 2013 à 01:57
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
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
10 avril 2013 à 09:13
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