Cast spécifié non valide [Résolu]

gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 13 déc. 2007 à 18:03 - Dernière réponse : chakoor 1 Messages postés jeudi 20 janvier 2011Date d'inscription 17 mars 2011 Dernière intervention
- 17 mars 2011 à 11:30
bonjour,
je débute en C# et j'ai rencontré un problème auquel je ne parviens à comprendre quelle est-elle.
voici le code ci dessous et le message est le suivant : "le cast spécifié n'est pas valide"
 
public void ChargerListBox(string strRequete)
        {
        try
            {
                OleDbConnection oConnection = new OleDbConnection(strConnexion);
                OleDbCommand oCommand = new OleDbCommand(strRequete, oConnection);
                oConnection.Open();
                OleDbDataReader oReader = oCommand.ExecuteReader();
                do
                {
                    LB.Items.Clear();
                    //        MessageBox.Show(oReader.GetName(0));
                    while (oReader.Read())
                    {
                        LB.Items.Add(oReader.GetString(0));
                    }
                }
               while (oReader.NextResult());
                oReader.Close();
                oConnection.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("L'erreur suivante a été rencontrée :" + ex.Message);
            }
        }
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 13 déc. 2007 à 18:52
3
Merci
Salut,

Voire la documentation en ligne:
http://msdn2.microsoft.com/en-us/library/system.data.oledb.oledbdatareader.getstring.aspx

"No conversions are performed; therefore the data retrieved must already be a string.
Call IsDBNull to look for null values before calling this method."

<hr />
-My Blog-

Merci cs_Bidou 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de cs_Bidou
Meilleure réponse
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 15 déc. 2007 à 12:23
3
Merci
GetValue qui retourne un object ne pourrait-il pas faire l'affaire ?

<hr />
-My Blog-

Merci cs_Bidou 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de cs_Bidou
TheSaib 2369 Messages postés mardi 17 avril 2001Date d'inscription 26 décembre 2007 Dernière intervention - 13 déc. 2007 à 23:50
0
Merci
D'ailleurs au passage tu ne fermes pas tes connections et ne disposent pas tes objets, en cas d'echec ou pas.
Afin de garantir cette opération instancies tes objets connections et commande de la manière sivante :

using( OleDbConnection oConnection = new OleDbConnection(strConnexion))
{
                using (OleDbCommand oCommand = new OleDbCommand(strRequete, oConnection))
               {
               }
}

::|The S@ib|::
MVP C#.NET
Commenter la réponse de TheSaib
gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 14 déc. 2007 à 11:35
0
Merci
Merci Bidou


en effet j'avais des valeurs null ce qui me posait problème, ainsi j'ai pu répondre au problème

TheSaib, je prends en notes tes remarques afin d'améliorer mon code !!
Commenter la réponse de gabs77
gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 14 déc. 2007 à 11:40
0
Merci
En revache je ne parvien spas à afficher dans des labels certains champs de ma base de données comme les champs numérique de ma base de données ACCESS pourtant il ne sont pas vide
Commenter la réponse de gabs77
TheSaib 2369 Messages postés mardi 17 avril 2001Date d'inscription 26 décembre 2007 Dernière intervention - 14 déc. 2007 à 18:53
0
Merci
Une exception ... une erreur ....

::|The S@ib|::
MVP C#.NET
Commenter la réponse de TheSaib
gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 15 déc. 2007 à 09:44
0
Merci
il me m'était une erreur de cast aussi mais j'ai compris mon erreur
 je faisai
label1.Text = oReader.GetString(0)
or il fallait faire ainsi
label1.Text = string.Format( "{0}" , oReader.GetInt16(0))

Par contre, j'ai encore une autre question :
comment est ce que l'on peut faire un switch avec un equals() ?
car je veux faire une fonction qui a comme paramètre une List<Label> et une requeteSQL
et cette fonction affichera respectivement les champs dans les labels correspondants
champ1 => label1
champ2 => label2

donc j'ai fait le script suivant :

do 
   {
   while(oReader.Read())
      {
      int i =0;
      while (oReader.FieldCount() > i)
         {
         // je veux faire quelquechose qui ressemble à cela
          switch (oReader.GetFieldType.Equals(???) )
            {
            case (string) :   Tlabel[i].Text = oReader.GetString(i);
            case (Int16) :   Tlabel[i].Text = string.Format("{0}",oReader.GetInt16(i));
            ....
            default : 
            }
         i++;
         }
      }
   }
while(oReader.NextResult());
Commenter la réponse de gabs77
gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 15 déc. 2007 à 13:19
0
Merci
Effectiement Bidou, c'est bien plus simple ainsi !! Je ne sai pourquoi je sui parti compliqué
Commenter la réponse de gabs77
chakoor 1 Messages postés jeudi 20 janvier 2011Date d'inscription 17 mars 2011 Dernière intervention - 17 mars 2011 à 11:30
0
Merci
bonjour,
je débute en VB.NET et j'ai rencontré un problème auquel je ne parviens à comprendre quelle est-elle.
voici le code ci dessous et le message est le suivant : "le cast spécifié n'est pas valide"
Public dread As OleDbDataReader
Private Sub remplir5()
filxegrid.Clear()
filxegrid.Rows = 1
cd.CommandText = "select * from fiche;"
cd.Connection = st
dread = cd.ExecuteReader
filxegrid.FormatString = dread.GetName(0) & " " & vbTab & dread.GetName(1) & " " & vbTab & dread.GetName(2) & " " & vbTab & dread.GetName(3) & " " & vbTab & dread.GetName(4) & " " & vbTab & dread.GetName(5) & " " & vbTab & dread.GetName(6) & " " & vbTab & dread.GetName(7) & " " & vbTab & dread.GetName(8) & " " & vbTab & dread.GetName(9) & " " & vbTab & dread.GetName(10) & " " & vbTab & dread.GetName(11) & " " & vbTab & dread.GetName(12) & " " & vbTab & dread.GetName(13) & " " & vbTab & dread.GetName(14) & " " & vbTab & dread.GetName(15) & " " & vbTab & dread.GetName(16) & " "
While dread.Read
filxegrid.AddItem(dread.GetString(0) & vbTab & dread.GetString(1) & vbTab & dread.GetString(2) & vbTab & dread.GetString(3) & vbTab & dread.GetString(4) & vbTab & dread.GetBoolean(5) & vbTab & dread.GetString(6) & vbTab & dread.GetString(7) & vbTab & dread.GetString(8) & vbTab & dread.GetString(9) & vbTab & dread.GetString(10) & vbTab & dread.GetString(11) & vbTab & dread.GetString(12) & vbTab & dread.GetString(13) & vbTab & dread.GetString(14) & vbTab & dread.GetString(15) & vbTab & dread.GetString(16))
End While
dread.Close()
End Sub
Commenter la réponse de chakoor

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.