OVH Cloud OVH Cloud

Requetes et listes

7 réponses
Avatar
debdrai
Salut !

J'ai deux nouveaux casse-tete concernant les listes. Soit un
formulaire dans lequel j'ai une zone de liste (non déroulante), une
autre zone de liste (déroulante) et un champ texte pour mettre des
commentaires. Dans la 1ere zone de liste (non deroulante)appelée
Titre, l'utilisateur introduit un nouvel item à l'aide d'une requete
ajout (ex:Le seigneur des anneaux) . Puis il sélectionne les
caractéristiques de l'Item dans la liste déroulante Catégorie (ex:
film, livre, dvd, etc). Enfin, il remplit le champ Commentaires.
Enfin, il clique sur un bouton qui enregistre le contenu de Catégorie
et du champ Commentaires à l'aide d'une requete Mise à jour. Jusque
là, ça marche.

1er probleme: Quand je clique pour sélectionner et ajouter un nouveau
nouvelle item dans Titre, j'aimerai que les 2 autres controles
Categorie et Commentaires se positionne sur le nouvelle enregistrement
crée et deviennent donc vide (meme principe qu'un nouvel
enregistrement dans lequel tous les champs se vident). Quelqu'un
connait-il le code VBA ou la fonction pour faire ça ?

2e probleme: quand quelqu'un sélectionne un item deja rentré dans
Titre, je voudrais que les 2 champs se positionnent également sur
l'enregistrement sélectionné et affiche les bonnes données, soit la
bonne Catégorie et le commantaire relatif au titre sélectionné...

Une idée ? Merci beaoucoup. Deb

7 réponses

Avatar
Xavier HUE
Bonjour 'tite Deb,

Apparemment, tu travailles avec des formulaires et des
controles indépendants.

Pour remettre tes zones de saisie à blanc, attribue leur
la valeur chaine vide ou Null. Comme ceci par exemple:

Me.TaListeDeroulante.Value = Null
Me.TonCommentaire.Value = Null

Pour "positionner" tes zones de saisie sur
l'enregistrement sélectionné dans ta liste non déroulante,
tu as 2 possibilités:

1) Ajouter ces infos dans ta liste non déroulantes, en
masquant les colonnes. Lorsque l'utilisateur clique sur un
Item de la liste, il te suffit de récupérer le contenu des
colonnes Catégorie et Commentaire.
Me.TaListeDeroulante.Value =
Me.TaListeNonModifiable.Column(NuméroColonneCategorie)

2) Passer par un recordset pour récupérer les infos
cherchées.
Dim db As DAO.Database
Dim Frd As DAO.Recordset

Set db = CurrentDb

Set Frd = db.OpenRecordset("SELECT Categorie,
Commentaire FROM TaTable WHERE Titre = " &
Me.TaListeNonModifiable, dbOpenSnapshot)

Me.Categorie = Frd.Fields("Categorie").Value
Me.Commentaire = Frd.Fields("Commentaire").Value

Frd.Close
Set Frd = Nothing
db.Close
Set db = Nothing

OK?

Cordialement.
Avatar
Raymond [mvp]
Bonjour La p'tite Deb, faudra changer tu ne l'es plus !

ça me semble un peu fouillis ton formulaire.
il semble qu'il ne soit pas basé sur une requête ou une table. tu n'as pas
besoin de faire tout ça. tu crées un formulaire basé sur ta table avec
l'assistant et tu auras toutes les fonctions d'ajout, modif, suppression
etc.....

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"La p'tite Deb" a écrit dans le message de
news:
Salut !

J'ai deux nouveaux casse-tete concernant les listes. Soit un
formulaire dans lequel j'ai une zone de liste (non déroulante), une
autre zone de liste (déroulante) et un champ texte pour mettre des
commentaires. Dans la 1ere zone de liste (non deroulante)appelée
Titre, l'utilisateur introduit un nouvel item à l'aide d'une requete
ajout (ex:Le seigneur des anneaux) . Puis il sélectionne les
caractéristiques de l'Item dans la liste déroulante Catégorie (ex:
film, livre, dvd, etc). Enfin, il remplit le champ Commentaires.
Enfin, il clique sur un bouton qui enregistre le contenu de Catégorie
et du champ Commentaires à l'aide d'une requete Mise à jour. Jusque
là, ça marche.

1er probleme: Quand je clique pour sélectionner et ajouter un nouveau
nouvelle item dans Titre, j'aimerai que les 2 autres controles
Categorie et Commentaires se positionne sur le nouvelle enregistrement
crée et deviennent donc vide (meme principe qu'un nouvel
enregistrement dans lequel tous les champs se vident). Quelqu'un
connait-il le code VBA ou la fonction pour faire ça ?

2e probleme: quand quelqu'un sélectionne un item deja rentré dans
Titre, je voudrais que les 2 champs se positionnent également sur
l'enregistrement sélectionné et affiche les bonnes données, soit la
bonne Catégorie et le commantaire relatif au titre sélectionné...

Une idée ? Merci beaoucoup. Deb


Avatar
debdrai
Salut les génies,

Alors j'ai testé les conseils de Xavier; concernant la première
suggestion (pour remettre à vide mes deux champs), c'est impec ! Ça
marche très bien ! En ce qui concerne maintenant mon probleme
d'affichage en fonction de l'élément sélectionné dans ma liste non
déroulante, je prefere ta 2e solution plutot qu'une liste. Mais ça ne
marche pas, Access m'affiche "Erreur 3061: Trop peu de parametres . 1
attendu".

Voila la requete telle qu'adaptée:

Set Frd = db.OpenRecordset("SELECT Type_Fichier, ComMNT FROM tblMNT
WHERE Fichier = '" & Me.lstMNT.Value & "'", dbOpenSnapshot)
Me.TypeF = Frd.Fields("Type_Fichier").Value
Me.CommentairesMNT = Frd.Fields("ComMNT").Value

Vois-tu le bogue ?


Merci. Deb
Avatar
Raymond [mvp]
RE

Set Frd = db.OpenRecordset("SELECT Type_Fichier, ComMNT FROM tblMNT
WHERE Fichier = '" & Me.lstMNT.Value & "'", dbOpenSnapshot)


Vu l'heure je ne vois pas de bog mais demain matin peut-être.
essaie sans le snapshot, mais ce n'est pas ça.

es-tu sûre de l'orthographe de tous les mots ? d'après l'erreur il manque un
paramètre à la requête, ce qui veut dire qu'un nom de champ est mal frappé
et que la requête ne trouvant pas le nom réclame un paramètre.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"La p'tite Deb" a écrit dans le message de
news:
Salut les génies,

Alors j'ai testé les conseils de Xavier; concernant la première
suggestion (pour remettre à vide mes deux champs), c'est impec ! Ça
marche très bien ! En ce qui concerne maintenant mon probleme
d'affichage en fonction de l'élément sélectionné dans ma liste non
déroulante, je prefere ta 2e solution plutot qu'une liste. Mais ça ne
marche pas, Access m'affiche "Erreur 3061: Trop peu de parametres . 1
attendu".

Voila la requete telle qu'adaptée:

Set Frd = db.OpenRecordset("SELECT Type_Fichier, ComMNT FROM tblMNT
WHERE Fichier = '" & Me.lstMNT.Value & "'", dbOpenSnapshot)
Me.TypeF = Frd.Fields("Type_Fichier").Value
Me.CommentairesMNT = Frd.Fields("ComMNT").Value

Vois-tu le bogue ?


Merci. Deb


Avatar
debdrai
Salut Raymond,

Je ne suis pas sure de comprendre ton idée. Plutot que de mettre ma
requete dans le bouton de commande de mon premier formulaire et
d'essayer d'ouvrir un resultat, je peux en effet créer un nouveau
formulaire basée sur la table sur laquelle s'effectue ma sélection.
Et, si je t'ai bien comprise, mettre ma requete de selection dans le
chargement du formulaire. Mais ça ne change rien au fait que je
n'arrive pas a executer cette requete. Et puis j'ai besoin de passer
l'argument choisi par l'utilisateur dans le premier formulaire. Si je
crée ma requete avec le generateur et la met comme source de mon
formulaire, en lui disant de m'afficher les enregistrements
correspondants à frmLidar.Ma liste, ça me fait comme un OpenQuery: il
ne tient pas compte du choix courant de l'utilisateur et me rouvre une
fenetre qui demande de taper le nom choisi. Et si je base ce nouveau
formulaire sur ma table d'enregistrements complete, et que je crée ma
requete en VBA que je mets sur l'evenement chargement du formulaire,
je n'arrive pas davantage a l'executer....

Peux-tu m'expliquer davantage ton idee ?

Deb
Avatar
Raymond [mvp]
Bonsoir.

as-tu vérifié la requête comme je t'avais dit sur mon post précédent hier
23:27 ?
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"La p'tite Deb" a écrit dans le message de
news:
Salut Raymond,



Avatar
debdrai
Salut Raymond,

J'avais en effet vérifié l'orthographe de mes noms mais sans résultat.
Par contre j'ai finalement réussi cette requete en utilisant la
propriété Recordsource et en assignant à chaque champ le controle qui
lui correspond. Quoi qu'il en soit, merci beaucoup de ton aide et
SURTOUT de tout le temps que tu prends pour nous aider tous (j'ai vu
ton nom dans beaucoup de messages...)

Deb