Problème avec SELECT MAX(...) [Résolu]

Signaler
Messages postés
16
Date d'inscription
mercredi 11 avril 2007
Statut
Membre
Dernière intervention
21 mai 2007
-
Messages postés
16
Date d'inscription
mercredi 11 avril 2007
Statut
Membre
Dernière intervention
21 mai 2007
-
Bonjour tout le monde,

Voilà, je voulais savoir si j'utilise bien la bonne syntaxe car, quand j'utilise ce code :

                    // Start a local transaction
                    myFrame.m_odbcTrans = myFrame.m_odbcConnection.BeginTransaction();
                    // Assign transaction object for a pending local transaction
                    myFrame.m_odbcCommand.Transaction = myFrame.m_odbcTrans;

                    //Requete de mise à jour des données dans la base
                    m_sSQLRequest = "SELECT max(NumOrdreVariable) "+
                                    "FROM Variables";
                    this.myFrame.m_odbcCommand.CommandText = m_sSQLRequest;
                    this.myFrame.m_odbcCommand.Connection = myFrame.m_odbcConnection;
                    MessageBox.Show(m_sSQLRequest);

                    //Execution du reader
                    myFrame.m_odbcReader=myFrame.m_odbcCommand.ExecuteReader();
                    if(myFrame.m_odbcReader.HasRows)
                    {
                        myFrame.m_odbcReader.Read();
                        numMax = myFrame.m_odbcReader.GetInt32(0) + 1;
                    }
                    myFrame.m_odbcReader.Close();

Ca génére cette erreur :

    Une exception non gérée du type 'System.InvalidCastException' s'est produite dans                         system.windows.forms.dll

    Informations supplémentaires : Le cast spécifié n'est pas valide.

Je ne comprend pas... J'ai l'impression qu'il confond mon string avec du code...

Merci d'avance

7 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
tu peux aussi essayer :
Convert.ToInt32(myFrame.m_odbcReader[0])

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
61
Hello,

A mon avis, c'est la ligne
numMax = myFrame.m_odbcReader.GetInt32(0) + 1;
qui pose problème.

Es-tu bien sûr que NumOrdreVariable est de type Int32 ?

Amicalement, SharpMao
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
2 remarques :
- Pas la peine d'ouvrir une transaction pour faire un select count.
- Pour un select count, on utilise ExecuteScalar à la place de ExecuteReader.

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
oops... pas "select count"... mais "select max"

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
16
Date d'inscription
mercredi 11 avril 2007
Statut
Membre
Dernière intervention
21 mai 2007

oui c'est un "select max", et SharpMao a raison mais je n'arrive pas à trouver ce que je pourrai utiliser...
Messages postés
16
Date d'inscription
mercredi 11 avril 2007
Statut
Membre
Dernière intervention
21 mai 2007

Petite précision : si j'enlève le MAX, ça fonctionne... Je n'y comprend plus rien, aider moi svp...
Messages postés
16
Date d'inscription
mercredi 11 avril 2007
Statut
Membre
Dernière intervention
21 mai 2007

Bon , je ne comprend pas comment, mais ça marche ^^

Je vous remercie beaucoup,

J'espere pas à bientôt (sinon ça veut dire que j'ai des problèmes ^^)...