[Access VBA] problème pour récuperer un champ
RésoluPolux31 -
Bonjour a tous.
J'ai un petit problème et je suis sur que vous pourrez m'aider.
J'ai une BD Access avec pour tous les programmes de mon entreprises, tous les ordinateur ou ceux-ci (les prog) sont installé.
J'aimerai que quand je double clique sur la liste des programmes il m'affiche dans une 2 eme liste tt les pc ou ce programme serai installé..
et je sais pas comment résuperer le champ du programme pour faire ma requete....
Help!!
Configuration: Windows XP Internet Explorer 7.0
26 réponses
- 1
- 2
Récupérer un champ dans une liste Access pour alimenter une seconde liste répertoriant les PC où un programme est installé constitue le problème central de ce fil. Plusieurs réponses proposent d’utiliser la valeur retournée par la colonne sélectionnée, par exemple liste.column(0) ou liste.column(1), selon la colonne qui affiche le logiciel et son index. Ensuite, il faut adapter la requête créée en utilisant le bon numéro de colonne afin de filtrer les PC correspondants et d’afficher les résultats dans la deuxième liste. En cas d’erreur, vérifier que le rendu de la liste et les noms des colonnes concordent, et que le code associé à l’événement double-clique référence bien la colonne ciblée.
-
Salut,
Pourrais tu etre plus précis ? C'est la requete à réaliser que tu veux ? -
Hello
En VBA, il te suffit de faire :
nomListe.Value
Et là, il te renvoie la valeur sur laquelle tu as double-cliqué par exemple.
;) -
Merci pour vos réponse!!
EN fait pas forcement avec une requete mais j'aimerai recuperer cette valeur d'une maniere ou d une autre..
pour le : Nom_de_ma_liste.value j ai un probleme d execution 94 (utilisation incorrect de null)
:(-
Salut,
une zone de saisie peut rester vide, dans ce cas elle possède la valeur "null", mais on ne teste pas liste.value = "Null", on teste avec if isnull(liste.value)...
Pour le reste, il suffit donc d'affecter le contenu de la liste à une variable (ou de l'utiliser en tant que tel) :
toto = liste.value
if liste.value = "tata" then
dans ton cas, tu peux générer une requête qui tu mettras en source de la zone dans laquelle tu veux afficher tes PC :Dim StrSql As String StrSql = "SELECT num_pc WHERE " StrSql = " progra = '" & liste.value & "';" liste2.rowsource = StrSql
Mais c'est un exemple, car dans ton cas, je ne sais pas comment sont tes données et donc comment rechercher les PCs qui ont le programme que tu as sélectionné...- Merci pour ta réponse compléte.
Mon problème est maheureusement plus complexe il m semble...
Je m explique:
J ai une liste qui existe deja avec 3 colones (nom du programme, nom des machines, date du programme)(le tout est dans un formulaire)
moi se que je veut c est quand je double clique sur une ligne de ma liste (pour selectionner un nom de programme), access me retourne juste le nom du programme (et nn tt le ligne) pour que je puisse par la suite construire une requete pour afficher les machines ou le programme que j aurai selectionner est installer.
voila voila...
j espere que tu m as compris un peu mieu :)
parce que normalement ma liste ne devrai pas pouvoir etre NULL puisqu elle est completement rempli..
thanks pour tt
-
-
Programme le sur un "Double-Click" et teste le sur une liste non vierge à partir du formulaire.
Private Sub List0_DblClick(Cancel As Integer)
MsgBox List0.Value
End Sub
Pour éviter le message d'erreur, fais juste un test sur la valeur renvoyée :
If Not IsNull(List0.Value) Then
' Ton code
End If
;) -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bin, pour récupérer la valeur d'une liste, il suffit de déterminer quelle colonne est liée (ou de lier la "bonne colonne").
Dans la feuille des propriétés de la liste, sous l'onglet données, tu peux le paramétrer.
Blux a posté récemment la même manoeuvre en VBA mais je l'ai plus trouvée... -
salut
les noms que tu a dans ta liste sont rempli avec une requete c'est ca
peut tu la mettre pour que je te donne le code
moi c'est ce que j'ai fais quand je clique sur un nom d'un utlilisateur dans la liste ca me marque le nom de PC sur lequel ce trouve cette utilisateur
Si j'ai ta requete je pense que je pourrais t'aider -
Desolé mais je comprend pas trop ta requete
tu l'as fait avec l'assistant
est ce qu tu as une table PC qui contient lse champs "pc" "nom programme" -
je vais tenté quand meme
Dim Sql As String
Dim Qry As DAO.QueryDef
Dim rs As DAO.Recordset
Sql = "SELECT PC.nom_PC FROM PC"
Sql = Sql & " WHERE (((PC.nom_programme) = """ & Me.lstnom_prog & """)) "
DoCmd.DeleteObject acQuery, "nom_PC" 'supprime la requête
CurrentDb.CreateQueryDef "nom_PC", Sql 'crée une nouvelle requete
Set Qry = CurrentDb.QueryDefs("nom_PC")
Set rs = Qry.OpenRecordset
While Not rs.EOF
txtnom_PC = rs(0)
rs.MoveNext
Wend
Set Qry = Nothing
Set rs = Nothing
dans mon exemple je suppose que tu a une table qui s'appelle PC avec les champ "nom_PC" et "nom_programme"
""" & Me.lstnom_prog & """ c'est pour prendre la valeur de ta liste
par contre moi je l'affiche dans un texte je n'ai pas cherché pour la liste je pense que ca ce ressemble
il faut que tu creer une requete toute bidon vraiment nimp que tu appelle "nom_PC" seul le nom que tu donne a la requete est important -
je sais les champs sont merdique mais je peu pas changer c est une table exporter de fichier XLS..
Pour la requete c est le code que tu ma donné avant.. c est pas juste ? -
je ne sais pas mais tu me dit que
NomDeProgramme est une requete
c'est que tu l'as créé avant mais dit moi comment -
Ha ui sorry..
c est une requete tt simple... vu qu aucune table physique existe (juste une liaison sur les fueille exel..) il me faut une requete comme une table...
je sais pas si tu me comprend -
si je te comprend et il te marque un message d'erreur ou tu as juste ta requete qui est vide
-
Ciao..
J'ai creer une table nommer "Tbl_Prog" sur la base de ma requete..
Sql = "SELECT Tbl_Prog.NomPc FROM Tbl_Prog" Sql = Sql & " WHERE (((Tbl_Prog.NomProg) = """ & Me.lst_Resultat & """)) " DoCmd.DeleteObject acQuery, "nom_PC" 'supprime la requête CurrentDb.CreateQueryDef "nom_PC", Sql 'crée une nouvelle requete Set Qry = CurrentDb.QueryDefs("nom_PC") Set rs = Qry.OpenRecordset While Not rs.EOF ' MsgBox (Sql) txtTest.Value = rs(0) rs.MoveNext Wend Set Qry = Nothing Set rs = Nothing
NomPc et NomProg étant des nom de champ de ma table
nom_pc étant une requete tt simple
Je sais vraiment pas comment car normalement il faudrai que ma MsgBox me mette la requete avec le nom du champ que j ai sélectionner nn ? -
si tu veut que ta msgbox s'affiche il ne faut pas la mettre en commentaire
c'est quoi ton probleme ca ne met toujours rien dans ta requete ?-
-
-
-
-
Okay parce que la sa marche la requete... mais c est bizard alors que sa marche pas en VBA..
il faudrai traduire :
SELECT Tbl_Prog.NomPC FROM Tbl_Prog WHERE (((Tbl_Prog.NomProg)="Nero 7 Premium"));
en VBA avec a la place de "Nero 7 Premium" le champ sélectionner dans la liste ... et c est peu etre sa qui marche pas...
-
-
Je pense qu'il y a une probleme au niveau du "ma_liste.value"
etes vous sur que la propriété value raporte la veleur selectionné dans la liste ? -
j'ai dit plus haut que le .value pour moi ca ne sert a rien
pour moi le probleme vien de
Sql = "SELECT Tbl_Prog.NomPc FROM Tbl_Prog"
Sql = Sql & " WHERE (((Tbl_Prog.NomProg) = """ & Me.lst_Resultat & """)) "
on demande de selectionner des truc pour lequel le nomProg est = a la liste mais si tu affiche des nom de pc dans ta liste ca ne marchera jamais
tu me suis ? -
Ben comme tu peux le voir dans le message 62 sa serai juste le nom du programme qu il faudrai récuperer pour pourvoir faire la requete d afficher juste les nom des pc ou le prog est installé...
-
OK on va faire un test tous simple
tu creer un texte dans ton formulaire ou tu a ta liste tu l'appelle txttest et dans ta zone de liste tu creer le code sur click
txttest=lst_Resultat
et tu me dit si tu as quelque chose qui ce met dans le texte et surtout quoi -
Merci a vous 2..
J ai test mais une erreur (2185) apparait : impossible de faire reference a une propriété ou de la definir pour un controle si celle ci n est pas activé... -
c'est peut etre un probleme de reference dans option Vba mais je n'ai aucune idée de laquelle
- 1
- 2