Erreur 3021 alors que recordset.EOF=False

Résolu/Fermé
Dosman Messages postés 1444 Date d'inscription mardi 1 mai 2012 Statut Contributeur Dernière intervention 26 septembre 2017 - 26 juil. 2016 à 14:18
 Utilisateur anonyme - 27 juil. 2016 à 17:49
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 :
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.

1 réponse

Utilisateur anonyme
26 juil. 2016 à 20:33
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+


0
Dosman Messages postés 1444 Date d'inscription mardi 1 mai 2012 Statut Contributeur Dernière intervention 26 septembre 2017 213
27 juil. 2016 à 10:21
Bonjour,
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.
0
Dosman Messages postés 1444 Date d'inscription mardi 1 mai 2012 Statut Contributeur Dernière intervention 26 septembre 2017 213 > Dosman Messages postés 1444 Date d'inscription mardi 1 mai 2012 Statut Contributeur Dernière intervention 26 septembre 2017
27 juil. 2016 à 13:33
Bon, faire le SELECT COUNT a fonctionné, merci de l'astuce !
0
Utilisateur anonyme > Dosman Messages postés 1444 Date d'inscription mardi 1 mai 2012 Statut Contributeur Dernière intervention 26 septembre 2017
27 juil. 2016 à 17:49
Cool !

A+
0