IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

[VBA] requête, recordset et erreur 3021


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 17
    Points : 13
    Points
    13
    Par défaut [VBA] requête, recordset et erreur 3021
    Bonjour,
    Je cherche à récupérer le numéro de la semaine qui a été sélectionné dans le bouton datedebut_article mais j'obtiens erreur d'execution 3021:aucun enregistrement en cours.
    Je ne trouve pas d'ou viens le problème. Tous les champs sont définis en type chaîne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sql = "SELECT qte_rupture.code_sem FROM qte_rupture WHERE qte_rupture.num_sem=" & Me.datedebut_article & " GROUP BY qte_rupture.code_sem;"
     
    Set rst = db.OpenRecordset(sql)
     
    Do Until rst.EOF
        rst.MoveNext
    Loop
     
    Me.sem_debut = rst(0).Value
    Lorsque j'exécute la requête directement sur access, il n'y a pas de problème
    Merci de me montrer le chemin à suivre

  2. #2
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Salut,
    pourquoi ne pas passer par un Dlookup ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.sem_debut=DlookUp("Code_sem","qte_rupture","num_sem= '"& Me.datedebut_article & "'")
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    j'ai retiré tout le code du recordset
    MAIS, avec le dlookup j'ai une nouvelle erreur 3464:type de données incompatible dans l'expression du critère

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    num_sem
    c'est du texte ou du numérique ?

    Starec

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    bonjour Starec
    num_sem est de type date/Heure
    je n'ai plus l'erreur en retirant les cotes du dlookup, mais il me renvoie une valeur null
    Me.sem_debut=Null

  6. #6
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.sem_debut=DlookUp("Code_sem","qte_rupture","num_sem= #"& Me.datedebut_article & "#")
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    j'ai déjà essayé la valeur est également null
    et je suis sur que je dois avoir une réponse
    quelque complément:
    la sélection de datedebut_article se fait dans une zone de liste modifiable, mais dans vba il récupère la bonne valeur sélectionnée (avec point d'arrêt pour vérifier)
    j'ai mis le champ d'affichage sem_debut dans le même formulaire
    et l'affichage se fait après le click de datedebut_article

    Si ça vous renseigne...

  8. #8
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    le format de num_semaine et de datedebut_article sont identiques ?
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  9. #9
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Bonsoir à toutes et à tous,
    Citation Envoyé par bugprog
    (...)Je cherche à récupérer le numéro de la semaine qui a été sélectionné dans le bouton datedebut_article mais j'obtiens erreur d'execution 3021:aucun enregistrement en cours.
    Je ne trouve pas d'ou viens le problème. Tous les champs sont définis en type chaîne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sql = "SELECT qte_rupture.code_sem FROM qte_rupture WHERE qte_rupture.num_sem=" & Me.datedebut_article & " GROUP BY qte_rupture.code_sem;"
     
    Set rst = db.OpenRecordset(sql)
     
    Do Until rst.EOF
        rst.MoveNext
    Loop
     
    Me.sem_debut = rst(0).Value
    Lorsque j'exécute la requête directement sur access, il n'y a pas de problème
    (...)
    Je suis désolé de revenir sur la discussion d'origine car le fond de la question de bugprog n'a pas été traité.
    Le message d'erreur est : aucun enregistrement en cours.
    Je crois que la source de cette erreur tu voulais affecter à sem_debut le contenu du premier champ de l'enregistrement courant de l'objet rst.
    Pourtant après Loop, le CURSOR (Current Set Of Row) ou le pointeur si tu veux se trouve à la fin du fichier (EOF=True). Voila pourquoi!
    @+
    La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi!
    Albert Einstein

  10. #10
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Cela devrait mieux marcher ainsi

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.sem_debut=DlookUp("Code_sem","qte_rupture","num_sem= #"& Format$(Me!datedebut_article,"mm/dd/yyyy")  & "#")

    Non ?
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Merci à tous ce problème est résolu

    J'ai une autre question, après ce formulaire de sélection (selection_article) j'ouvre un autre formulaire (rupture) par article dans lequel il y a un sous_formulaire qui se remplit avec une requête.
    Mon problème c'est qu'à l'exécution il me demande d'entrer manuellement tous les champs sélectionnés auparavant qui correspondent à la requête.

    Je ne trouve pas la solution par moi-même donc si vous avez des suggestion, prêtez-moi votre savoir, s'il vous plait

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur 3021 BOF/EOF sur un recordset.MoveNext
    Par greg360 dans le forum VBA Access
    Réponses: 2
    Dernier message: 31/08/2010, 17h34
  2. Réponses: 2
    Dernier message: 27/05/2009, 10h49
  3. Erreur 3021 sur un RecordSet
    Par Herman dans le forum VBA Access
    Réponses: 2
    Dernier message: 13/06/2008, 17h01
  4. [VBA] Requête + date pour travailler avec des recordsets
    Par snoopy69 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 14/08/2006, 15h15
  5. Réponses: 6
    Dernier message: 07/06/2006, 12h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo