Problème avec SELECT MAX(...)

Résolu
dread_loque Messages postés 16 Date d'inscription mercredi 11 avril 2007 Statut Membre Dernière intervention 21 mai 2007 - 16 mai 2007 à 09:41
dread_loque Messages postés 16 Date d'inscription mercredi 11 avril 2007 Statut Membre Dernière intervention 21 mai 2007 - 16 mai 2007 à 10:44
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

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 mai 2007 à 10:40
tu peux aussi essayer :
Convert.ToInt32(myFrame.m_odbcReader[0])

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
3
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
16 mai 2007 à 09:51
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 mai 2007 à 09:55
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]
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 mai 2007 à 09:56
oops... pas "select count"... mais "select max"

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0

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

Posez votre question
dread_loque Messages postés 16 Date d'inscription mercredi 11 avril 2007 Statut Membre Dernière intervention 21 mai 2007
16 mai 2007 à 10:03
oui c'est un "select max", et SharpMao a raison mais je n'arrive pas à trouver ce que je pourrai utiliser...
0
dread_loque Messages postés 16 Date d'inscription mercredi 11 avril 2007 Statut Membre Dernière intervention 21 mai 2007
16 mai 2007 à 10:33
Petite précision : si j'enlève le MAX, ça fonctionne... Je n'y comprend plus rien, aider moi svp...
0
dread_loque Messages postés 16 Date d'inscription mercredi 11 avril 2007 Statut Membre Dernière intervention 21 mai 2007
16 mai 2007 à 10:44
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 ^^)...
0
Rejoignez-nous