Erreur !

Résolu
woot6768 Messages postés 393 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 23 mars 2007 - 2 juin 2006 à 16:30
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 2 juin 2006 à 19:44
Je vous présente mon code avec les erreurs générées par la compilateur que je n'arrive pas à déboger.

public
void NettoyeReferencesCommunes(){

InitialiserCorrespondances();

string req;req =

"SELECT nom, commune FROM référence communes";RecordSet.Open(req, chaineDeConnection, ADODB.

CursorTypeEnum.adOpenKeyset, ADODB.
LockTypeEnum.adLockOptimistic, -1);

int n = 0;

if (!(IsNull(RecordSet)))/*Ici, le compilateur indique :
-Erreur 1 La méthode surchargée correspondant le mieux à 'RecoupementDebugg.Form1.IsNull(string)' possède des arguments non valides 
-Erreur 2 Argument '1' : impossible de convertir de 'ADODB.Recordset' en 'string' 
*/{

RecordSet.MoveFirst();

Collection<
string> exclus = GetExclusCommunes;

while (!(RecordSet.EOF))/*Et ici, le compilateur indique :
--Erreur 3 'ADODB._Recordset.Fields' est un 'propriété' mais est utilisé comme un 'méthode' */{

n = n + 1;

string nom =
"";

string commune =
"";

if ((!(IsNull(RecordSet.Fields(
"nom"))))){

}

}

}

RecordSet.Close();

}

Voilà est-ce que quelqu'un serait comment dégoguer ces 3 erreurs parce-que là je bloque!
Merci d'avance
Wouter Tjon

6 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
2 juin 2006 à 17:52
Si ta fonction IsNull est de type void, alors !IsNull ne peut pas marche.
Il faut que ta fonction soit de type bool.

Pour la seconde erreur, tu as appliqué la correction que je t'ai donné pour voir ?

Mx
MVP C# 
3
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
2 juin 2006 à 18:02
if ((!(IsNull(RecordSet.Fields[
"nom"].ToString())))) ;

Sinon, tiens, voila ton code en utilisant ADO.Net :

<hr />

using System.Data.SqlClient;

...

public
void NettoyeReferencesCommunes()
{
   InitialiserCorrespondances();

   Collection<
string> exclus = GetExclusCommunes();

   string nom =
string.Empty;

   string commune =
string.Empty;

   string req =
"SELECT nom, commune FROM référence communes";

   using (
SqlConnection connexion =
new
SqlConnection(chaineDeConnexion))
   {

      int n = 0;

      try
      {
         connexion.Open();

         using (
SqlCommand cmd =
new
SqlCommand(req, connexion))
         {

            using (
SqlDataReader reader = cmd.ExecuteReader())
            {

               while (reader.Read())
               {
                  n += 1;

                  if (!
string.IsNullOrEmpty(reader[
"nom"].ToString()))
                  {

                     //...  
                  }
               }
            }
         }

          catch (
SqlException se)
         {

            //Gestion de l'exception
         }
      }
   }

}
<hr />
Pas sur de l'utilisation de !string.IsNullOrEmpty, sachant que je sais pas de ce que t'attendais de ton IsNull

Mx
MVP C# 
3
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
2 juin 2006 à 17:40
Salut

Pourquoi ne pas utiliser ADO.Net plutot qu'ADODB ?

Sinon, pour ta premiere erreur ta méthode IsNull() attend un String, et pas un Recordset en parametre.
Pour la seconde erreur, Recordset.Fields["nom"] je pense.

Mx
MVP C# 
0
woot6768 Messages postés 393 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 23 mars 2007
2 juin 2006 à 17:49
Je ne connais pas la différence entre ADO. Net et ADODB, je l'ai utiliser car on m'a donné un petit exemple qui l'utilisais, donc j'ai fais de même.

Ensuite, pour la première erreur, j'ai remplacé 'RecordSet' par 'req'(ma requête), et il me génère une autre erreur.(Erreur 1 L'opérateur '!' ne peut pas être appliqué à un opérande de type 'void')

Enfin pour le 'Fields', je ne vois pas le problème, et c'est bien ça le problème;)
Woot
0

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

Posez votre question
woot6768 Messages postés 393 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 23 mars 2007
2 juin 2006 à 17:59
Ok d'accord j'ai compris pour le IsNull.
Mais j'ai effectivement testé ce que tu m'a donné et le compilateur me génère maintenant deux erreurs sur la ligne "


if ((!(IsNull(RecordSet.Fields[
"nom"]))))"

En l'occurence les deux erreurs sont :
-Erreur 1 La méthode surchargée correspondant le mieux à 'RecoupementDebugg.Form1.IsNull(string)' possède des arguments non valides
et
-Erreur 2 Argument '1' : impossible de convertir de 'ADODB.Field' en 'string' 
Woot
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
2 juin 2006 à 19:44
Remarquez que pour une collection de string, on peut aussi utiliser :
System.Collections.Specialized.
StringCollection

VC# forever
=13319
0
Rejoignez-nous