[C#.Net]compter le nombre d'enregistrements

Résolu
kkhuet Messages postés 92 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 3 juin 2009 - 1 juin 2005 à 12:11
kkhuet Messages postés 92 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 3 juin 2009 - 1 juin 2005 à 16:18
Bonjour,



archi débutante en C#.Net alors please doucement dans les explications . Comment kon fait pour savoir si le nombre d'enregistrements résultat de ma requête est égal à 0?



//On vérifie que cette société n'a
pas déjà été renseignée

string
strConnexion_local = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry
Path=;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Database Password=;Data
Source='" + Application.StartupPath + "\\LocalParam.mdb';Password=;Jet
OLEDB:Engine Type=5;Jet OLEDB:Global Bulk Transactions = 1 ; Provider ='Microsoft.Jet.OLEDB.4.0';Jet OLEDB:System database=;Jet
OLEDB:SFP=False;Extended Properties=;Mode=Share Deny None;Jet OLEDB:New Database
Password=;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on
Compact=False;Jet OLEDB:Compact Without Replica Repair=False;User ID=Admin;Jet
OLEDB:Encrypt Database=False";






OleDbConnection oConnection_local = new
OleDbConnection(strConnexion_local);


oConnection_local.Open();

if
(oConnection_local.State ==
System.Data.ConnectionState.Open){

string strRequete_local
"select * From Sociétés Where [N° Siret]'" + oReader.GetString(1)
+"'";


OleDbCommand oCommand_local = new
OleDbCommand(strRequete_local,oConnection_local);




OleDbDataReader oReader_local =
oCommand_local.ExecuteReader();







//Si la société n'existe
pas

if
(oReader_local.IsDBNull(0) == true){ <-- c'est là ke je sais pas koi mettre pour compter le nombre d'enregistrements

this.t_chemin.Text =
chemin ;

this.t_raison_sociale.Text =
oReader.GetString(0);

this.t_siret.Text =
oReader.GetString(1);






} //sinon

else

MessageBox.Show("La société choisie existe déjà","Info
BatiReport");

}


D'avance merci pour la réponse

NINI

6 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
1 juin 2005 à 12:41
A ta place, je ferais un Select count(*) plutot qu'un Select



Donc en fait :



string strRequete_local "select count (*) From Sociétés Where [N° Siret]'" + oReader.GetString(1) +"'";

OleDbCommand oCommand_local = new OleDbCommand(strRequete_local,oConnection_local);



object result = oCommand_local. ExecuteScalar ();

if(int.Parse(result.ToString()) == 0)

{

//... ton code

}




ExecuteScalar() permet de recuperer juste le premier
élément d'une requete, soit ici, la valeur retournée par le count. La
valeur retournée est de type object.

Il suffit juste, ensuite, de convertir l'objet en int, et tu as ta valeur


Mx
3
taoetc Messages postés 346 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 3 septembre 2007 3
1 juin 2005 à 15:52
A mon avis, il manque pas grand chose pour que ca marche ca, avec une ligne en plus :
OleDbCommand oCommand_local = new OleDbCommand(strRequete_local,oConnection_local);
OleDbDataReader oReader_local = oCommand_local.ExecuteReader();

if(oReader.Read())
{ // si il a une ligne qui est retournée, alors on arrive à la lire
//pour lire toutes les lignes retournées
// while(oReader.Read())

MessageBox.Show("La société choisie existe déjà","Info BatiReport");

oReader.Close(); //pas oulbier de fermer le reader, autrement, pas content
//ton programme ne sera (dixit yoda)
}
else
{


//Si la société n'existe pas
this.t_chemin.Text = chemin ;
this.t_raison_sociale.Text = oReader.GetString(0);
this.t_siret.Text = oReader.GetString(1);



}
0
taoetc Messages postés 346 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 3 septembre 2007 3
1 juin 2005 à 15:56
ou alors
oReader.HasRow renvoie false si il n'y a pas de lignes de renvoyer mais vu que dans ton exemple , tu te sert de ce que t'a renvoyé la requete pour remplir des variaible, il faut bien que tu fasses read, donc, la meilleure solution est la premeire , enfin pour moi
0
taoetc Messages postés 346 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 3 septembre 2007 3
1 juin 2005 à 15:57
Et le oReader.Close() est mal placé il faut le mettre dans le else, et apres je ferme ma gueule
0

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

Posez votre question
kkhuet Messages postés 92 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 3 juin 2009 1
1 juin 2005 à 16:08
pas mal le ptit 'dixit yoda' ptit padawan taoetc
0
kkhuet Messages postés 92 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 3 juin 2009 1
1 juin 2005 à 16:18
et au fait merci pour la réponse taoetc..et MorpionMx aussi d'ailleurs
0
Rejoignez-nous