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

Résolu
Signaler
Messages postés
92
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
3 juin 2009
-
Messages postés
92
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
3 juin 2009
-
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

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
55
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
Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
3
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);



}
Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
3
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
Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
3
Et le oReader.Close() est mal placé il faut le mettre dans le else, et apres je ferme ma gueule
Messages postés
92
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
3 juin 2009
1
pas mal le ptit 'dixit yoda' ptit padawan taoetc
Messages postés
92
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
3 juin 2009
1
et au fait merci pour la réponse taoetc..et MorpionMx aussi d'ailleurs