Aller au contenu

avis au pro de vb et sql sous access


keneda212

Messages recommandés

pb numéro 1 : ici [RESOLU]

pb numéro 2 : ici [RESOLU]

pb numéro 3 : ici

bon j'explique mon pb car la ca m'enerve

j'ai une base avec un champ de type Date abregé : format jj/mm/aaaa

apres dans une form j'ai une listbox qui recupère toutes les dates dans la base ok

et si je selectionne la date et que je valide, il doit me rechercher le numéro de l'essai

la ligne qui chie :

strSql = "SELECT NumEssai FROM Condition WHERE dateEssai = " & dateEssai.Value & " order by dateessai "

dateEssai : le champs date

dateEssai.Value la list box

le pb quand je laisse la validation : erreur 3061

trop peu de paramètres : 1 attendu

-----------------------

j'ai deja testé de forcer en format date le dateEssai.Value avec format() ou date()

j'ai testé de changer le nom de listbox au cas ou ;)

j'ai testé avec des cotes mais rien n'y fait

et pis ca m'enerve.

je trouve pas d'ou vient le pb. j'ai fait des recherches sur le format mais rien ne passe

j'ai l'impression que ca vient du format de stockage dans la base mais ...

j'ai le meme code qu'un exemple que j'ai deja (du meme type avec la date et la requete) et lui ca fonctionne !!! : la preuve que la copie sur le voisin ne marche jamais.

alors si quelqu'un peut m'aider..... c'est vraiment un boss

Lien vers le commentaire
Partager sur d’autres sites

Tu pourrais faire un echo de cette ligne pour que l'on voit la syntaxe exacte que tu refiles a ta base sql?

J'ai souvent eu de sales problemes de requetes sql et souvent, ca venait du format d'une variable qui venait mettre le dawa. En general, avec un echo de la ligne, on y voit deja plus clair pour trouver l'erreur. Je ne sais pas si je pourrai t'aider mais ca facilitera sans doute la tache de ceux qui liront ce post et voudront t'aider aussi

Lien vers le commentaire
Partager sur d’autres sites

Tu pourrais faire un echo de cette ligne pour que l'on voit la syntaxe exacte que tu refiles a ta base sql?

J'ai souvent eu de sales problemes de requetes sql et souvent, ca venait du format d'une variable qui venait mettre le dawa. En general, avec un echo de la ligne, on y voit deja plus clair pour trouver l'erreur. Je ne sais pas si je pourrai t'aider mais ca facilitera sans doute la tache de ceux qui liront ce post et voudront t'aider aussi

c'est ce que j'ai fait :

Requete N°01 : SELECT NumEssai FROM Condition WHERE dateEssai = 07/06/2004 order by dateessai  

Lien vers le commentaire
Partager sur d’autres sites

Difficile de t'aider là quand même. Les premières choses que je testerais seraient:

-les quotes autour de la date pour eviter que les "/" ne mettent la merde mais visiblement tu l'as deja fait

-regarder dans la base si une telle date existe (t'as du faire aussi mais bon :| )

-vérifier que je n'emploie pas d'autre variable que NumEssai dans le tableau que sql me refile en sortie de ma requete (dans ce cas la si tu tentes d'acceder a un autre index, ca plante a tous les coups). Verifie bien cette derniere solution car je me souviens avoir perdu des heures en rejetant la faute sur ma requete sql alors que le bug venait de la ligne juste en dessous ou j'essayais d'acceder a un champ non extrait de la base.

Perso, c'est tout ce que je peux en dire. Si t'as deja verifié tout ca, je pourrais pas plus t'aider n'ayant pas le nez sur ta base ou le code :zarb:

Lien vers le commentaire
Partager sur d’autres sites

-les quotes autour de la date pour eviter que les "/" ne mettent la merde mais visiblement tu l'as deja fait

effectivement je l'ai fait

-regarder dans la base si une telle date existe (t'as du faire aussi mais bon  )

en fait les dates que je selectionne viennent du tableau : j'affiche dans la liste toutes les dates possibles

vérifier que je n'emploie pas d'autre variable que NumEssai dans le tableau que sql me refile en sortie de ma requete (dans ce cas la si tu tentes d'acceder a un autre index, ca plante a tous les coups). Verifie bien cette derniere solution car je me souviens avoir perdu des heures en rejetant la faute sur ma requete sql alors que le bug venait de la ligne juste en dessous ou j'essayais d'acceder a un champ non extrait de la base.

:| je cromprend pas la ...

Lien vers le commentaire
Partager sur d’autres sites

Ben je vais tenter de t'expliquer le truc (je te previens je suis peut etre completement a cote de la plaque). En fait comme tu fais un select sur le champ NumEssai, les lignes retournees par la requete sql ne contiendront que le champ numessai. Si tu essaies d'acceder a un autre champ plus loin dans le code sur une ligne retournee par cette requete, alors a ce moment la tu as un message d'erreur du genre de celui que tu as montré (le numéro de l'erreur je serais bien incapable de m'en souvenir). Bref, essaie avec * a la place de NumEssai et la si ca plante toujours c'est que j'ai tout faux et que je peux plus rien pour toi :|

En tout cas, je te dis ca car j'ai souvent cru que ce genre d'erreur venait d'une requete sql mais en fait pas du tout, ce qui m'a fait perdre beaucoup de temps.

Lien vers le commentaire
Partager sur d’autres sites

ok j'ai compris

en fait je veux juste recupérer le numéro d'essai qui est unique et qui correspond a l'essai. apres dans la suite de mon code; je stocke tout ces numéros dans un tableau, je fait divers traitements de comparaison et apres je vais recuperer et afficher les lignes correspondant a ce numéro en fesant un select * from condition where numEssai = numTabl(i); en gros

pour l'instant mon but est juste de recuperer ces numéros et de les affichers. or la il devrai recupérer 1 numéro vu qu'il y a qu'un seul essai dans ma base a une date du 7/04/2005 et je selectionne dans ma listebox la date 7/04/2005

voila

Lien vers le commentaire
Partager sur d’autres sites

Bon, je vois pas d'ou ca peut venir, c'est sans doute une erreur tellement bete qu'on arrive pas a la voir (c'est comme ca 99% du temps avec une requete sql qui foire :| ).

D'ailleurs, quand je regarde ta requete, j'ai soudain un vieux doute: tu cherches dans ta table une valeur venant d'un champ dateEssai et ensuite tu ordonnes en fonction d'un champ qui s'appelle dateessai. Il me parait y avoir une erreur de majuscule la: dateEssai<>dateessai. Il me semble bien que les majuscules ont une importance en sql mais vu que je programmais pas sous windows, je sais pas si ca peut influer pour toi. En tout cas, ca merite que tu tentes en respectant la casse je pense.

Lien vers le commentaire
Partager sur d’autres sites

ouaaaaaaa le boulet !!! je me suis planter de champs et de table.

j'ai pris le champs d'une autre table (la table conditon_bordure) . c'est sur il voulais pas trouver

ps : apres avoir tester...... ca marche toujours pas .... :|

le champs s'appelle date et non dateEssai mais c'est pas pour ca que ca marche. je vais retester tous les truc que j'ai deja tester mais le truc bizarre c'est que quand je lit le code d'erreur (qui est toujours le meme par ailleur) je comprend qu'il n'y a pas de condition dans le WHERE. ce qui est vraiment etrange

Lien vers le commentaire
Partager sur d’autres sites

:|

Plus l'erreur est con, plus on met de temps a la trouver :eeek2:

Logiquement, si t'as encore une erreur, ca devrait venir d'une modification que t'as fait dans un de tes moment de desespoir en voulant corriger ton bug... C'est toujours comme ca que ca se passe :zarb: (reessaie bien les quote, ca me parait pas super cool d'avoir des / qui se baladent au milieu d'une requete)

Lien vers le commentaire
Partager sur d’autres sites

donnée incompatible dans la forme du critere 

j'avance : je confirme donc le format DATE a mettre je revoie ca et ca devrai marcher

ps : j'ai crue que ca marchais pas tout a l'heure mais j'avais oublier de changer le champs orderby :chinois:

edit1 (je met 1 au cas ou) : j'ai fait format(" & dateEssai & ") ca marche mais je me retrouve avec aucun enregistrement valide alors que je devrai forcement en avoir 1 vu que la date que je selectionne est dans le 1er enregistrement : je crois a un probleme de format de date entre les mois et les jours

Lien vers le commentaire
Partager sur d’autres sites

Pour t'en assurer, laisse bien toujours un echo de ta requete dans ton code comme ca tu vois direct si la correspondance est bonne ou pas entre ta date dans la base et ta date formatée et puis ca met bien en lumiere la plupart des erreurs. Mais bon la ou tu en es, ca devrait passer maintenant! Bon courage pour la suite :chinois:

Lien vers le commentaire
Partager sur d’autres sites

Pour t'en assurer, laisse bien toujours un echo de ta requete dans ton code comme ca tu vois direct si la correspondance est bonne ou pas entre ta date dans la base et ta date formatée et puis ca met bien en lumiere la plupart des erreurs. Mais bon la ou tu en es, ca devrait passer maintenant! Bon courage pour la suite  :eeek2:

merci en effet j'est rajouter en plus les cotes a l'interieur du format et ca marche

donc ma commande au final

strSql = "SELECT NumEssai FROM Condition WHERE date = format('" & dateEssai.Value & "') order by date " 

ps : j'ai rajouter en bas de ma form, une case en bas qui m'affiche toute les requetes

en tout cas je te remercie :chinois: d'avoir passer avec du temps sur ce pb (con d'ailleur mais c'est toujours comme ca)

avec l'expérience c'est toujours les erreurs les plus connes qui sont les plus chiantes a trouver et c'est toujours en tapant son probleme sur un forum qu'on apercoit d'ou vient celui la. (mais un peu d'aide est toujours le bien venu)

Lien vers le commentaire
Partager sur d’autres sites

bon voici le probleme numéro 2 . et j'ai passer presque tout mon matin de dessus

j'ai une form a et une form b

j'ai un tableau tabNum dans la form a que j'aimerai faire passer dans la form b quand je vais pour quitte la form a

comment je fait ???

j'ai un exemple que j'ai tester, il marche mais la copie de code ca marche jamais, ou il ne fait rien et il peut utiliser le tableau au load de la form b. il y a des données dedans

j'ai fait exactement pareil, ca marche pas (rien dans le tableau)

Lien vers le commentaire
Partager sur d’autres sites

Perso, je dois aussi passer un tableau d'une Form à l'autre pour mon projet.

J'ai donc pensé à faire un tableau accessible par toutes les formes.

Pour ce faire, il faut créer un module (*.bas) contenant la déclaration de ton tableau en PUBLIC!!! (très important car en Private il ne sera accessible que par ton module).

Dans ce module je mets toutes mes variables susceptibles d'être utilisées dans plusieurs Forms.

Voilà, c'est pas plus compliqué que ça! :francais:

Si t'as des questions, n'hésite pas!

Lien vers le commentaire
Partager sur d’autres sites

nouveau probleme : quoi que ce n'est pas vraiment un pb

j'ai pas mal recherche sur le net et les seules solutions qui fonctionnent ne me plaisent pas

le pb : j'ai une table avec un enregistrement avec un numéroAuto egale a 1

apres je fait divers test qui vont faire incrémenter ce numéro.

j'efface mes tests.

et je me retrouve avec un nouvel enregistrement avec un numéro auto égal a 42

vous voyez le pb. un enregistrement avec un id a 1 et l'autre a 42

j'aimerai reinitialiser les numéro d'identifiant pour que quand j'en rajoute un nouveau, l'id soit egale a 2 et non a 42

apres quelque recherche sur le net, il propose :

-compactage de la base : marche pas

-suppression de la table et la refaire : peu pas !

alors si quelqu'un a une idée Merci.

Lien vers le commentaire
Partager sur d’autres sites

Je crois qu'il faudrait détruire ton champ ID et le recréé...

Dans ce cas tu ne détruit pas toute ta table mais seulement un champ.

Seul problème: Il faut être certain que ta table est vide car tu perdrais les ID's déjà encodés!!! :D

Je vais bientôt avoir à traiter ce prob :D donc si je trouve une meilleure soluce je te fais signe! :transpi:

P.S.: Fais-en autant si tu as trouvé avant moi! ;)

Lien vers le commentaire
Partager sur d’autres sites

je reviens a la charge :craint:

j'ai toujours pas resolu mon pb de numéro automatique et ca m'enbete car dans une fonction de recherche je recupere l'id d'un essai par exemple 5

apres lors du chargement de la form affichage je vais recherche l'enregistrement 5

le probleme c'est qu'il y a un enregistrement 1, un autre2 et un 5

le 3 et 4 on été supprimer.

mais goto enregistrement 5 impossible car l'enregistrement a id 5 est en fait le troisieme enregistrement.

je recherche une solution pour resoudre mon pb.

EDIT : j'ai trouver une petite solution :

je fais une requete sql dans ma base qui compte le nombre d'enregistrement ayant un id <= a celui que je veux. dans mon exemple je trouve 3

apres je fait un goto 3 et ca marche niquel :fumer:

mais si quelqu'un trouve une solution pour remettre dans le bon ordre mes numéros automatique je suis preneur aussi ^^

Lien vers le commentaire
Partager sur d’autres sites

Humm, règle numéro 1 ne jamais se baser sur les IDs si tu veux un ordre!

Dans ce cas "TU" crées une colonne uniquement dédiée à ca que "tu" incrémentes toi même.

Si tu veux absolument le gérer sur la colonne ID alors ne met pas d'auto increment et quand tu fais ton insert tu fais un select max(id) from table que t'incrémente, mais bon, c'est plutot bancal, le meilleur étant toujours de faire une colonne spécifique pour ton ordre.

Après c'est a toi de voir son incrémentation (+1, +10, +100 ...) tout dépend si tu devras par la suite modifier cet ordre.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...