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

Développement SQL Server Discussion :

Microsoft SQL Native Client erreur '80040e14'


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 103
    Points : 59
    Points
    59
    Par défaut Microsoft SQL Native Client erreur '80040e14'
    Bonjour,

    voilà mon problème,

    Je dois faire une requête SQL en VB pour aller chercher des données dans un formulaire pour la création d'un agent. Et le navigateur m'affiche ce message :
    Microsoft SQL Native Client erreur '80040e14'
    Syntaxe incorrecte vers 'agent'

    Voici mon 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
    16
    17
    18
    19
    20
    21
    22
    <%
    Dim app_name, app_firstname, app_id_geode, nouvel_agent
     
    	app_id_geode = Request.QueryString("id_geode")
     
    	Dim Conn, RsUser
    	Set Conn = Server.CreateObject("ADODB.Connection")
    	Set RsUser = CreateObject("ADODB.Recordset")
    	verif_connexion bdd_sql, Conn
     
    	nouvel_agent = "INSERT INTO agent(matricule, id_geode, civilite, nom, prenom) " _
    				 + "VALUES agent.matricule='"& id_rh_agent_creation  &"', agent.id_geode='"& id_rh_agent_creation  &"', agent.civilite='"& civilite_agent_creation  &"', " _
    				 + "agent.nom='"& nom_agent_creation  &"', agent.prenom='"& prenom_agent_creation  &"' " 
     
    	RsUser.open nouvel_agent, Conn
     
    		id_rh_agent_creation 			= Request.Form ("document.frm_agents_creation.txtBxIdRh")
    		civilite_agent_creation  		= Request.Form ("document.frm_agents_creation.txtBxCivilite")
    		nom_agent_creation  			= Request.Form ("document.frm_agents_creation.txtBxNom")
    		prenom_agent_creation 			= Request.Form ("document.frm_agents_creation.txtBxPrenom")
     
    %>
    Toutes remarques, tout conseils... seront là bienvenue.

    Merci d'avance.

  2. #2
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 103
    Points : 59
    Points
    59
    Par défaut
    Sachant que le navigateur me dit que l'erreur se situe vers le ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RsUser.open nouvel_agent, Conn

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mai 2011
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    Il me semble que la syntaxe pour un INSERT...VALUES serait plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    nouvel_agent = "INSERT INTO agent(matricule, id_geode, civilite, nom, prenom) " _
        & "VALUES ('" & id_rh_agent_creation & "', '" & id_rh_agent_creation & "', '" _
        & civilite_agent_creation & "', '" & nom_agent_creation & "', '" & prenom_agent_creation &"') "
    Après, attention si nom_agent_creation ou prenom_agent_creation contiennent des apostrophes, cela peut poser problème, penser à les doubler.

  4. #4
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    nouvel_agent = "INSERT INTO agent(matricule, id_geode, civilite, nom, prenom) " _
    & "VALUES ('" & id_rh_agent_creation & "', '" & id_rh_agent_creation & "', '" _
    & civilite_agent_creation & "', '" & nom_agent_creation & "', '" & prenom_agent_creation &"') "
    Attention, cette manière de faire (création dynamique de requête à partir de données saisies par l'utilisateur) vous expose aux risques d'attaque par injection SQL.

    Pensez à remplacer les parties dynamiques par des paramètres.

    Le mieux étant de passer par une procédure stockée...
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 103
    Points : 59
    Points
    59
    Par défaut
    Bonjour,

    Je voudrais répondre à iberserk en premier. En effet, je sais que la création dynamique de requête à partir de données saisies par l'utilisateur n'est pas l'idéal. Je le fait comme cela dans un premier temps pour un essai entre guillemets. Dans un second temps, je passerai par une procédure stockée qui fera cet insert.

    Pour répondre à darKStein, merci, en effet j'ai un petit souci de parenthèses et il y a pleins de choses en trop, je me demande comment je ne m'en suis pas aperçue plutôt... En ce qui concerne les variables en questions, elles ne peuvent pas contenir d'apostrophe, donc il n'y a pas de souci.

    Merci à vous deux!

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 103
    Points : 59
    Points
    59
    Par défaut
    Bon ben au final j'ai trouvé plus simple et cela marche parfaitement, je le poste au cas ou.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim Conn, RsUser
    Set Conn = Server.CreateObject("ADODB.Connection")
    Set RsUser = CreateObject("ADODB.Recordset")
    verif_connexion bdd_sql, Conn
     
    nouvel_agent = "INSERT INTO agent(id_geode, civilite, nom, prenom) " _
    			+ "VALUES ('"& Request("txtBxIdRh") &"', " _
    			+ " '"& Request("txtBxCivilite") &"', " _
    			+ " '"& Request("txtBxNom") &"', " _
    			+ " '"& Request("txtBxPrenom") &"', 	"
     
    RsUser.open nouvel_agent, Conn
    Encore merci à vous deux!!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/05/2009, 15h34
  2. Erreur SQL NAtive Client
    Par mazen_bn dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 13/09/2008, 00h54
  3. Microsoft SQL Native Client error '80040e38'
    Par Tragnee dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/11/2007, 20h39
  4. Réponses: 4
    Dernier message: 05/05/2006, 15h45

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