Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pb requete UPDATE

2 réponses
Avatar
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

2 réponses

Avatar
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" a écrit dans le message de
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



Avatar
Jean Claude
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" <http://www.chez.com/scribe/> a écrit dans le message de news:

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" a écrit dans le message de
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