Erreur 3021 alors que recordset.EOF=False
Résolu
Dosman
Messages postés
1500
Statut
Contributeur
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'ai un formulaire avec un sous-formulaire nommé SEARCH qui correspond à une requête SQL paramétrée. Lors de l'appui sur un bouton du formulaire, je veux pouvoir récupérer le titre sélectionné par l'utilisateur (via un clic souris) dans le sous-formulaire.
Voici le code que j'utilise pour le bouton :
Ce code marche très bien tant qu'il y a un résultat à la requête. Le premier enregistrement est sélectionné par défaut. Quand il n'y a aucun résultat à afficher, le code plante à l'affectation de la variable valeur sans passer dans le IF. J'obtiens alors l'erreur : "erreur d'exécution 3021 : Aucun enregistrement en cours". Comment faire pour que ce cas soit pris en compte dans le IF ?
Merci d'avance.
J'ai un formulaire avec un sous-formulaire nommé SEARCH qui correspond à une requête SQL paramétrée. Lors de l'appui sur un bouton du formulaire, je veux pouvoir récupérer le titre sélectionné par l'utilisateur (via un clic souris) dans le sous-formulaire.
Voici le code que j'utilise pour le bouton :
dim valeur as string
dim test as DAO.recordset
Set test = Me.SEARCH.Form.Recordset
If test.EOF Then
MsgBox "Veuillez sélectionner un titre"
GoTo fin
End If
valeur = Me.SEARCH.Form.Recordset.Fields("Titre").Value
fin:
Ce code marche très bien tant qu'il y a un résultat à la requête. Le premier enregistrement est sélectionné par défaut. Quand il n'y a aucun résultat à afficher, le code plante à l'affectation de la variable valeur sans passer dans le IF. J'obtiens alors l'erreur : "erreur d'exécution 3021 : Aucun enregistrement en cours". Comment faire pour que ce cas soit pris en compte dans le IF ?
Merci d'avance.
A voir également:
- Erreur 3021 alors que recordset.EOF=False
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
1 réponse
Bonjour,
déjà, et par convention, dans ton "fin:", mets donc un Exit sub() ou Exit function()... Selon ton cas.
Ensuite, j'avais eu un même problème, mais dans une boucle "alakon", et je m'étais arraché les tifs.
On y arrive, j'avais trouvé une parade, plus ou moins propre, mais je pense + que -, enfin c'est la seule que j'ai trouvée !
J'avais testé avant de lancer la requête elle-même, une autre requête SELECT COUNT pour compter le nombre d'enregistrements qui allaient être retournés.
Si le résultat était > 0 alors je lançais l'autre requête, sinon, je quittais...
A+
déjà, et par convention, dans ton "fin:", mets donc un Exit sub() ou Exit function()... Selon ton cas.
Ensuite, j'avais eu un même problème, mais dans une boucle "alakon", et je m'étais arraché les tifs.
On y arrive, j'avais trouvé une parade, plus ou moins propre, mais je pense + que -, enfin c'est la seule que j'ai trouvée !
J'avais testé avant de lancer la requête elle-même, une autre requête SELECT COUNT pour compter le nombre d'enregistrements qui allaient être retournés.
Si le résultat était > 0 alors je lançais l'autre requête, sinon, je quittais...
A+
Pour le exit sub(), il y est, c'est juste que je n'ai pas tout copié.
Pour ce qui est de lancer une requête SELECT COUNT avant, je vais essayer.
A+