Pb requete UPDATE

Le
Jean Claude
Bonjour

Dans une requete Update sur une table Access, j'ai une condition :
Where activite='" & session("activite") & "'"

si session("activite") est égale à : l'inventaire j'ai un beug avec erreur
de syntaxte dans update

Pouvez-vous m'indiquer la correction du code
merci pour vos réponses
Cordialement
JClaude
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrice
Le #12214021
En cas d'erreur dans une phrase SQL, il suffit de l'afficher et l'erreur
devient souvent évidente. Il est également préférable de toujours donner le
message d'erreur exact pour de l'aide sur une erreur.

Ici cela donnera :

WHERE activite='l'inventaire'

ce que donne activite='l' et SQL ne soit pas quoi faire de inventaire' qui
génère une erreur de syntaxe.

La solution la plus simple est de doubler le guillemet simple dans la chaine
(ce qui donnera activite='l''inventaire', '' à l'intérieur de la chaine sera
interprété comme ' à l'intérieur d'une chaîne par Access).

Il serait recommandé de toujours utiliser des paramètres pour fournir les
données plutôt que de construire de A à Z la chaine SQL ce qui évite :
- ce problème
- les problèmes similaires qui pourrait survenir également avec les dates et
les nombres décimaux si utilisés sans précautions (par exemple SET
Montant=2,56 au lieu de Montant=2.56)
- les attaques SQL par injection

--
Patrice

"Jean Claude" news: 47ac15e0$0$891$
Bonjour

Dans une requete Update sur une table Access, j'ai une condition :
Where activite='" & session("activite") & "'"

si session("activite") est égale à : l'inventaire j'ai un beug avec erreur
de syntaxte dans update

Pouvez-vous m'indiquer la correction du code
merci pour vos réponses
Cordialement
JClaude



Jean Claude
Le #12214001
Bonjour Patrice, merci de me répondre

En fait je veux mettre à jour la table Session("TableATT")

à partir d'une table CodesAct dont j'extrais :

Session("Code") et Session("Secteur")



je fais une boucle sur la table Session("TableATT"), j'extrais le premier
enregistrement et je me connecte à connectTable



Voici mon code : (je passe les objets connection)



Sub connectTable()

Dim DSPageDataVoir As New DataSet

'connection a la base de données

Dim Lactivit As String = ""

Dim Lactivite = Session("Activite")

'objet DataAdapter

'Controle si l'activité existe

Dim DBCommandVoir As OleDbDataAdapter

DBCommandVoir = New OleDbDataAdapter _

("Select * From " & Session("TableATT") & " where activite='" _

& [Lactivite] & "'", DBConnMaj)

'stockage du résultat de la requete dans un DataSet

DBCommandVoir.Fill(DSPageDataVoir, "LeSecteur")

Dim NBEnr As Integer = 0

NBEnr = DSPageDataVoir.Tables("LeSecteur").Rows.Count



'tant que NBEnr>0 je modifie les enregistrements

If NBEnr > 0 Then

Dim DBUpdate As New OleDbCommand

DBUpdate.CommandText = "Update " & Session("TableATT") & " set "
_

& "Code='" _

& Session("Code") & "', " _

& "Secteur='" _

& Session("Secteur") & "', " _

& "Where activite='" & [Lactivite] & "'"

DBUpdate.Connection = DBConnMaj

DBUpdate.Connection.Open()

DBUpdate.ExecuteNonQuery()

DBConnMaj.Close()

End If

End Sub

Peux-tu me donner les corrections ?



Encore merci pour ton aide



Jean Claude



"Patrice"
En cas d'erreur dans une phrase SQL, il suffit de l'afficher et l'erreur
devient souvent évidente. Il est également préférable de toujours donner
le message d'erreur exact pour de l'aide sur une erreur.

Ici cela donnera :

WHERE activite='l'inventaire'

ce que donne activite='l' et SQL ne soit pas quoi faire de inventaire' qui
génère une erreur de syntaxe.

La solution la plus simple est de doubler le guillemet simple dans la
chaine (ce qui donnera activite='l''inventaire', '' à l'intérieur de la
chaine sera interprété comme ' à l'intérieur d'une chaîne par Access).

Il serait recommandé de toujours utiliser des paramètres pour fournir les
données plutôt que de construire de A à Z la chaine SQL ce qui évite :
- ce problème
- les problèmes similaires qui pourrait survenir également avec les dates
et les nombres décimaux si utilisés sans précautions (par exemple SET
Montant=2,56 au lieu de Montant=2.56)
- les attaques SQL par injection

--
Patrice

"Jean Claude" news: 47ac15e0$0$891$
Bonjour

Dans une requete Update sur une table Access, j'ai une condition :
Where activite='" & session("activite") & "'"

si session("activite") est égale à : l'inventaire j'ai un beug avec
erreur de syntaxte dans update

Pouvez-vous m'indiquer la correction du code
merci pour vos réponses
Cordialement
JClaude







Publicité
Poster une réponse
Anonyme