Erreur d'execution 3021

Résolu
anto37_44 Messages postés 48 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 11 juin 2007 - 11 juin 2007 à 12:39
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 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

18 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
11 juin 2007 à 13:05
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
3
anto37_44 Messages postés 48 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 11 juin 2007 1
11 juin 2007 à 13:02
salut
l'erreur ce produit à Tbl.MoveFirst

anto37_44
1
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
11 juin 2007 à 12:51
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
0
anto37_44 Messages postés 48 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 11 juin 2007 1
11 juin 2007 à 12:59
Ah oui pardon j'ai oublier de le mettre
c'est:

erreur d'execution 3021
Pas d'enregistrement courant

désolé

anto37_44
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
11 juin 2007 à 13:01
Salut,
Et sur quelle ligne apparait elle ....

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


merci


anto37_44
0
anto37_44 Messages postés 48 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 11 juin 2007 1
11 juin 2007 à 13:12
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
0
kevingoube01 Messages postés 6 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 19 septembre 2011
16 sept. 2011 à 12:14
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 :)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
16 sept. 2011 à 13:26
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
0
kevingoube01 Messages postés 6 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 19 septembre 2011
16 sept. 2011 à 13:58
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 !
0
kevingoube01 Messages postés 6 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 19 septembre 2011
16 sept. 2011 à 15:16
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 !
0
cs_GG72 Messages postés 94 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 30 octobre 2011
16 sept. 2011 à 16:17
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?
0
kevingoube01 Messages postés 6 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 19 septembre 2011
16 sept. 2011 à 16:26
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 !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
16 sept. 2011 à 16:37
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
0
kevingoube01 Messages postés 6 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 19 septembre 2011
16 sept. 2011 à 17:22
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
0
cs_GG72 Messages postés 94 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 30 octobre 2011
16 sept. 2011 à 17:40
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
0
kevingoube01 Messages postés 6 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 19 septembre 2011
19 sept. 2011 à 09:01
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
19 sept. 2011 à 09:54
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
0
Rejoignez-nous