Problème Access VBA

Fermé
Klem - 16 juin 2006 à 09:57
blux Messages postés 26107 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 5 juin 2024 - 16 juin 2006 à 10:28
Bonjour à tous je suis en 1ère année de BTS Info de Gestion et j'ai un problème avec mon Pti de stage ,voici mon problème:
J'ai crée un formulaire Access pour une base de données comprenant une table Ordinateur avec une quantité importante de données(Processeur Ram etc).J'ai une liste déroulante avec le Matricule Utilisateur qui permet de faire le lien avec l'ordi qu'il possède.
Le gros problème est que je n'arrive pas a programmer le fait que quand je sélectionne le matricule je n'arrive pas à faire apparaitre dans les txtbox Processeur ram etc les informations qui vont avec .j'ai crée un recordset ,j'ai essayé d'utiliser la fonction seek mais rien a faire je ny arrive pas pouvee vous m'aidez
Voici mon code
Private Sub lst_matricule_change()
Set cx = New ADODB.Connection
cx.Provider = "Microsoft.jet.oledb.4.0"
cx.ConnectionString = "C:\Documents and Settings\Clément\Mes documents\Inventaire.mdb"

cx.Open

Set rs = New Recordset
rs.Open "Ordinateur", cx, adOpenDynamic, adLockOptimistic






For ligmat = 1 To 120



If lst_matricule = rs!Matricule_Utilisateur Then

rs.Index = "Matricule_Utilisateur"
rs.Seek = lst_matricule

txt_marque.Text = rs!Marque(lst_matricule.List)

txt_type.Text = rs!Nom(lst_matricule.List)
txt_proc.Text = rs!Processeur(lst_matricule.List)
txt_ram.Text = rs!Ram(lst_matricule.List)
txt_disque.Text = rs!Disque(lst_matricule.List)
txt_multi.Text = rs!Multimédia(lst_matricule.List)
txt_ecran.Text = rs!Ecran_Plat(lst_matricule.List)
txt_modem.Text = rs!Modem(lst_matricule.List)
txt_facture.Text = rs!Date_de_Facture(lst_matricule.List)
txt_ghost.Text = rs!Ghost(lst_matricule.List)
txt_motdepasse.Text = rs!Mot_de_passe(lst_matricule.ListIndex)
txt_log1.Text = rs!Nom_Logiciel_n°1(lst_matricule.List)
txt_log2.Text = rs!Nom_Logiciel_n°2(lst_matricule.List)
txt_log3.Text = rs!Nom_Logiciel_n°3(lst_matricule.List)
txt_log4.Text = rs!Nom_Logiciel_n°4(lst_matricule.List)
txt_log5.Text = rs!Nom_Logiciel_n°5(lst_matricule.List)
txt_log6.Text = rs!Nom_Logiciel_n°6(lst_matricule.List)
txt_log7.Text = rs!Nom_Logiciel_n°7(lst_matricule.List)
End If

Next

rs.Close

J'espere que vous m'avez compris sinon je vais me pendre ^^

1 réponse

blux Messages postés 26107 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 5 juin 2024 3 292
16 juin 2006 à 10:28
Salut,

ton appréhension du problème n'est pas la meilleure (ele est surtout très lourde à mettre en place. Voici ce que je te propose :

- tu crées un formulaire basé sur la table Ordinateur avec l'assistant, il va te mettre tous les champs de la table.

- dans ce formulaire, tu rajoutes une zone de liste (nommée Chx_Mat, par exemple) avec comme source, une requête qui cherche les matricules : SELECT Mat FROM Utilisateur;

Ensuite, tu écris un bout de code dans la propriété AprèsMAJ de ta liste dans lequel tu vas modifier la requête source du formulaire d'affichage des ordinateurs, pour qu'elle soit restreinte par ton choix dans la liste.
Dim StrSql As String
StrSql = "SELECT * FROM Ordinateur "
StrSql = StrSql + "WHERE Matricule_Utilisateur = '" & Chx_Mat.Value & "';"
MsgBox StrSql
Me.RecordSource = StrSql

Si le matricule est numérique, alors il ne faut pas mettre de ' dans la requête...

Ca t'irait ?
0