Pas de résultat?!

Signaler
Messages postés
56
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
25 novembre 2004
-
Messages postés
1765
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
-
bajour!
voilà, je fait une requête qui peut retourner un résultat nul c'est-à-dire qu'aucun tuple ne correspond à ce que je demande dans ma bd.
je fais donc un test pour savoir si le résultat est nul comme ça:
string MaRequete = "SELECT MAX(NUMMIS) FROM mission WHERE NUMCLI=";
MaRequete += DropDownList_clients.SelectedItem.Value;
odbcCommand_mission.CommandText = MaRequete;
odbcCommand_mission.Connection = odbcConnection_mission;
odbcConnection_mission.Open();
OdbcDataReader MonDataReader;
MonDataReader=odbcCommand_mission.ExecuteReader();
bool res=MonDataReader.Read();
int nb_missions;
if(res)
nb_missions=MonDataReader.GetInt32(0);
else
nb_missions=0;
nb_missions++;
Label_nummission.Text=nb_missions.ToString();
MonDataReader.Close();
odbcConnection_mission.Close();

mais ça ne fonctionne pas du tout, en fait ça génère une erreur du genre je ne peut pas faire ça:
"nb_missions=MonDataReader.GetInt32(0);"

quelqu'un a une idée????

merci d'avance!

Dans la vie faites comme les canards: paraissez zen et serain à la surface et pédalez comme un dingue en dessous!

5 réponses

Messages postés
1765
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
6
Pourquoi passer par un getint32 ?
Tu as essaye d'afficher simplement le resultat dans un textbox ?
Pour deja etre sur que tq requette te renvoie un resultat

Romelard Fabrice (Alias F___)
Messages postés
56
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
25 novembre 2004

ba en fait, j'ai un peu changé mon code, jestement pour faire 2 cas:
si réponse non vide alors je récupère,
sinon, je met le int à 0...
je fais comme ça:

string MaRequete = "SELECT MAX(NUMMIS) FROM mission WHERE NUMCLI=";
MaRequete += DropDownList_clients.SelectedItem.Value;
odbcCommand_mission.CommandText = MaRequete;
odbcCommand_mission.Connection = odbcConnection_mission;
odbcConnection_mission.Open();
OdbcDataReader MonDataReader;
MonDataReader=odbcCommand_mission.ExecuteReader();
bool res=MonDataReader.Read();
int nb_missions;
if((res)&& (IsDBNull(MonDataReader(0))))
nb_missions=MonDataReader.GetInt32(0);
else
nb_missions=0;
nb_missions++;
Label_nummission.Text=nb_missions.ToString();
odbcConnection_mission.Close();

mais c comme si je n'avais rien fait,
j'ai essayé aussi ça:
int nb_missions=(int)odbcCommand_mission.ExecuteScalar();

et devine......c pareil!!!
alors, d'autres idées????

Dans la vie faites comme les canards: paraissez zen et serain à la surface et pédalez comme un dingue en dessous!
Messages postés
1765
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
6
Mais fais juste une ecriture de ton reader dans un simple datagrid

Tu verras directement si des valeurs existent.

Romelard Fabrice (Alias F___)
Messages postés
56
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
25 novembre 2004

je ne comprends pas pourquoi je dois mettre ce résultat dans un datagrid, je ne veux rien afficher?

Dans la vie faites comme les canards: paraissez zen et serain à la surface et pédalez comme un dingue en dessous!
Messages postés
1765
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
6
Pour le moment, on se fout de l'affichage, il faut deja savoir (avant de vouloir l'afficher), si ton datareader renvoie des valeurs ou non.
Je ne pense pas que ca soit le cas pour le moment, ensuite le "MonDataReader.GetInt32(0);" je trouve la syntaxe etrange et je me mefie toujours des id de colonne.

A ta place je modifierai ma requette pour nommer le champs retourne comme ceci :
> SELECT MAX(NUMMIS) AS MonMax ....

Du coup dans ton Reader, le champs sera nomme et non gere par un Numero.

La sortie sur le datagrid est une sortie simple permettant de tester ton reader

MonDatagrid.Datasource = MonDatareader
MonDatagrid.DataBind

ET la dessus tu visualiseras immediatement tes donnees de retour.
Romelard Fabrice (Alias F___)