Erreur d'execution 3021 [Résolu]

anto37_44 48 Messages postés mardi 3 avril 2007Date d'inscription 11 juin 2007 Dernière intervention - 11 juin 2007 à 12:39 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention
- 19 sept. 2011 à 09:54
Bonjour à tous

Je solicite votre aide pour résoudre un petit problème :
Je veux, depuis vb, ouvrir un base de données,comprenant plusieurs tables, dans une liste.
J'ai donc taper un code unique pour toute les tables.
Le problème, c'est qu'il y a des tables vides et çà génère l'erreur d'execution 3021.

J'aimerais donc savoir s'il y a moyen de passer outre.

Pour que çà soit (peut-être) plus clair voilà ma source

Dim Dbs As Database, Tbl As Recordset
Dim ch As String
Dim Nombre As Integer
Dim ChTable As String
Dim chemin As String
ChTable = TableJB(RangSiteSelectionne) 'permet de selectionner la table
Set Dbs = Workspaces(0).OpenDatabase("C:\Antony\Rapport.mdb")  'ouvre la base de données
Set Tbl = Dbs.OpenRecordset(ChTable, dbOpenTable) 'ouvre la table sélectionnée
Tbl.MoveFirst
Nombre = Tbl.RecordCount  'compte le nombre de ligne dans la Table sélectionnée


For i = 0 To Nombre - 1
     ch = Tbl("Date")
     ch = ch & "  " & Tbl("Intitule")
     List2.AddItem ch   'la liste est incrémentée et affiche les infos de la table sélectionnée
  Tbl.MoveNext


Next i
End If

l'erreur ce produit à Tbl.MoveFirst

Si quelqu'un a une idée, elle est la bienvenue.
Merci d'avance.


anto37_44
Afficher la suite 

Votre réponse

18 réponses

Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 11 juin 2007 à 13:05
3
Merci
Salut,
Peu être devrait tu récupérer Tbl.RecordCount avant le MoveFirst et regarder la valeur de se RecordCount pour ne faire le MoveFirst que si RecordCount te le permet.

@+: Ju£i?n
Pensez: Réponse acceptée

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de jrivet
anto37_44 48 Messages postés mardi 3 avril 2007Date d'inscription 11 juin 2007 Dernière intervention - 11 juin 2007 à 13:02
1
Merci
salut
l'erreur ce produit à Tbl.MoveFirst

anto37_44
Commenter la réponse de anto37_44
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 11 juin 2007 à 12:51
0
Merci
Salut,
Et quel est l'intitulé de cette fameuse erreur... on ne les a pas toutes en mémoire.

@+: Ju£i?n
Pensez: Réponse acceptée
Commenter la réponse de jrivet
anto37_44 48 Messages postés mardi 3 avril 2007Date d'inscription 11 juin 2007 Dernière intervention - 11 juin 2007 à 12:59
0
Merci
Ah oui pardon j'ai oublier de le mettre
c'est:

erreur d'execution 3021
Pas d'enregistrement courant

désolé

anto37_44
Commenter la réponse de anto37_44
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 11 juin 2007 à 13:01
0
Merci
Salut,
Et sur quelle ligne apparait elle ....

@+: Ju£i?n
Pensez: Réponse acceptée
Commenter la réponse de jrivet
anto37_44 48 Messages postés mardi 3 avril 2007Date d'inscription 11 juin 2007 Dernière intervention - 11 juin 2007 à 13:08
0
Merci
Bonne idée, j'essai tout de suite


merci


anto37_44
Commenter la réponse de anto37_44
anto37_44 48 Messages postés mardi 3 avril 2007Date d'inscription 11 juin 2007 Dernière intervention - 11 juin 2007 à 13:12
0
Merci
Et oui, c'était tout simplement çà, merci jrivet çà marche super bien maintenant (pourquoi est ce que je n'y ai pas penser tout de suite?)

Merci Beaucoup


anto37_44
Commenter la réponse de anto37_44
kevingoube01 11 Messages postés mercredi 9 décembre 2009Date d'inscription 19 septembre 2011 Dernière intervention - 16 sept. 2011 à 12:14
0
Merci
Salut,

Je poste sur cette discussion car j'ai le même message d'erreur mais pas exactement la même situation que anto37_44 !

En gros je n'arrive pas à récupérer la valeur d'une zone de texte pour l'utiliser dans mon code ! Pourtant quand je change la source contrôle par un autre champ ca marche :$ Donc je vois pas pourquoi avec un oui et pas avec un autre !

If IsNull(NUM_ANALYSE) = False Then // L'erreur se produit ici : "Aucun enregistrement en cours"
Set rs CurrentDb.OpenRecordset("SELECT DEBUT_FIXATION, FIN_FIXATION FROM PREPARATION_ECHANTILLON WHERE NUM_ANALYSE '" & Me.NUM_ANA.Value & "'")

If (IsNull(rs("DEBUT_FIXATION"))) False And (IsNull(rs("FIN_FIXATION"))) False Then
Étiquette237.Visible = True
Étiquette238.Visible = True
Étiquette239.Visible = True
Étiquette242.Visible = True
If VarType(Left(rs("DEBUT_FIXATION"), 10)) <> Date Then
date1 = 0 / 0 / 0
date2 = 0 / 0 / 0
Else
date1 = Left(rs("DEBUT_FIXATION"), 10)
date2 = Left(rs("FIN_FIXATION"), 10)
End If

ps: NUM_ANALYSE s'est le nom de la source controle (c'est-à-dire du nom du champs de ma table) et j'ai essayé avec NUM_ANA qui est le nom de ma zone de texte, et j'ai une autre erreur qui est "Membre de méthode ou données introuvable" !

Si quelqu'un peut m'aider pck la je suis dans le flou total :$

Merci d'avance :)
Commenter la réponse de kevingoube01
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 16 sept. 2011 à 13:26
0
Merci
ps: NUM_ANALYSE s'est le nom de la source controle (c'est-à-dire du nom du champs de ma table) et j'ai essayé avec NUM_ANA qui est le nom de ma zone de texte, et j'ai une autre erreur qui est "Membre de méthode ou données introuvable" !

comment te vient-il à l'idée de vérifier un champ d'une table avant la requête sur cette table ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
kevingoube01 11 Messages postés mercredi 9 décembre 2009Date d'inscription 19 septembre 2011 Dernière intervention - 16 sept. 2011 à 13:58
0
Merci
J'ai pas précisé un point c'est tout ! en fait c'est lorsque je clique sur un bouton pour lancer l'impression du feuille que le problème apparait car quand je click sur ce bouton je récupère une des valeurs du tableau qui est déjà rempli !
Commenter la réponse de kevingoube01
kevingoube01 11 Messages postés mercredi 9 décembre 2009Date d'inscription 19 septembre 2011 Dernière intervention - 16 sept. 2011 à 15:16
0
Merci
J'ai résolu le problème c'est bon mais maintenant que j'ai recup le numéro les requêtes que j'effectue pour remplir les informations de ma feuille ne fonctionnent plus ! Quelqu'un à déjà eu le problème ?

Merci d'avance !
Commenter la réponse de kevingoube01
cs_GG72 94 Messages postés vendredi 13 mai 2005Date d'inscription 30 octobre 2011 Dernière intervention - 16 sept. 2011 à 16:17
0
Merci
Bonjour,

Si je comprends bien, tu as résolu le problème que te posait le code posté précédemment.

Et tu aurais d'autres requêtes situées plus loin dans ton code qui, maintenant, te posent problème. Mais quelles sont elles? Quel en est le résultat? (message d'erreur, résultat innatendu, ...?).

Et quand tu dis
ne fonctionnent plus
, on peut en déduire qu'elles ont fonctionné à un moment ou à un autre?
Commenter la réponse de cs_GG72
kevingoube01 11 Messages postés mercredi 9 décembre 2009Date d'inscription 19 septembre 2011 Dernière intervention - 16 sept. 2011 à 16:26
0
Merci
Oui en fait quand je clique sur le bouton Impression cela déclenche la mise en forme de la feuille à imprimer ! et lors de cette mise en forme dans le code on fait des requêtes pour récuperer des informations dans la BDD. Or avant ces requêtes fonctionnaient parfaitement jusqu'a ce que j'ai ce problème au niveau de la récupération du Numéro d'analyse! et mnt que j'arrive à récupérer le numéro c'est les requêtes qui me renvoi "" comme s'il n'y avait rien dans la base alors que j'ai testé les requêtes dans access et elles fonctionnent très bien

Donc je vois pas trop d'où cela peut venir ??

merci de ton aide !
Commenter la réponse de kevingoube01
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 16 sept. 2011 à 16:37
0
Merci
Si tu veux que l'on te comprenne, il vaudra mieux que tu mettes ici, de manière synoptique, le déroulement précis de tes opérations.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
kevingoube01 11 Messages postés mercredi 9 décembre 2009Date d'inscription 19 septembre 2011 Dernière intervention - 16 sept. 2011 à 17:22
0
Merci
Alors j'ai une fenêtre sur laquelle il y a des numéros d'analyse rangés dans un tableau !
Et sur cette même feuille on sélectionne un des numéros en cliquant dessus et une fois que celui-ci change de couleur de fond, on appuie sur le bouton IMPRESSION pour mettre en forme une Feuille avec les informations de l'analyse correspondant !
Quand je dis "mettre en forme", j'entends par là remplir les zone de texte avec les informations de l'analyse choisie !
Et pour remplir ces différentes zone de textes on a recourt à des requêtes pour piocher les informations dans la BDD pour le numéro d'analyse correspondant !
Une fois que l'on a récupérer l'information via un RecordSet, on vient la stocker dans la zone de texte !

Or mon problème intervient lors de la récupération du résultat de la requête dans le RecordSet ! et à cause de cela ma page s'imprime sans aucune information !

Tu vois mieux comment cela fonctionne UCFOUTU ?

Merci de votre aide
Commenter la réponse de kevingoube01
cs_GG72 94 Messages postés vendredi 13 mai 2005Date d'inscription 30 octobre 2011 Dernière intervention - 16 sept. 2011 à 17:40
0
Merci
Ok.

Maintenant montre nous:
- ton code pour récupérer le numéro d'analyse
- un exemple de numéro d'analyse
- le libellé de la requête que tu utilises
Commenter la réponse de cs_GG72
kevingoube01 11 Messages postés mercredi 9 décembre 2009Date d'inscription 19 septembre 2011 Dernière intervention - 19 sept. 2011 à 09:01
0
Merci
Alors je vous explique un peu, donc pour exécuter ma requête j'ai besoin du numéro d'échantillon! Or la seule différence entre le numéro d'analyse et d'échantillon c'est la présence de la lettre a, b, c ou d donc c'est pour cela que j'utilise Num_ECHSPLIT ! il stock juste les 15 premiers caractères ce qui correspond au num échantillon !

Num_ECHSPLIT = Left(Form_IMPRESSION_FEUILLE_ANALYSE_HEPAS.NUM_ECH.Value, 15)
If IsNull(Num_ECHSPLIT) = False Then // je vérifie que la valeur récupérer n'est pas nulle
    Set rs CurrentDb.OpenRecordset("SELECT DEBUT_FIXATION, FIN_FIXATION FROM ECHANTILLONS_BIO WHERE NUM_ECH '" & Num_ECHSPLIT & "'")// et ici je stock le résultat de ma requête dans un recordSet pour pouvoir utiliser ce résultat quand je veux !

If (IsNull(rs("DEBUT_FIXATION"))) False And (IsNull(rs("FIN_FIXATION"))) False Then
        Étiquette237.Visible = True
        Étiquette238.Visible = True
        Étiquette239.Visible = True
        Étiquette242.Visible = True
        date1 = Left(rs("DEBUT_FIXATION"), 10)
        date2 = Left(rs("FIN_FIXATION"), 10)
        Call comp_date(date1, date2, nb_annee, nb_mois, nb_jour, nb_heure, nb_min)
        nb_heure = Mid(rs("FIN_FIXATION"), 12, 2) - Mid(rs("DEBUT_FIXATION"), 12, 2)
        nb_min = Mid(rs("FIN_FIXATION"), 15, 2) - Mid(rs("DEBUT_FIXATION"), 15, 2)
    
    End If
    rs.Close
    Set rs = Nothing


Voila et c'est au niveau du recordSet qu'il y a un soucis vu que la requête ne renvoi qu'un champ vide
Commenter la réponse de kevingoube01
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 19 sept. 2011 à 09:54
0
Merci
Bonjour,
c'est la présence de la lettre a, b, c ou d

Utilise donc dans ta requête l'opérateur Like dans ta requête pour NUM_ECH

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.