Erreur ! [Résolu]

woot6768 397 Messages postés mercredi 8 mars 2006Date d'inscription 23 mars 2007 Dernière intervention - 2 juin 2006 à 16:30 - Dernière réponse : cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention
- 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
Afficher la suite 

6 réponses

Répondre au sujet
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 2 juin 2006 à 17:52
+3
Utile
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# 
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de MorpionMx
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 2 juin 2006 à 18:02
+3
Utile
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# 
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de MorpionMx
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 2 juin 2006 à 17:40
0
Utile
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# 
Commenter la réponse de MorpionMx
woot6768 397 Messages postés mercredi 8 mars 2006Date d'inscription 23 mars 2007 Dernière intervention - 2 juin 2006 à 17:49
0
Utile
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
Commenter la réponse de woot6768
woot6768 397 Messages postés mercredi 8 mars 2006Date d'inscription 23 mars 2007 Dernière intervention - 2 juin 2006 à 17:59
0
Utile
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
Commenter la réponse de woot6768
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 2 juin 2006 à 19:44
0
Utile
Remarquez que pour une collection de string, on peut aussi utiliser :
System.Collections.Specialized.
StringCollection

VC# forever
=13319
Commenter la réponse de cs_Bidou

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.