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 ..
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).?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 : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part liste_secssact = DLookup("libelle", "t_ref_secssact", "pk_secact_code=" & NZ(v_pk_secact,0))
Essayez ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 maintenant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ...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 ...j'ai ça comme code :
dans Tesxe96 l'id de l'enregistrement s'affiche sans problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager