quel type de contrôle est liste_secssact : Zone de texte, liste déroulante ? Si c'est une liste déroulante, ce n'est pas la bonne méthode de chargement ..
Version imprimable
quel type de contrôle est liste_secssact : Zone de texte, liste déroulante ? Si c'est une liste déroulante, ce n'est pas la bonne méthode de chargement ..
Au moment du plantage, fais cette vérif dans la fenêtre d'exécution (VarType) et donne nous en le résultat. L'erreur 2471 est une erreur de typage (si je me souviens bien).Citation:
?vartype(Texte90 )
Si la réponse est 8, c'est du texte et ma première réponse avec les simples cotes est OK
Si la réponse est 2, il s'agit d'un integer et il faut déclarer
Si la réponse est 3, il s'agit d'un long et il faut déclarer
Code:Dim v_pk_secact As Long
Autre chose...
si v_pk_secact a une valeur nulle, çà peut te rendre un code d'erreur. Essaie avec NZ
Code:liste_secssact = DLookup("libelle", "t_ref_secssact", "pk_secact_code=" & NZ(v_pk_secact,0))
Essayez ceci
Code:liste_secssact = DLookup("libelle", "t_ref_secssact", "pk_secact_code='" & v_pk_secact & "'")
bon je n'ai plus d'erreur d'execution, c'est déjà ça...
mais mantenant comment je fais pour atteindre les données contenues dans le Dlookup ?
Il faudrait que tu soies un peu plus explicite: quelle solution a marché?
Avec ça je n'ai plus d'erreur, mais de ce que j'ai lu, Dlookup n'extrait pas de données mais une réponse vrai ou faux...Code:
1
2
3
4
5
6
7
8
9
10 Private Sub fk_secact_code_AfterUpdate() Dim v_pk_secact As Long v_pk_secact = fk_secact_code.Column(1) Texte90 = v_pk_secact liste_secssact = DLookup("libelle", "t_ref_secssact", "fk_secact_code=" & v_pk_secact) End Sub
c'est ça ?
merci je vais me pencher la dessus
Bon j'ai avancé un peu
j'arrive bien à passé ma variable maintenantCode:
1
2
3
4
5
6
7
8
9
10
11
12
13 Private Sub fk_secact_code_AfterUpdate() Dim v_pk_secact As Long v_pk_secact = fk_secact_code.Column(1) Dim req_secssact As DAO.Recordset Dim sql_secssact As DAO.Database Set sql_secssact = CurrentDb Set req_secssact = sql_secssact.OpenRecordset("SELECT libelle FROM t_ref_secssact WHERE fk_secact_code=" & v_pk_secact, dbOpenDynaset) Do While Not req_secssact.EOF fk_secssact_code = req_secssact.Fields(0).Value req_secssact.MoveNext Loop req_secssact.Close End Sub
la boucle fonctionne, mais quand je change la valeur dans fk_secact_code (liste déroulante) ça ne met pas à jour le Recordset, j'ai toujours les mêmes valeur dans ma 2eme liste déroulante (fk_secssact_code)
une idée ?
Merci
bonjour,
j'aimerai que tu expliques pour quoi est fait ce code, car si c'est pour changer les valeurs d'une autre liste déroulante, ce n'est pas la bonne méthode ...Citation:
la boucle fonctionne, mais quand je change la valeur dans fk_secact_code (liste déroulante) ça ne met pas à jour le Recordset, j'ai toujours les mêmes valeur dans ma 2eme liste déroulante (fk_secssact_code)
Je te rappelle l'énoncé (très succinct) de ton problème:
moi non plus je ne comprend pas ...Citation:
j'ai ça comme code :
dans Tesxe96 l'id de l'enregistrement s'affiche sans problèmeCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Private Sub fk_secact_code_AfterUpdate() Dim v_pk_secact As String v_pk_secact = fk_secact_code.Column(1) Texte96 = v_pk_secact Dim liste_secssact As DAO.Recordset Dim req As DAO.Database Set req = CurrentDb Set liste_secssact = req.OpenRecordset("SELECT libelle, pk_secssact FROM t_ref_secssact WHERE fk_secact_code=" & v_pk_secact, dbOpenDynaset) fk_secssact_code = liste_secssact.Fields(0).Value End Sub
mais j'ai un message d'erreur au niveau de la requête SELECT
trop peu de paramètre. 1 attendu
le truc le plus bizarre est que ce code fonctionne sur une autre base...
je ne comprend pas...
en effet c'est plus très clair,
du coup j'ai créer un autre sujet et je vais mettre celui là en résolu, car le passage de variable fonctionne.