karloi28
Messages postés4Date d'inscriptionmercredi 28 juillet 2010StatutMembreDernière intervention 4 mai 2011
-
3 mai 2011 à 16:31
4u4me4us
Messages postés780Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention30 octobre 2013
-
4 mai 2011 à 15:36
Bonjour,
Je travaille avec Access 2010.
J'ai une base de donnée avec une table dont un champ est défini comme numérique mais le controle de l'affichage est une zone de liste déroulante avec la propriété "autoriser plusieurs valeurs" à oui. En effet, je dois pouvoir sélectionner plusieurs clients pour une seule tache.
Dans un formulaire, j'ai un objet simple. Je voudrais rentrer la valeur de cet objet dans le champ de ma table, mais cela ne fonctionne pas.
Voici mon code en vba :
Dim tblSuivi As String
Dim rsSuivi As DAO.Recordset
tblSuivi = "SELECT * FROM [suivi]"
Set rsSuivi = CurrentDb.OpenRecordset(tblSuivi)
rsSuivi.AddNew
rsSuivi![client] = zldClient.Value
rsSuivi.Update
rsSuivi.Close
Mon champ "client" est celui qui a la possibilité d'avoir plusieurs valeurs.
Mon objet zldClient est une zone de liste déroulante où je ne peux faire qu'une seule sélection, et je veux rentrer la valeur choisie (qui est unique) dans ma table où le champ peut avoir plusieurs valeurs.
Lorsque j'effectue ce code, j'ai l'erreur suivante :
Erreur d'exécution'64224'
La méthode 'Collect' de l'objet 'Recordset2' a échoué
Je ne comprends pas pourquoi.
Cela vient-il du fait que le champ de la table soit à sélection multiple ?
Je ne trouve pas comment faire ...
Merci de m'aider.
karloi28
Messages postés4Date d'inscriptionmercredi 28 juillet 2010StatutMembreDernière intervention 4 mai 2011 4 mai 2011 à 14:12
Ce que je veux c'est justement créer une nouvelle ligne.
Merci de t'être interessé à mon problème.
Pendant ce temps là, j'ai continué à essayé de trouver quelque chose sur internet.
Et j'ai trouvé quelque chose !!
Mon champ à plusieurs valeurs est nouveau depuis Access 2007 et s'appelle champ multi-varié (ce que je ne savais pas !!!).
J'ai trouvé tout ce qu'il faut savoir sur le traitement de ce champ à cette adresse :
http://warin.developpez.com/access/multivalue/
J'ai donc résolu mon problème.
Merci encore à toi de m'avoir aidé.
karloi28
Messages postés4Date d'inscriptionmercredi 28 juillet 2010StatutMembreDernière intervention 4 mai 2011 4 mai 2011 à 10:13
J'ai essayé et cela provoque la meme erreur ...
J'ai essayé de définir un nouveau champ dans ma table avec les memes caractéristiques (controle de l'affichage en zone de liste déroulante) mais sans autoriser plusieurs valeurs. Dans ce cas cela fonctionne.
C'est pour cela que je me demande si le "problème" ne vient pas du fait que j'autorise plusieurs valeurs. Mais dans ce cas, comment faire ...?
je n'arrive d'ailleurs pas non plus en vba à récupérer toutes les valeurs de ce champ.
Si je fais :
Dim tblSuivi As String
Dim rsSuivi As DAO.Recordset
tblSuivi = "SELECT * FROM [suivi]"
Set rsSuivi = CurrentDb.OpenRecordset(tblSuivi)
La valeur que me retourne rsSuibi.fields(9) (qui correspond à mon fameux champ) est seulement la première valeur de la liste et non la liste entière ...
4u4me4us
Messages postés780Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention30 octobre 20133 4 mai 2011 à 10:37
Tu dis "la première valeur de la liste et non la liste entière" sais-tu que si tu faire rsSuibi.movenext tu aura le rsSuibi.fields(9) suivant et ansi de suite ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
karloi28
Messages postés4Date d'inscriptionmercredi 28 juillet 2010StatutMembreDernière intervention 4 mai 2011 4 mai 2011 à 11:00
oui je sais. Mais cela fait passer à la ligne suivant.
Ce n'est pas ce que je veux faire. Mon champ contient une liste de plusieurs valeurs sur une seule ligne.
Par exemple la valeur d'une ligne pour ce champ est "1;2;3" et la ligne suivante "4;5;6" puisque j'autorise plusieurs valeurs pour ce champ pour une seule ligne.
Quand j'execute le code précédent, cela ne me donne que la valeur "1", puis le movenext ne me donne que la valeur "4"
4u4me4us
Messages postés780Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention30 octobre 20133 4 mai 2011 à 11:13
Apparemment le problème vient du fait que tu veuille autorise plusieurs valeurs. Peut-être que le mieux pour toi et de : 1)supprimer cette option.
2)Changer le type de ton champ en texte.
Autre chose ton code
¨ Dim tblSuivi As String
Dim rsSuivi As DAO.Recordset
tblSuivi = "SELECT * FROM [suivi]"
Set rsSuivi = CurrentDb.OpenRecordset(tblSuivi)
rsSuivi.AddNew
rsSuivi![client] = zldClient.Value
rsSuivi.Update
rsSuivi.Close
N'est pas cohérent avec ce que tu voudrais faire. Si tu met rsSuivi.AddNew il va créer une nouvelle ligne ou client est vide. Si tu veux modifier une valeur tu dois utiliser rsSuivi.edit et faire rsSuivi![client] = rsSuivi![client] & zldClient.Value.