Erreur !

[Résolu]
Signaler
Messages postés
393
Date d'inscription
mercredi 8 mars 2006
Statut
Membre
Dernière intervention
23 mars 2007
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
-
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

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
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# 
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
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# 
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
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# 
Messages postés
393
Date d'inscription
mercredi 8 mars 2006
Statut
Membre
Dernière intervention
23 mars 2007

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
Messages postés
393
Date d'inscription
mercredi 8 mars 2006
Statut
Membre
Dernière intervention
23 mars 2007

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
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
56
Remarquez que pour une collection de string, on peut aussi utiliser :
System.Collections.Specialized.
StringCollection

VC# forever
=13319