Requete select en c# [Résolu]

cs_baby85 79 Messages postés mercredi 22 octobre 2008Date d'inscription 17 juin 2009 Dernière intervention - 18 févr. 2009 à 19:00 - Dernière réponse : cs_baby85 79 Messages postés mercredi 22 octobre 2008Date d'inscription 17 juin 2009 Dernière intervention
- 18 févr. 2009 à 22:27
bonsoir,
svp j ai un probleme au niveau de cette requete :string

req1 =
"select count(distinct(n))from tableau";
lorsque je excécute le programme il affiche une msg d'erreur au niiveau de lignesRead1 = cmdAcess1.ExecuteReader();
l'erreu est
ERROR [42000] [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression '(count((n))from tableau'.
de plus je veux récuperer le resultat de la requete dans une variable de type float, comment il faut faire la conversion de string en float?
Merci d'avance
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 18 févr. 2009 à 19:22
3
Merci
Salut

Il faut apprendre a faire du SQL?

C'est  une commande de  ce type
cmdAcess1.commandtext = "
select distinct count(*) from tableau"

int n = cmdAcess1.ExecuteScalar()
;

Merci nhervagault 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 83 internautes ce mois-ci

Commenter la réponse de nhervagault
Meilleure réponse
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 18 févr. 2009 à 20:45
3
Merci
j'aurais dit comme nhervagault sauf que j'ai vu, pas plus tard que cette semaine une requête (quand je dis une, c'est des dizaines dans des procédures) fonctionner parfaitement.

par contre apparemment il manque un espace juste avant le From.

Et pour récupérer la valeur, comme tu récupère un seul champ sur une seule ligne, tu peux effectivement utiliser ExecuteScalar, parfaitement adapter à ce genre de requête, justement.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php

Merci cs_casy 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 83 internautes ce mois-ci

Commenter la réponse de cs_casy
Meilleure réponse
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 18 févr. 2009 à 21:27
3
Merci
int

n = (int)cmdAcess.ExecuteScalar();

Merci nhervagault 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 83 internautes ce mois-ci

Commenter la réponse de nhervagault
Meilleure réponse
WishhhMaster 327 Messages postés mardi 17 février 2004Date d'inscription 10 avril 2010 Dernière intervention - 18 févr. 2009 à 21:33
3
Merci
int

n =Convert.ToInt32(cmdAcess.ExecuteScalar());

Merci WishhhMaster 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 83 internautes ce mois-ci

Commenter la réponse de WishhhMaster
Meilleure réponse
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 18 févr. 2009 à 21:42
3
Merci
select count(num) from tableau group by num

Merci nhervagault 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 83 internautes ce mois-ci

Commenter la réponse de nhervagault
cs_baby85 79 Messages postés mercredi 22 octobre 2008Date d'inscription 17 juin 2009 Dernière intervention - 18 févr. 2009 à 21:18
0
Merci
bonsoir,
Merci pour votre aide
Mais lorsque j'éxécute le programme il affiche un messaged'erreur au niveau

int n = cmdAcess.ExecuteScalar();
le message est la suivante :
Error 2 Cannot implicitly convert type 'object' to 'int'. An explicit conversion exists (are you missing a cast?) C:\Users\toshiba\Desktop\WindowsApplication8\WindowsApplication8\EtatReseau.cs 97 22 WindowsApplication8
Commenter la réponse de cs_baby85
cs_baby85 79 Messages postés mercredi 22 octobre 2008Date d'inscription 17 juin 2009 Dernière intervention - 18 févr. 2009 à 21:39
0
Merci
le programme s'excécute correctement mais il affiche un nombre faux


il affiche le nombre des toutes les lignes meme s'ils ont le meme nombre
de plus j'ai ecrit la requete deux fois et je pense que ce faux


string req =
"select distinct count(num) from tableau";




OdbcCommand

cmdAcess =


new





OdbcCommand

(req, connexion);




cmdAcess.CommandText =





"select distinct count(num) from tableau"

;



int




n = (


int

)cmdAcess.ExecuteScalar();



 
Commenter la réponse de cs_baby85
cs_baby85 79 Messages postés mercredi 22 octobre 2008Date d'inscription 17 juin 2009 Dernière intervention - 18 févr. 2009 à 22:02
0
Merci
 je veux qu 'il affiche le nombre de num différent or cette requete affiche le contraire aprés l'éxécution
Commenter la réponse de cs_baby85
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 18 févr. 2009 à 22:18
0
Merci
Finalement ta requete initiale fonctionne

exemple sur northwind sql server
select count(distinct(categoryid))
from dbo.Products

sur  access c'est peut etre la meme chose

"select count(distinct(n))from tableau"
Commenter la réponse de nhervagault
cs_baby85 79 Messages postés mercredi 22 octobre 2008Date d'inscription 17 juin 2009 Dernière intervention - 18 févr. 2009 à 22:27
0
Merci
le probleme lorsque j'ecrit cette requete il affiche une message d'erreur au niveau int

n = (
int)cmdAcess.ExecuteScalar();

ERROR [42000] [Microsoft][Pilote ODBC Microsoft Access] Fonction 'distinct' non définie dans l'expression.
Commenter la réponse de cs_baby85

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.