tiguy21
Messages postés15Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention22 juillet 2007
-
9 nov. 2006 à 21:14
TMONOD
Messages postés256Date d'inscriptionmardi 25 novembre 2003StatutMembreDerniè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.
TMONOD
Messages postés256Date d'inscriptionmardi 25 novembre 2003StatutMembreDernière intervention 6 novembre 20091 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
tiguy21
Messages postés15Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention22 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é.
TMONOD
Messages postés256Date d'inscriptionmardi 25 novembre 2003StatutMembreDernière intervention 6 novembre 20091 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é[^]
Vous n’avez pas trouvé la réponse que vous recherchez ?
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 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
TMONOD
Messages postés256Date d'inscriptionmardi 25 novembre 2003StatutMembreDernière intervention 6 novembre 20091 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