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 :

Problème de requète INSERT INTO avec access


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Points : 23
    Points
    23
    Par défaut Problème de requète INSERT INTO avec access
    Bonsoir,

    Mon soucis est le suivant, lorsque je passe ma requète insert into, arrivé au ExecuteNonQuery(), un message d'erreur apparaît qui m'indique :

    "Data type mismatch in criteria expression "
    mon bout de code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Connection = Proprietes.Recuperer_chaine_de_connection()
    ConnectionOLE.ConnectionString = Connection
    ConnectionOLE.Open()
    requete = "INSERT into CONSULTATIONS(CONSULTATION_EFFECTIVE,NOM_PATIENT,PRENOM_PATIENT,DATE_DE_CONSULTATION,HEURE_DE_CONSULTATION)" & _
                            " Values('" & boul & "','" & nom.Text & "','" & prenom.Text & "','" & CDate(date_rdv) & "'," & total & ")"
    myCommand = New OleDb.OleDbCommand(requete, ConnectionOLE)
    myCommand.ExecuteNonQuery()
    ConnectionOLE.Close()
    boul est un booleen, total est un integer

    mes champs :

    CONSULTATION_EFFECTIVE booleen
    NOM_PATIENT,PRENOM_PATIENT text
    DATE_DE_CONSULTATION date
    HEURE_DE_CONSULTATION numerique



    Voilà, je retourne taper ma tête contre le mur, merci à vous si vous avez une réponse

    Bonne soirée

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Il me semble que les doubles quotes entourant les values ne doivent être insérées que pour des Strings.

    Cela dit, des requêtes paramétrées auraient évité ce problème.
    Voir (c'est aussi valable avec oledbcommand) : http://faqcsharp.developpez.com/?pag...onet_execparam

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Points : 23
    Points
    23
    Par défaut
    Merci Graffito

    J'ai lu à droit à gauche que les dates se passaient avec des #, les strings avec des doulbes quotes et les types numériques avec rien du tout.
    Je vais essayer de trouver tout de même, sinon je basculerai vers les requète paramétrées.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Points : 1 111
    Points
    1 111
    Par défaut
    La solution pour debugger c'est de copier le texte de la requete (en execution pas à pas, tu récuperes ta chaine de caractere) puis de lancer la requete à la main dans un lanceur de requete. Comme ca tu verras exactement ce qui ne va pas dans la requete, mais à priori la date au moins n'est pas bonne. Un type VB est différent d'un type SQL.

    De plus quand tu devrais traiter tes variables avant de les envoyer dans ta requete (enlever les apostrophes dans le texte par exemple).

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Points : 390
    Points
    390
    Par défaut
    Bonjour

    requete = "INSERT into CONSULTATIONS(CONSULTATION_EFFECTIVE,NOM_PATIENT,PRENOM_PATIENT,DATE_DE_CONSULTATION,HEURE_DE_CONSULTATION)" & _
    " Values('" & boul & "','" & nom.Text & "','" & prenom.Text & "','" & CDate(date_rdv) & "'," & total & ")"
    En fait il faut pour les chaînes de caractères sous access:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    " Values(""" & boul & ""","""& nom.Text & """,""" & prenom.Text & """,'"
    ET pour la date #madate#

    A+

  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 : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Vous pourriez oublier tout ces problèmes de requête si vous utilisiez les commandes paramétrées au lieu de la concaténation de string.
    voir : http://msdn.microsoft.com/fr-fr/library/yy6y35y8.aspx
    Citation Envoyé par MSDN
    Cela vous permet de vous protéger des attaques « par injection de code SQL », dans lesquelles un attaquant insère une commande qui compromet la sécurité sur le serveur dans une instruction SQL.

    Les commandes paramétrées améliorent également les performances d'exécution des requêtes car elles permettent au serveur de base de données de faire correspondre la commande entrante avec un plan de requête mis en cache approprié.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Points : 390
    Points
    390
    Par défaut
    Bonjour,

    Oui les requêtes paramétrées, mais une architecture client serveur avec Access ... hum

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Points : 23
    Points
    23
    Par défaut
    c'est bon, j'ai tenu compte de vos modifs, même si je pense que je vais passer par du paramétré à l'avenir

    voilà le code qui a fonctionné

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    requete = "INSERT into CONSULTATIONS (CONSULTATION_EFFECTIVE,NOM_PATIENT,PRENOM_PATIENT,DATE_DE_CONSULTATION,HEURE_DE_CONSULTATION)" & _
                            " Values(""" & effective & """,""" & nom.Text & """,""" & prenom.Text & """,""" & date_rdv & """," & total & ")"

    Bonne journée et merci à vous !

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

Discussions similaires

  1. [AC-2007] Problème de requête "insert into" avec du VBA
    Par Maegane dans le forum VBA Access
    Réponses: 8
    Dernier message: 25/07/2013, 14h24
  2. Problème pour requête SQL LIKE avec ACCESS
    Par ar.aziz dans le forum VB.NET
    Réponses: 2
    Dernier message: 02/07/2008, 10h53
  3. Problème de requête INSERT INTO
    Par coco38 dans le forum Oracle
    Réponses: 9
    Dernier message: 27/03/2008, 15h35
  4. Problème Syntaxe requête SQL LIKE avec ACCESS
    Par Arnofish dans le forum Accès aux données
    Réponses: 3
    Dernier message: 22/12/2007, 11h57
  5. Procédure Form_Open,problème de requête Insert into
    Par Averroes dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/08/2007, 21h49

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