Requete select en c#

Résolu
Signaler
Messages postés
79
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
17 juin 2009
-
Messages postés
79
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
17 juin 2009
-
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

10 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
37
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()
;
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
37
int

n = (int)cmdAcess.ExecuteScalar();
Messages postés
327
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
10 avril 2010
8
int

n =Convert.ToInt32(cmdAcess.ExecuteScalar());
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
37
select count(num) from tableau group by num
Messages postés
79
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
17 juin 2009

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
Messages postés
79
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
17 juin 2009

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();



 
Messages postés
79
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
17 juin 2009

 je veux qu 'il affiche le nombre de num différent or cette requete affiche le contraire aprés l'éxécution
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
37
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"
Messages postés
79
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
17 juin 2009

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.