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 :

requet SQL sous vb.net


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 31
    Points
    31
    Par défaut requet SQL sous vb.net
    Bonjour tout le monde;
    quelqu'un peut me dire qu'est ce qui ne va pas dans ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            Nom.Text= "test"
            Date_.Text = Now.Date
            Mycommand.CommandText = "SELECT COUNT(*) FROM pointage where date_ = '" & Date_.Text & "' AND nom = '" & Nom.Text & "'"
            cnn.Open()
            Dim iResultat As Integer = Mycommand.ExecuteScalar()
            cnn.Close()
    le compilateur me souligne la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iResultat As Integer = Mycommand.ExecuteScalar()
    et le message d'erreur est "Type de données incompatible dans l'expression du critère."

  2. #2
    Membre averti
    Homme Profil pro
    Freelance
    Inscrit en
    Février 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 312
    Points : 390
    Points
    390
    Par défaut
    pourquoi utilise tu des ' dans tes requetes?
    par exemple ton date_ = '" j'ai l'impression qu'il y a une quote de trop
    après c'est peut-etre une facon différente de faire les requêtes

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    pour inserer des date il faut mettre la date entre des # si je ne me trompe pas

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 374
    Points : 451
    Points
    451
    Par défaut
    Bonjour,
    Le plus simple pour trouver une erreur sql est de récupérer la requête sql et de la tester dans un analyseur sql et d'utiliser convert ou cast pour formater les dates.
    Dans ton exemple now().date retourne 05/28/2008.
    en général dans sqlserver(sans utiliser de conversion) la date est sous un format jj/mm/aaaa. ou mm/jj/aaaa dans sybase.
    Bon boulot Jean

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par JPelli Voir le message
    Bonjour,
    Le plus simple pour trouver une erreur sql est de récupérer la requête sql et de la tester dans un analyseur sql et d'utiliser convert ou cast pour formater les dates.
    Dans ton exemple now().date retourne 05/28/2008.
    en général dans sqlserver(sans utiliser de conversion) la date est sous un format jj/mm/aaaa. ou mm/jj/aaaa dans sybase.
    Bon boulot Jean
    oui j'ai bien verifié, date_.text est en format 28/05/2008 et dans ma base access c'est aussi la bonne format....

    pour inserer des date il faut mettre la date entre des # si je ne me trompe pas
    Peut etre tu as raison, je sais pas Help

  6. #6
    Membre averti
    Homme Profil pro
    Freelance
    Inscrit en
    Février 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 312
    Points : 390
    Points
    390
    Par défaut
    cette requete la me semble mieux
    Mycommand.CommandText = "SELECT COUNT(*) FROM pointage where date_ = #" & Date_.Text & "# AND nom = " & chr(34) & Nom.Text & chr(34) & ";"
    je ne sais toujours pas pourquoi tu mettait des quotes dans ta requête!
    quelle sgbd utilise tu?

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par bobby51 Voir le message
    cette requete la me semble mieux
    Mycommand.CommandText = "SELECT COUNT(*) FROM pointage where date_ = #" & Date_.Text & "# AND nom = " & chr(34) & Nom.Text & chr(34) & ";"
    je ne sais toujours pas pourquoi tu mettait des quotes dans ta requête!
    quelle sgbd utilise tu?
    ah wé ca marche; merci beaucoup. Parcontre, c'est quoi ca: chr(34)

    je ne sais toujours pas pourquoi tu mettait des quotes dans ta requête!
    Moi non plus, je ne sais pas c'est comme ca qu'on fait en vb6 je crois.

    merci

  8. #8
    Membre averti
    Homme Profil pro
    Freelance
    Inscrit en
    Février 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 312
    Points : 390
    Points
    390
    Par défaut
    le chr(34) est le code ASCII du "
    en effet tu demande pour ton nom de comparer a une chaine de caractère, donc quelque chose entre guillemet, or si tu met des guillemets ils vont etre interprété différemment,ils vont se méler avec les guillemet utilisé pour la separation entre les variables et les chaines de caractère , le code ASCII permet de passer outre cet inconvénient

  9. #9
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Le mieux est quand même d'utiliser des paramètres de requête, ca permet d'éviter ce genre d'erreur de concatenation et niveau sécurité c'est beaucou mieux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      Nom.Text= "test"
    Date_.Text = Now.Date
    Mycommand.CommandText = "SELECT COUNT(*) FROM pointage where date_ = @Date_ AND nom = @Nom"
     Mycommand.Parameters.AddWithValue("@Date_", CDate(Date_.Text))
     Mycommand.Parameters.AddWithValue("@Nom", CStr(Nom.Text))
    Mycommand.Connection = cnn
     cnn.Open()
     Dim iResultat As Integer = CInt(Mycommand.ExecuteScalar())
     cnn.Close()
    Tu dois transtyper le résultat de ton executescalar pour l'affecter a une variable, je pense que ton erreur vient de là.

  10. #10
    Membre averti
    Homme Profil pro
    Freelance
    Inscrit en
    Février 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 312
    Points : 390
    Points
    390
    Par défaut
    ah je ne connai pas ce type de requete va falloir que j'approfondise ça

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

Discussions similaires

  1. Requetes sql sous vb.net
    Par abdelghani666 dans le forum VB.NET
    Réponses: 3
    Dernier message: 13/06/2012, 12h37
  2. division dans une requete sql sous asp.net
    Par nlm_look dans le forum ASP.NET
    Réponses: 3
    Dernier message: 28/07/2010, 11h05
  3. [sql]Probleme de count dans une requete sql (sous access)
    Par castelligreg dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 14/04/2006, 16h06
  4. Problème avec une requete SQL sous access
    Par Luther13 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 14/12/2005, 10h39
  5. Optimiser une Requetes SQL sous ASP
    Par NeHuS dans le forum ASP
    Réponses: 8
    Dernier message: 18/04/2005, 16h26

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