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 :

Type de données incompatible dans l'expression du critère [Débutant]


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 5
    Par défaut Type de données incompatible dans l'expression du critère
    Voilaa le code :

    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
     Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
            Credit1.Label30.Text = Label49.Text
            Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Hamza.Bens\Documents\Optique MAATA\Optique MAATA\Optique MAATA\bin\Debug\Optiquedtbase.mdb")
            Dim sqlcomm As New OleDbCommand
            Try
                con.Open()
                sqlcomm.Connection = con
                sqlcomm.CommandText = "SELECT Nom FROM Client where N°Dossier= '" & numero.Text & "'"
                TextBox2.Text = sqlcomm.ExecuteScalar("Nom")
                con.Close()
            Catch ex As Exception
                MsgBox("Erreur!! Database" & ex.Source & ": " & ex.Message, MsgBoxStyle.Exclamation)
            End Try
            Credit1.ShowDialog()
        End Sub

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Bonjour,
    La colonne N°Dossier (pas terrible comme nom pour une colonne de table) n'est-elle pas de type Number ? Dans la requête, elle est traitée comme une chaine de caractère....
    Quoi qu'il en soit, préférez les requêtes paramétrée !!! La concaténation SQL est source de dangers et d'erreurs !

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 5
    Par défaut
    J'ai changé. mais un autre probleme : la conversion de la chaîne nom en type 'integer' n'est pas valide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Credit1.Label30.Text = Label49.Text
            Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Hamza.Bens\Documents\Optique MAATA\Optique MAATA\Optique MAATA\bin\Debug\Optiquedtbase.mdb")
            Dim sqlcomm As New OleDbCommand
            Try
                con.Open()
                sqlcomm.Connection = con
                sqlcomm.CommandText = "SELECT Nom FROM Client where NDossier= '" & numero.Text & "'"
                TextBox2.Text = sqlcomm.ExecuteScalar("Nom")
                con.Close()
            Catch ex As Exception
                MsgBox("Erreur!! Database" & ex.Source & ": " & ex.Message, MsgBoxStyle.Exclamation)
            End Try
            Credit1.ShowDialog()
        End Sub

  4. #4
    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
    Bonjour,

    ebastien vous disait que le n° de dossier devait être surement numérique et qu'il n'y a donc pas besoin des apostrophes.
    Il faut aussi ajouter une validation de l'entrée si elle n'est pas numérique et passer par les requêtes paramétrées. Cela donne :
    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
     
            If not IsNumeric(numero.Text) then 
                    MsgBox("Le n° de dossier n'est pas numérique.")
                    Exit Sub
            End If
            Credit1.Label30.Text = Label49.Text
            Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Hamza.Bens\Documents\Optique MAATA\Optique MAATA\Optique MAATA\bin\Debug\Optiquedtbase.mdb")
            Dim sqlcomm As New OleDbCommand
            Try
                con.Open()
                sqlcomm.Connection = con
                sqlcomm.CommandText = "SELECT Nom FROM Client where NDossier = @numdos "
                sqlcomm.Parameters.Add("@numdos", SqlDbType.Int).Values = numero.Text
                TextBox2.Text = sqlcomm.ExecuteScalar()
                con.Close()
            Catch ex As Exception
                MsgBox("Erreur!! Database" & ex.Source & ": " & ex.Message, MsgBoxStyle.Exclamation)
            End Try
            Credit1.ShowDialog()
        End Sub

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 5
    Par défaut
    C'est fait !!

    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
     Credit1.Label30.Text = Label49.Text
            Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Hamza.Bens\Documents\Optique MAATA\Optique MAATA\Optique MAATA\bin\Debug\Optiquedtbase.mdb")
            Dim sqlcomm As New OleDbCommand
            Try
                con.Open()
                sqlcomm.Connection = con
                sqlcomm.CommandText = "SELECT Nom FROM Client where NDossier = @numdos "
                sqlcomm.Parameters.AddWithValue("@numdos", SqlDbType.Int).Value = numero.Text
                Credit1.TextBox2.Text = sqlcomm.ExecuteScalar()
                con.Close()
            Catch ex As Exception
                MsgBox("Erreur!! Database" & ex.Source & ": " & ex.Message, MsgBoxStyle.Exclamation)
            End Try
            Credit1.ShowDialog()
        End Sub

  6. #6
    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
    J'espère juste que vous avez compris où était vos erreurs. J'avais oublié de mettre un lien vers un tuto pour les requêtes paramétrées, prenez le temps de le lire pour mieux comprendre pourquoi et comment les utiliser : http://webman.developpez.com/article...rameter/vbnet/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête: type de donnée incompatible dans l'expression du critère
    Par abambad dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 31/10/2007, 15h48
  2. Réponses: 5
    Dernier message: 31/08/2007, 13h01
  3. Réponses: 8
    Dernier message: 20/06/2007, 14h38
  4. Réponses: 7
    Dernier message: 22/08/2006, 17h10
  5. Réponses: 3
    Dernier message: 22/05/2006, 19h23

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