cs_Nana35
Messages postés18Date d'inscriptionmercredi 8 octobre 2008StatutMembreDernière intervention 2 février 2009
-
4 nov. 2008 à 10:31
cs_Nana35
Messages postés18Date d'inscriptionmercredi 8 octobre 2008StatutMembreDernière intervention 2 février 2009
-
13 nov. 2008 à 09:07
Bonjour,
J'ai créé un formulaire avec trois listes déroulantes. La première contient l'identifiant Relevé terrain (LST_id_RELEVE), la seconde les observateurs disponibles (LST_search_OBS) de la T_OBSERVATEUR et la troisième les observateurs sélectionnés (LSTselectOBS) à partir de la liste des observateurs disponibles qui sont eux stockés dans la table Observateurs_Selectionnes.
Sur click d'un bouton de commande je voudrais insérer l'ensemble les identifiants observateurs sélectionner CONobs avec pour chacun l'identifiant relevé dans une table Constater qui est une table de relation entre relevé et observateur.
CONobs CONrel
1 REL-001
4 REL-001
7 REL-001
Je pense qu'il convient d'utiliser une boucle.
Voici une ébauche de mon code qui ne donne aucun enregistrement dans ma table Constater. J'ai copié une partie du code et je ne maitrise pas les ItemsSelected et les itemData.
Dim strSql As String
Dim X As Variant
Dim f As Form
Set f = Forms!F_SAISIE_Observation_Terrain
With LSTselectOBS
For Each X In .ItemsSelected
strSql = "INSERT INTO Constater(CONobs, CONrel) VALUES('" & (.ItemData(X)) & "', '" & f!LST_ID_RELEVE & "');"
Next
.Requery
End With
DoCmd.SetWarnings False
DoCmd.RunSQL strSql
DoCmd.SetWarnings True
Précision, je ne souhaite pas devoir appuyer un à un les observateurs sélectionnés pour que l'insertion se face. C'est bien l'intérêt de la boucle? Sinon, n'est -t-il pas préférable d'utiliser le contenant de la table Observateurs_selectionnés plutôt que les values de la liste LSTselectOBS dans mon Insert into?
Bref, toutes vos suggestions sont bonnes!
Merci
cs_Nana35
Messages postés18Date d'inscriptionmercredi 8 octobre 2008StatutMembreDernière intervention 2 février 2009 12 nov. 2008 à 12:22
Bonjour,
Mon problème est résolu, j'avais juste pas penser mettre selection 'étendu' dans propriété de ma liste.
Par contre, j'ai crée un bouton "Annuler la saisie". Comment faire pour que ma liste devienne vierge. J'ai un programme qui supprime la selection de la liste :
With LSTselectOBS
For Each X In .ItemsSelected
CurrentDb.Execute "DELETE * FROM Observateurs_selectionnes WHERE Observateurs_selectionnes.OBSERVATEUR = " & fCVal(.ItemData(X), "N") & ""
Next
.Requery
End With
LSTsearchOBS.Requery
Mais j'aimerais que la suppression se fasse pour toute la liste sans sélection. Pas un ItemsSelected mais un AllValues par exemple.
Merci
cs_Nana35
Messages postés18Date d'inscriptionmercredi 8 octobre 2008StatutMembreDernière intervention 2 février 2009 13 nov. 2008 à 09:07
Il faut utiliser la fonction RowSource pour viser le contenu de la liste.
mazonedeliste.rowSource = ""
et pour sélectionner toute ma liste automatiquement:
Dim i as long
For i = 0 To Me.mazonedeliste.ListCount - 1
Me.mazonedeliste.Selected(i) = True
Next i
Bonne journée