hebus16
Messages postés80Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention 2 octobre 2009
-
6 févr. 2009 à 15:00
hebus16
Messages postés80Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention 2 octobre 2009
-
9 févr. 2009 à 10:07
Bonjour à tous,
Et voilà 4 ans que je n'avais pas mis les mains dans VBA et me voici surement avec une erreur de débutant ... du moins je l'espère.
Voici mon soucis, je suis en train de faire la mise en place d'un automate Excel permettant à partir d'un fichier txt de rentrer ces donnés dans une base Access. Jusqu'ici rien de bien compliqué. Le soucis va se trouver dans la construction des query pour faire l'insertion et l'update de donnée.
Je suis donc passé par des requetes parametrables saisie dans les objets QueryDef.
La grande blague c'est que lors de ma construction de ces requetes un premier contrôle est fait par l'objet pour eviter que des paramètres possèdent certains caracteres => "()/$%?&@!-=+ç^[];:,.`{}<>*\#|±¢£¤¬¦²³¼½¾~´ "
Donc pour résoudre ceci une petit replace et on en parle plus dans les parametres et je me retrouve avec ce type de requete :
et là la reponse à l'execution est un simple message d'erreur :
Erreur d'execution 3061 : Trop peu de paramètres. 16 attendu
Je me suis un peu enervé et vient de trouver quels sont les 2 parametres manquant et là surprise l'objet QueryDefs possédent dans sa liste de parametres :
- les 14 parametres créés par la requete
- un parametre Description()
- un parametre Dimension_Lxlxh_(mm)
L'analyse est simple il trouve des caracteres interdits et me créé ces 2 parametres (qui ne respecte pas bien sur ces propres controles )
Est ce que quelqu'un q deja eu ce soucis et si oui comment l'a t'il contourné ? Il va de soit que je ne peux pas changer la structure de la bd
En vous remerciant pour le coup de main
A voir également:
Soucis de génération dynamique de requêtes parametrables
hebus16
Messages postés80Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention 2 octobre 20091 9 févr. 2009 à 10:07
J'ai effectivement dû faire les tests paramètres par paramètres et changer la façon de faire mon Update ( au lieu d'exécuter une seule et unique requête je l'ai fait passer par un update champ à champ dans une boucle)
Mais au final j'ai réussi à trouver la faille. Elle ne venait pas du code mais de la base de donnée. Lors de la création de l'exécution du QueryDefs celui doit faire un test sur l'existence des champs indiqué dans la requête.
Résultat pour mon soucis, la base de donnée avait non pas les champs Description()
et Dimension_Lxlxh_(mm) mais les champs ... défaut de conception de la base. Je soupçonne la fonction de créer à la volée des paramètres si les champs n'existent pas.
Donc pour ma part la solution à ce problème se trouve là :
- Vérifier que certains caractères ne soit pas présent dans le nom des champs et des paramètres
- surtout s'assurer que les champs de la requête correspondent bien à ceux de la base de donnée