Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/06/2011, 13h58   #1
Futur Membre du Club
 
Femme Audrey
Étudiant
Inscription : avril 2011
Messages : 71
Détails du profil
Informations personnelles :
Nom : Femme Audrey
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 71
Points : 17
Points : 17
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 :
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.
audrey1912 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 13h59   #2
Futur Membre du Club
 
Femme Audrey
Étudiant
Inscription : avril 2011
Messages : 71
Détails du profil
Informations personnelles :
Nom : Femme Audrey
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 71
Points : 17
Points : 17
Sachant que le navigateur me dit que l'erreur se situe vers le ligne suivante :

Code :
RsUser.open nouvel_agent, Conn
audrey1912 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 11h40   #3
Futur Membre du Club
 
Homme Stéphane Bouvet
Chef de projet MOA
Inscription : mai 2011
Messages : 40
Détails du profil
Informations personnelles :
Nom : Homme Stéphane Bouvet
Âge : 35
Localisation : France, Rhône (Rhône Alpes)

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

Informations forums :
Inscription : mai 2011
Messages : 40
Points : 15
Points : 15
Il me semble que la syntaxe pour un INSERT...VALUES serait plutôt :
Code :
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.
darKStein est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 18h36   #4
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
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 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
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.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2011, 11h21   #5
Futur Membre du Club
 
Femme Audrey
Étudiant
Inscription : avril 2011
Messages : 71
Détails du profil
Informations personnelles :
Nom : Femme Audrey
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 71
Points : 17
Points : 17
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!
audrey1912 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 09h00   #6
Futur Membre du Club
 
Femme Audrey
Étudiant
Inscription : avril 2011
Messages : 71
Détails du profil
Informations personnelles :
Nom : Femme Audrey
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 71
Points : 17
Points : 17
Bon ben au final j'ai trouvé plus simple et cela marche parfaitement, je le poste au cas ou.

Code :
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!!
audrey1912 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h02.


 
 
 
 
Partenaires

Hébergement Web