Erreur dans l'ouverture d'un recordset [Résolu] - VB/VBA/VBS - Programmation
Marsh Posté le 05-09-2006 à 17:06:13
Salut,
On ne voit pas ce que contient ta variable "Month" qui est utilisée pour filtrer ta requête.
A+
Horatio
Marsh Posté le 05-09-2006 à 17:27:24
Sinon, je ne comprends pas comment tu peux vouloir ouvrir un recordset alors que tu n'as pas de table.
« dbs.OpenRecordset » permet d'ouvrir un recordset basé sur une table ou une requete enregistrées dans ta base Access.
Or ton fichier Excel est externe et je ne vois nulle part d'importation ou de liaison de ces données Excel dans un conteneur Access.
Marsh Posté le 05-09-2006 à 17:28:48
La variable Month est bien récupérée, elle provient d'une liste déroulante dans le formulaire :
Code :
|
La boite de test ici fonctionne bien et renvoie la bonne valeur.
Marsh Posté le 05-09-2006 à 17:29:44
Salut,
En fait, il faut que tu crée un Querydef (une requete), et que ce Querydef remplisse ton recordset:
Code :
|
Code :
|
Dans cette ligne, il faut laisser les 2 guillemets vides, sinon tu donnes un nom à ta requete qui deviendra une requete stockée.
Voilà.
Marsh Posté le 05-09-2006 à 17:33:11
tegu a écrit : ... |
En fait le recordset en lui même n'a rien à voir avec le fichier Excel.
Il est exécuté dans la base Access sur les données d'une table dans Access.
Tout le code VBA est exécuté depuis Access, et je ne fais aucune opération à partir du fichier Excel même.
En fait la suite du code permet de récupérer les valeurs de certaines cellules d'un fichier (pour éclaircir : j'ai des dizaines de fichiers Excel au format identique dont je veux récupérer les données, et ils sont classés par agence, mois et par année. Mon formulaire permet donc de sélectionner une agence, une année, un mois puis de sélectionner le fichier Excel à importer)
Marsh Posté le 05-09-2006 à 17:34:44
JihemAir a écrit : Salut, |
Ah donc le QueryDef est nécessaire ? J'avais recherché des exemples du type de ce que j'ai écrit et apparemment ils fonctionnaient. Mais je vais essayer avec le QueryDef
Marsh Posté le 05-09-2006 à 17:45:18
Malheureusement j'ai exactement le même problème, l'erreur renvoyée est la même, sur cette ligne :
Code :
|
Marsh Posté le 05-09-2006 à 18:20:32
Re,
J'ai une bonne nouvelle :
- Ton code fonctionne pour ce qui est de la requête, il n'est donc pas nécessaire de passer par un QueryDef.
Lorsque Month = "Apr", on récupère bien "Avril"
etc..
et une mauvaise :
- Je ne vois pas ce qui cloche.
Es-tu bien sûr que le champ "Month" de ta table "tbl_MonthNumber" est bien une chaîne de caractères ?
A+
Horatio
Marsh Posté le 06-09-2006 à 07:55:40
Re:
Regarde aussi dans ta base de données, si tu n'as pas une requête enregistrée.
J'ai l'impression que ton code appelle cette requête, sans lui passer de paramètre.
Marsh Posté le 06-09-2006 à 09:26:18
Merci à vous deux pour votre aide déjà J'ai trouvé l'erreur grâce à vous :
=> Lord nelson : Le champ Month est bien une chaîne de caractères, par contre le nom de la colonne avait changé pour MonthName dans la BD, je n'avais pas répercuté ça dans le code ... D'où l'erreur, la colonne n'était pas trouvée
Désolé, comme souvent, c'était une erreur bête ! Et comme souvent on cherche à côté de là où il faut chercher
Marsh Posté le 06-09-2006 à 10:29:53
Salut,
Content que tu aies résolu ton problème.
Il me semble que tu pourrais obtenir un résultat analogue plus simplement en utilisant la fonction RECHDOM (DLOOKUP en anglais) d'Access. Tu récupérerais le mois dans la table sans passer par DAO.
Par exemple :
Dim MoisComplet As String
MoisComplet = DLookup("MonthPandL", "tbl_MonthNumber", "Month='" & Me.ListeMois & "'" )
MsgBox MoisComplet
En fait DLookup lance directement une requête sur la table.
A+
Horatio
Marsh Posté le 05-09-2006 à 16:18:32
Bonjour,
Je laisse ce message parce que je ne comprends vraiment pas pourquoi une erreur se produit.
Le contexte : je crée un formulaire dans Access, qui doit permettre d'importer les données d'un fichier Excel directement dans certaines colonnes de la base de données. Mais les données que l'utilisateur va importer dépendent du mois de l'année. L'utilisateur choisit donc dans une liste le mois correspondant.
C'est pour cela que j'utilise un recordset : en fonction du mois choisi, je fais une requete de sélection sur une table qui contient des informations qui me permettent de localiser les données à importer.
Maintenant voilà le code (uniquement ce qui est utile):
Et j'obtiens systématiquement malgré tous mes efforts une erreur 3061 "Too few parameters. 1 Expected" soit en français, "Trop peu de paramètres. 1 attendu."
Auriez vous une piste à me donner ?
Message édité par Alphajet le 06-09-2006 à 09:26:41
---------------
Bien joué! Mais une brique ne rend jamais les coups.