IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

echec de la conversion de paramètre d'un string en int32


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Par défaut echec de la conversion de paramètre d'un string en int32
    SVP Aidez moi je suis fatigué de chercher et ce depuis 3 semaines.Quand je cique sur le bouton Ajouter j'ai l'erreur suivante:
    echec de la conversion de paramètre d'un string en int32
    Voici le code de mon Bouton Ajouter. Je vs présente tout le code.
    Excusez moi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    Dim maConnexionSQLsrv As OleDbConnection
            Dim myCommand As OleDbCommand
            Dim maRequete, ConnexionSQL As String
     
            'Récupération de la chaine de connexion au serveur de base de données
            ConnexionSQL = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=..\Etablissements.accdb"
            maConnexionSQLsrv = New OleDbConnection(ConnexionSQL)
     
            'Requete mise a jour de la table client
            maRequete = "INSERT INTO [Etudiants] ( [Telephone_personnel],[Telephone_professionnel],[Telephone_mobile],[Page_Web],[Numero_telecopie],[NumInscription],[Telephone_du_contact_urgences1],[Telephone_du_contact_urgences2],[Tel_medecin],[Adresse_Etudiant],[nom],[Prenom],[Lieu_Naissance],[Ville],[Code_Postal],[Departement],[Remarques],[IDEtudiant],[Date_Inscription],[contact_urgence],[Relation_urgences],[Nom_medecin],[Allergies],[Medicaments],[Etablissements],[NumExo],[Specialite_Etudiant],[niveau_Etudiant],[Classe_Etudiant],[Pays_Région]) VALUES (@Telephone_personnel,@Telephone_professionnel,@Telephone_mobile,@Page_Web,@Numero_telecopie,@NumInscription,@Telephone_du_contact_urgences1,@Telephone_du_contact_urgences2,@Tel_medecin,@Adresse_Etudiant,@nom,@Prenom,@Lieu_Naissance,@Ville,@Code_Postal,@Departement,@Remarques,@IDEtudiant,@Date_Inscription,@contact_urgence,@Relation_urgences,@Nom_medecin,@Allergies,@Medicaments,@Etablissements,@NumExo,@Specialite_Etudiant,@niveau_Etudiant,@Classe_Etudiant,@Pays_Région)"
     
            'Création de la commande SQL
            myCommand = New OleDbCommand(maRequete, maConnexionSQLsrv)
     
            'Création et décalartion des paramètres
            With myCommand.Parameters
                .Add(New OleDbParameter("@Telephone_personnel", OleDbType.Integer, 16))
                .Add(New OleDbParameter("@Telephone_professionnel", OleDbType.Integer, 16))
                .Add(New OleDbParameter("@Telephone_mobile", OleDbType.Integer, 16))
                .Add(New OleDbParameter("@Page_Web", OleDbType.VarChar, 50))
                .Add(New OleDbParameter("@Numero_telecopie", OleDbType.Integer, 16))
                .Add(New OleDbParameter("@NumInscription", OleDbType.Integer, 10))
                .Add(New OleDbParameter("@Telephone_du_contact_urgences1", OleDbType.Integer, 16))
                .Add(New OleDbParameter("@Telephone_du_contact_urgences2", OleDbType.Integer, 16))
                .Add(New OleDbParameter("@Tel_medecin", OleDbType.Integer, 16))
                .Add(New OleDbParameter("@Adresse_Etudiant", OleDbType.VarChar, 35))
                .Add(New OleDbParameter("@Nom", OleDbType.VarChar, 25))
                .Add(New OleDbParameter("@Prenom", OleDbType.VarChar, 50))
                .Add(New OleDbParameter("@Lieu_Naissance", OleDbType.VarChar, 35))
                .Add(New OleDbParameter("@Ville", OleDbType.VarChar, 35))
                .Add(New OleDbParameter("@Code_Postal", OleDbType.VarChar, 35))
                .Add(New OleDbParameter("@Departement", OleDbType.VarChar, 35))
                .Add(New OleDbParameter("@Remarques", OleDbType.VarChar, 150))
                .Add(New OleDbParameter("@IDEtudiant", OleDbType.VarChar, 10))
                .Add(New OleDbParameter("@Date_Inscription", OleDbType.Date))
     
                .Add(New OleDbParameter("@contact_urgence", OleDbType.Integer, 16))
                .Add(New OleDbParameter("@Relation_urgences", OleDbType.VarChar, 25))
                .Add(New OleDbParameter("@Nom_medecin", OleDbType.VarChar, 35))
                .Add(New OleDbParameter("@Allergies", OleDbType.VarChar, 35))
                .Add(New OleDbParameter("@Medicaments", OleDbType.VarChar, 35))
                .Add(New OleDbParameter("@Etablissements", OleDbType.Integer, 3))
                .Add(New OleDbParameter("@NumExo", OleDbType.Integer, 2))
                .Add(New OleDbParameter("@Specialite_Etudiant", OleDbType.VarChar, 25))
                .Add(New OleDbParameter("@niveau_Etudiant", OleDbType.VarChar, 25))
                .Add(New OleDbParameter("@Classe_Etudiant", OleDbType.VarChar, 10))
                .Add(New OleDbParameter("@Pays_Région", OleDbType.VarChar, 25))
     
            End With
     
            'Attribution des valeurs aux paramètres
     
            With myCommand
     
                .Parameters("@Telephone_personnel").Value = Val(TelPersonnel.Text)
                .Parameters("@Telephone_personnel").Value = Val(TelPersonnel.Text)
                .Parameters("@Telephone_professionnel").Value = Val(TelProfessionnel.Text)
                .Parameters("@Telephone_mobile").Value = Val(TelMobile.Text)
                .Parameters("@Page_Web").Value = Mail.Text
                .Parameters("@Numero_telecopie").Value = Val(Telecopie.Text)
                .Parameters("@NumInscription").Value = Val(NumInscription.Text)
                .Parameters("@Telephone_du_contact_urgences1").Value = Val(TelUrgence1.Text)
                .Parameters("@Telephone_du_contact_urgences2").Value = Val(TelUrgence2.Text)
                .Parameters("@Tel_medecin").Value = Val(TelMedecin.Text)
                .Parameters("@Adresse_Etudiant").Value = Adresse.Text
                .Parameters("@Nom").Value = Nom.Text
                .Parameters("@Prenom").Value = Prenoms.Text
                .Parameters("@Lieu_Naissance").Value = LieuNais.Text
                .Parameters("@Ville").Value = Ville.Text
                .Parameters("@Code_Postal").Value = CP.Text
                .Parameters("@Departement").Value = Departement.Text
                .Parameters("@Remarques").Value = Remarque.Text
                .Parameters("@IDEtudiant").Value = Val(IDEtudiant.Text)
                .Parameters("@Date_Inscription").Value = CDate(Date_Inscription.Text)
     
                .Parameters("@contact_urgence").Value = Val(ContactUrgence.Text)
                .Parameters("@Relation_urgences").Value = RelationUrgence.Text
                .Parameters("@Nom_medecin").Value = NomMedecin.Text
                .Parameters("@Allergies").Value = Allergies.Text
                .Parameters("@Medicaments").Value = Medicaments.Text
                .Parameters("@Etablissements").Value = ComBoBoxEtab.Text
                .Parameters("@NumExo").Value = ComboBoxExo.Text
                .Parameters("@Specialite_Etudiant").Value = ComboBoxSpecialite.Text
                .Parameters("@niveau_Etudiant").Value = ComboBoxNiveau.Text
                .Parameters("@Classe_Etudiant").Value = ComboBoxClasse.Text
                .Parameters("@Pays_Région").Value = ComboBoxPays.Text
     
     
            End With
     
            Try
     
                'Execution de la requête
                myCommand.Connection.Open()
                myCommand.ExecuteNonQuery()
                myCommand.Connection.Close()
     
     
                MsgBox("Inscription effectuée!", MsgBoxStyle.Information)
            Catch ex As Exception
                MsgBox(ex.Message)
     
     
     
            End Try

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    il faudrait nous dire à quelle ligne ca plante
    m'enfin ca a l'air simple comme soucis

    et retire moi c'est Val() de partout, c'est pas très .net

    il est aussi possible de gagner un peu de place avec


    mycommand.parameters.Add("@parametre",type).value = cint(textbox.text)




    enfin ton erreur vient du fait qu'un textbox ne contient pas un nombre
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Par défaut
    Lorsque je remplace val par cInt j'ai le message d'erreur dès la première ligne.


    La conversion de la chaîne "" en type 'Integer' n'est pas valide. je crois que c'est parceque mon telPersonnel.text est vide. Comment faire pour resoudre les cas ou un champ est vide. J'ai également un problème avec HeureInscription.text qui contient l'heure d'inscription et DateInscription qui contient la date d'inscription

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     With myCommand
     
                .Parameters("@Telephone_personnel").Value = CInt(TelPersonnel.Text)
                .Parameters("@Dateinscription").Value = CDate(Dateinscription.Text)
                .Parameters("@HeureInscription").Value = CDate(HeureInscription.Text)

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 103
    Par défaut
    Citation Envoyé par sycoulibaly Voir le message
    Lorsque je remplace val par cInt j'ai le message d'erreur dès la première ligne.


    La conversion de la chaîne "" en type 'Integer' n'est pas valide. je crois que c'est parceque mon telPersonnel.text est vide. Comment faire pour resoudre les cas ou un champ est vide.
    Ben voilà tu as la réponse!
    Chaîne vide ne peut être convertie en type integer.

    Pour ça tu fais un traitement de la saisie utilisateur, si c'est vide, tu affiches soit un message d'erreur, soit tu remplaces la chaîne vide par zéro.
    Ou autre solution si le champ n'est pas obligatoire, alors lorsqu'il est null tu passes dans une autre requête qui l'initialise à null dans ta BDD.

  5. #5
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Il te suffit de contrôler ce que contien ton textBox...
    genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If TelPersonnel.Text.Equals("") Then
    .Parameters("@Telephone_personnel").Value = 0
    Else
    .Parameters("@Telephone_personnel").Value = CInt(TelPersonnel.Text)  
    End If
    tu peux (doit) aussi contrôler que ce que l'utilisateur rentre est bien du numérique...
    genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Private Sub TelPersonnel_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TelPersonnel.KeyPress
            If Not Char.IsDigit(e.KeyChar) And Not Char.IsControl(e.KeyChar) Then
                'Tous les caractères non numériques ne sont pas traités sur le TextBox.
                e.Handled = True
            End If
        End Sub

  6. #6
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Par défaut
    J'ai fais exactement ce que vous avez dit mais j'ai le message suivant:

    Echec de la conversion de la valeuur de paramètre d'un String en Int 32

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    With myCommand
                If TelPersonnel.Text.Equals("") Then
                    .Parameters("@Telephone_personnel").Value = 0
                Else
                    .Parameters("@Telephone_personnel").Value = CInt(TelPersonnel.Text)
                End If
     
                If TelProfessionnel.Text.Equals("") Then
                    .Parameters("@Telephone_professionnel").Value = 0
                Else
                    .Parameters("@Telephone_professionnel").Value = CInt(TelProfessionnel.Text)
                End If
                If TelMobile.Text.Equals("") Then
                    .Parameters("@Telephone_mobile").Value = 0
                Else
                    .Parameters("@Telephone_mobile").Value = CInt(TelMobile.Text)
                End If

  7. #7
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Regarde où l'erreur est déclenchée, met un point d'arrêt et regarde la valeur qu'il y a dans la propriété .text de tes textbox...

    EDIt : juste par hasard, dans les textbox de numéro de tel, tu ne rentrerais pas des / ou . ?

    REEDIT : au début de ta méthode tu devrais absolument tester si tes textbox qui vont être converti en int contienne bien que du numérique
    genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Not IsNumeric(TextBox1.Text) Or Not IsNumeric(TextBox2.Text) Then
                    MsgBox("Veuillez vérifier que...")
                    Exit Sub
                End If

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/02/2010, 13h44
  2. Probléme conversion de paramétre
    Par bryce426 dans le forum C++
    Réponses: 4
    Dernier message: 08/01/2008, 13h58
  3. conversion de paramètres d'un plan
    Par bernard6 dans le forum Mathématiques
    Réponses: 3
    Dernier message: 23/07/2007, 15h03
  4. Réponses: 4
    Dernier message: 18/06/2007, 13h54
  5. Réponses: 3
    Dernier message: 04/06/2007, 09h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo