Problème Access VBA
Klem
-
blux Messages postés 27121 Date d'inscription Statut Modérateur Dernière intervention -
blux Messages postés 27121 Date d'inscription Statut Modérateur Dernière intervention -
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 ^^
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 ^^
A voir également:
- Problème Access VBA
- Acer quick access - Forum logiciel systeme
- Quick Access service ✓ - Forum PC portable
- Désinstaller ACER QUICK ACCESS - Forum Logiciels
- Access appdata - Guide
- Excel compter cellule couleur sans vba - Guide
1 réponse
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.
Si le matricule est numérique, alors il ne faut pas mettre de ' dans la requête...
Ca t'irait ?
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 ?