Requete ne fonctionne pas, type incompatible

tiguy21 Messages postés 15 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 22 juillet 2007 - 9 nov. 2006 à 21:14
TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 - 10 nov. 2006 à 11:50
Salut
jai un petit probleme

voici ma requete sql

rs2.Open "select * from mp3 where numero = '%" + lstMP3.ItemData(lstMP3.ListIndex) + "%'", conn, adOpenKeyset, adLockOptimistic

Lorsque je demare mon application, jai l'erreur runtime 13 type incompatible.

la valeur numero est un numero automatique dans access, dapres ce que jai lu, cest une entier long.

Je cherche a savoir si numero est = a mon itemdata.
Jai fait un petit test. Mon numero = 36 et mon item data aussi, mais jai lerreur type incompatible.

quelque peut maider?

merci

8 réponses

TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
9 nov. 2006 à 21:17
118-218

Jcbé[^]
0
TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
9 nov. 2006 à 21:39
Désolé pour l'humour douteux, et...tout d'abord bonsoir !
- Tu devrais décomposer tout ce qui se trouve entre tes deux "%", même si vb est trés permissif en matière de types de données il vaut mieux s'assurer de concatener des variables de type "chainede caractèresé, ca marche mieux en général.
- L'utilisation d'un joker (%, * et les autres) doit normalement s'associer avec le mot-clé "like" et pas "="...si recherches une valeur exacte et pas une partie de la valeur.
- Si le champ "numéro" de ta table "MP3" est un nombre et pas une chaîne, il ne faut pas utiliser de délimiteur (ni guillemets ni simple quote).
Donc, en admettant que ton champ "numéro" soit numérique et que la valeur retournée
par l'expression "lstMP3.ItemData(lstMP3.ListIndex) " soit de type "chaine de caractère" il vaudrait mieux écrire :
rs2.Open "SELECT * from mp3 WHERE mp3.numero = " & lstMP3.ItemData(lstMP3.ListIndex) &" ;'", conn, adOpenKeyset, adLockOptimistic

Voila, j'espère que ca te fera avancer.

Bonne soirée.










Jcbé[^]
0
tiguy21 Messages postés 15 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 22 juillet 2007
9 nov. 2006 à 21:53
Salut

Merci bien, ca fonctionner tres bien (jai juste le " ;) et tout a bien fonctionné.

estce que mon erreur etait mes ' ' qui transformait mon itemdata en texte et non pas en numerique?


    rs2.Open "SELECT * from mp3 WHERE numero = " & lstMP3.ItemData(lstMP3.ListIndex) & "", conn, adOpenKeyset, adLockOptimistic


Aussi, un autre petite question.
Jai un autre requete:
    rs.Open "select numcd from mp3 GROUP BY numcd order by NumCD", conn, adOpenKeyset, adLockOptimistic

Ma table 7 colonnes.


Ce que je voudrais cest queqlue chose comme ceci:


rs.Open "select * from mp3 GROUP BY numcd order by NumCD"


En fait je voudrais toutes mes colonnes, mais que ca soit seulement la colonne numCD qui soit regroupé.


Merci de ton aide apprecié, et tres rapide ;)


 


 
0
TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
9 nov. 2006 à 23:30
Salut,
euh ! Group by est une instruction qui permet de faire des aggrégats :
Par exemple  imaginons une table :

numero      : Auteur      :Chanson                : style
1                :Aziz          :t'es la plus belle      :Soupe 
2                :Momo       :Ma plus belle cuite  :Rap
3                :Rachid       :Ma mobilette          : Rap
4                :Celine Fion:MOn beau Caribou: Soupe

Si tu fais "select * from MP3 GROUP BY style " tu obtiendras :

numero      : Auteur      :Chanson                : style
1                :Aziz          :t'es la plus belle      :Soupe    
2                :Momo       :Ma plus belle cuite  :Rap
3                :Rachid       :Ma mobilette          : Rap
4                :Celine Fion:MOn beau Caribou: Soupe

...c'est à dire la même chose.
Par contre Group By permet de regrouper et de calculer par exemple :
"Select Style,count(*) as nombreMorceaux from MP3 GROUP BY Style;"

Style         :NombreMorceaux
Soupe       : 2
Rap           : 2

Par rapport à ton exemple, tu ne peux pas obtenir un truc du genre :
Rap    : 2                :Momo       :Ma plus belle cuite  
          : 3                :Rachid       :Ma mobilette
Soupe: 1                :Aziz          :t'es la plus belle   
          : 4                :Celine Fion:MOn beau Caribou  

Voila

    

Jcbé[^]
0

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

Posez votre question
tiguy21 Messages postés 15 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 22 juillet 2007
10 nov. 2006 à 03:20
Salut

je voudrais regroupé ma liste par numero de CD (numcd)

Cest pour ca le Group By.

Mais je ny arrive pas, il me marque des erreurs.

Comme par exmple, je crois que je peux pas faire select * avec un group by

alors si queqlun peut maidé, je suis preneur ;)
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
10 nov. 2006 à 08:46
Si tu as access sert toi de l'assistant pour créer tes requêtes, tu verras imédiatement tes erreurs et tu pourras faire des requêtes assez complexes sans vraiment toucher au sql...
TBBUIM
0
TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
10 nov. 2006 à 11:46
Bonjour,
tbuim1 a raison, c'est une bonne solution.
En fait tu n'as pa compris comment marche l'instruction GROUP BY. Si tu nous expliquais ce que tu veux en faire nous pourrions t'aider.
Une requête sql "ramène" une certain nombre de lignes. Si tu veux "regrouper" ton traitement par numéro de cd il faut faire un truc qui ressemble à ça :

rs1.Open "SELECT * from mp3 WHERE mp3.numero = " & lstMP3.ItemData(lstMP3.ListIndex) & "' ORDER BY numcd ;", conn, adOpenKeyset, adLockOptimistic
while not rs1.eof
   debug.print "Traitement du CD N° " & rst1!numcd   rs2.Open "SELECT * from mp3 WHERE mp3.numero " & lstMP3.ItemData(lstMP3.ListIndex) & "WHERE numcd " rs1!numcd & " ORDER BY numero" , conn, adOpenKeyset, adLockOptimistic
   while not rst2.eof
         debug.print "Titre : " & rs2!titre
         debug.print "Durée :" & rs2!duree
   
         rst2.movenext
   wend
rst2.close  
   rs1.MoveNext
wend
rst1.close

Si ca peut te mettre sur la voie....

Jcbé[^]
0
TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
10 nov. 2006 à 11:50
...Désolé , oups, dans la première requete tu met "SELECT DISTINCT" pour avoir une liste distincte des numcd!

Jcbé[^]
0
Rejoignez-nous