begin process at 2010 03 22 10:21:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

Soucis de génération dynamique de requêtes parametrables


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Soucis de génération dynamique de requêtes parametrables

vendredi 6 février 2009 à 15:00:16 | Soucis de génération dynamique de requêtes parametrables

hebus16

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 :

PARAMETERS PM_New_Part_Number Text, PM_Description__ Text, PM_ROHS Text, PM_Value Text, PM_PCB_Footprint Text, PM_Schematic_Part Text, PM_Dimension_Lxlxh__mm_ Text, PM_Temperature_range Text, PM_AEC_Q Text, PM_Farnell Text, PM_Statut_Composants Text, PM_Type Text, PM_Voltage Text, PM_Tolerance Text;
UPDATE Capacitors SET  [Description()] = PM_Description__, [ROHS] = PM_ROHS, [Value] = PM_Value, [PCB_Footprint] = PM_PCB_Footprint, [Schematic_Part] = PM_Schematic_Part, [Dimension_Lxlxh_(mm)] = PM_Dimension_Lxlxh__mm_, [Temperature_range] = PM_Temperature_range, [AEC_Q] = PM_AEC_Q, [Farnell] = PM_Farnell, [Statut_Composants] = PM_Statut_Composants, [Type] = PM_Type, [Voltage] = PM_Voltage, [Tolerance] = PM_Tolerance WHERE  [New_Part_Number] = PM_New_Part_Number;


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 


vendredi 6 février 2009 à 21:00:38 | Re : Soucis de génération dynamique de requêtes parametrables

zavier666

Réponse acceptée !
oui, j'ai déjà eu ton soucis. j'ai commencé par passer une requete demandant 1 paramètre, puis deux, puis trois. tu n'arriveras jamais à débugger ton code si tu commence avec les 14 paramètres, c'est trop. Fait gaffe aussi aux retours chariot

--------------------------------------------------
Toujours + de VB et d'API => APi @ le Loupe
http://apialaloupe.free.fr

lundi 9 février 2009 à 10:07:10 | Re : Soucis de génération dynamique de requêtes parametrables

hebus16

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





Cette discussion est classée dans : text, parametres, pm, part, soucis


Répondre à ce message

Sujets en rapport avec ce message

checkbox et fichiers text [ par guinouille ] tout d'abord bonjour,voila mon soucis: je crais plusieurs checkbox ( jusqu'a la pas de pb), quand je selectionne une check il se crait un fichiers .tx probleme duplicata [ par morpheus22170 ] bonjour j'utilise visual studio net 2003 et easy php 1.8 comme base de données.j'ai un problème concernant une table qui possède deux clé primaire. la probleme avec MoveLast [ par petchy ] bonjourj'ai un probleme avec "moveLast",j'ai mis se code dans l'activate de ma form,mais rien ne s'affiche If Not Rs.EOF Then       Rs.MoveLast Bug de la touche VbkeyF10 [ par titotitotito ] La touche F10 fonctionne mal avec la fonction VBkeyF10exemple :Option ExplicitPublic x As SinglePrivate Sub Form_KeyDown(KeyCode As Integer, Shift As probleme de socket sous vb.net [ par Yossi ] Bonjour,j'essaye d 'envoyer un message  par un socket mais j'ai le message "une requete d'envoi ou de réception n'a pas été autorisée car le socket n' Liste de choix modifiable et zone de text [ par dias24 ] bonjour à tous,Je pose la question à savoir : Dans mon formulaire j'ai une liste modifiable (comobox) de deux colonnes et une zone de text (textbox).D Divers problèmes... [ par davidguillon ] Mesdames, messieurs les jurés... ;)Bon déjà je m'excuse pour mon titre peu explicite...C'est mon trois ou quatrième post concernant le même projet, ma Transfer de donné [ par Astro8899 ] Salut tous le monde.Je me fais un programme en vb.net et je veux transférer des données avec socket mais quand je fais mon code il ne marque pas d'err fichier texte, trier. [ par grosminou_55 ] bonjous a tous     voilà   mon brobleme est simple a poser mais peut etre un peut plus dur  a repondre (pour ma part en tous cas je n'y suis pas arriv comment faire un delete [ par papounez ] BonjourDebutant VB6question deja pose mais je reformule mieux mon probleme comment faire un delete ?j'ai 2 forms ,dans la form1 je click sur un nom qu


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales