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

Problème Requète Update en VB.Net

9 réponses
Avatar
the viper
Bonjour

J'ai une page de profil qui récupère les infos de l'utilisateur à partir
d'une table access. Ces infos sont affichés dans des textbox. Quand je
modifie le contenu d'un ou plusieurs textbox ma requète ne produit aucun
effet dans ma table.

Voila le code
Private Sub btn_modif_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_modif.Click
Dim Commande As New OleDbCommand
Dim Connexion As New OleDbConnection

'Définition des paramètres de connexion
Commande.Connection = Connexion
Commande.CommandType = CommandType.Text
Commande.CommandText = "UPDATE [tbl_users] SET [Password]='" &
txt_old_mdp.Text & "',[Nom]='" & txt_nom.Text & "',[Prenom]='" &
txt_prenom.Text & "',[Mail]='" & txt_mail.Text & "',[Date_Naissance]='" &
txt_date_naissance.Text & "' WHERE [Pseudo]='" & txt_pseudo.Text & "';"
Connexion.ConnectionString = "Provider=microsoft.jet.oledb.4.0;Data
Source=" & Page.MapPath("mabase.mdb") & ";"
'Ouvre la connexion
Connexion.Open()
Commande.ExecuteScalar()
lbl_majOK.Visible = True
panel_profil.Visible = True
Connexion.Close()
End Sub

Dès que j'enlève la clause WHERE, tous les champs de la table sont modifiés
(c'est normal donc le update... fonctionne), mais mon problème vient du
WHERE, pourquoi???

Merci de votre aide

9 réponses

Avatar
Laurent Jordi
Salut

Peux-tu préciser sur quelle base de donnéees tu travailles ?

Merci

Laurent Jordi
http://www.ezlogic.mc
http://www.laurentjordi.net
"the viper" a écrit dans le message de
news:
Bonjour

J'ai une page de profil qui récupère les infos de l'utilisateur à partir
d'une table access. Ces infos sont affichés dans des textbox. Quand je
modifie le contenu d'un ou plusieurs textbox ma requète ne produit aucun
effet dans ma table.

Voila le code
Private Sub btn_modif_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_modif.Click
Dim Commande As New OleDbCommand
Dim Connexion As New OleDbConnection

'Définition des paramètres de connexion
Commande.Connection = Connexion
Commande.CommandType = CommandType.Text
Commande.CommandText = "UPDATE [tbl_users] SET [Password]='" &
txt_old_mdp.Text & "',[Nom]='" & txt_nom.Text & "',[Prenom]='" &
txt_prenom.Text & "',[Mail]='" & txt_mail.Text & "',[Date_Naissance]='" &
txt_date_naissance.Text & "' WHERE [Pseudo]='" & txt_pseudo.Text & "';"
Connexion.ConnectionString = "Provider=microsoft.jet.oledb.4.0;Data
Source=" & Page.MapPath("mabase.mdb") & ";"
'Ouvre la connexion
Connexion.Open()
Commande.ExecuteScalar()
lbl_majOK.Visible = True
panel_profil.Visible = True
Connexion.Close()
End Sub

Dès que j'enlève la clause WHERE, tous les champs de la table sont
modifiés
(c'est normal donc le update... fonctionne), mais mon problème vient du
WHERE, pourquoi???

Merci de votre aide


Avatar
the viper
C'est uen base de données Access

"Laurent Jordi" a écrit :

Salut

Peux-tu préciser sur quelle base de donnéees tu travailles ?

Merci

Laurent Jordi
http://www.ezlogic.mc
http://www.laurentjordi.net
"the viper" a écrit dans le message de
news:
> Bonjour
>
> J'ai une page de profil qui récupère les infos de l'utilisateur à partir
> d'une table access. Ces infos sont affichés dans des textbox. Quand je
> modifie le contenu d'un ou plusieurs textbox ma requète ne produit aucun
> effet dans ma table.
>
> Voila le code
> Private Sub btn_modif_Click(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles btn_modif.Click
> Dim Commande As New OleDbCommand
> Dim Connexion As New OleDbConnection
>
> 'Définition des paramètres de connexion
> Commande.Connection = Connexion
> Commande.CommandType = CommandType.Text
> Commande.CommandText = "UPDATE [tbl_users] SET [Password]='" &
> txt_old_mdp.Text & "',[Nom]='" & txt_nom.Text & "',[Prenom]='" &
> txt_prenom.Text & "',[Mail]='" & txt_mail.Text & "',[Date_Naissance]='" &
> txt_date_naissance.Text & "' WHERE [Pseudo]='" & txt_pseudo.Text & "';"
> Connexion.ConnectionString = "Provider=microsoft.jet.oledb.4.0;Data
> Source=" & Page.MapPath("mabase.mdb") & ";"
> 'Ouvre la connexion
> Connexion.Open()
> Commande.ExecuteScalar()
> lbl_majOK.Visible = True
> panel_profil.Visible = True
> Connexion.Close()
> End Sub
>
> Dès que j'enlève la clause WHERE, tous les champs de la table sont
> modifiés
> (c'est normal donc le update... fonctionne), mais mon problème vient du
> WHERE, pourquoi???
>
> Merci de votre aide





Avatar
Gilles TOURREAU
Le Sun, 11 Feb 2007 01:26:00 +0100, the viper
a écrit:

C'est uen base de données Access

"Laurent Jordi" a écrit :

Salut

Peux-tu préciser sur quelle base de donnéees tu travailles ?

Merci

Laurent Jordi
http://www.ezlogic.mc
http://www.laurentjordi.net
"the viper" a écrit dans le
message de
news:
> Bonjour
>
> J'ai une page de profil qui récupère les infos de l'utilisateur à
partir
> d'une table access. Ces infos sont affichés dans des textbox. Quand je
> modifie le contenu d'un ou plusieurs textbox ma requète ne produit
aucun
> effet dans ma table.
>
> Voila le code
> Private Sub btn_modif_Click(ByVal sender As System.Object, ByVal e
As
> System.EventArgs) Handles btn_modif.Click
> Dim Commande As New OleDbCommand
> Dim Connexion As New OleDbConnection
>
> 'Définition des paramètres de connexion
> Commande.Connection = Connexion
> Commande.CommandType = CommandType.Text
> Commande.CommandText = "UPDATE [tbl_users] SET [Password]='" &
> txt_old_mdp.Text & "',[Nom]='" & txt_nom.Text & "',[Prenom]='" &
> txt_prenom.Text & "',[Mail]='" & txt_mail.Text &
"',[Date_Naissance]='" &
> txt_date_naissance.Text & "' WHERE [Pseudo]='" & txt_pseudo.Text &
"';"
> Connexion.ConnectionString =
"Provider=microsoft.jet.oledb.4.0;Data
> Source=" & Page.MapPath("mabase.mdb") & ";"
> 'Ouvre la connexion
> Connexion.Open()
> Commande.ExecuteScalar()
> lbl_majOK.Visible = True
> panel_profil.Visible = True
> Connexion.Close()
> End Sub
>
> Dès que j'enlève la clause WHERE, tous les champs de la table sont
> modifiés
> (c'est normal donc le update... fonctionne), mais mon problème vient
du
> WHERE, pourquoi???
>
> Merci de votre aide








Es-tu sûr que la valeur txt_pseudo.Text contient bien quelque chose ? Si
oui est ce que
le pseudo existe bien dans la base de données ?

Evite de faire des requêtes "à la PHP", c'est à dire en concaténant des
chaines de caractères. Utilise les OleDbParameter, cela t'évitera des
surprises si le pseudo contient un apostrophe...

Cordialement


--
Gilles TOURREAU
Responsable Informatique


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
the viper
Le pseudo existe dans la base et le champ txt_pseudo.text contient bien le
pseudo puique je l'affiche.
Pour OledbParameter, je connais pas mais je vais approfondir le sujet
Merci


"Gilles TOURREAU" a écrit :

Le Sun, 11 Feb 2007 01:26:00 +0100, the viper
a écrit:

> C'est uen base de données Access
>
> "Laurent Jordi" a écrit :
>
>> Salut
>>
>> Peux-tu préciser sur quelle base de donnéees tu travailles ?
>>
>> Merci
>>
>> Laurent Jordi
>> http://www.ezlogic.mc
>> http://www.laurentjordi.net
>> "the viper" a écrit dans le
>> message de
>> news:
>> > Bonjour
>> >
>> > J'ai une page de profil qui récupère les infos de l'utilisateur à
>> partir
>> > d'une table access. Ces infos sont affichés dans des textbox. Quand je
>> > modifie le contenu d'un ou plusieurs textbox ma requète ne produit
>> aucun
>> > effet dans ma table.
>> >
>> > Voila le code
>> > Private Sub btn_modif_Click(ByVal sender As System.Object, ByVal e
>> As
>> > System.EventArgs) Handles btn_modif.Click
>> > Dim Commande As New OleDbCommand
>> > Dim Connexion As New OleDbConnection
>> >
>> > 'Définition des paramètres de connexion
>> > Commande.Connection = Connexion
>> > Commande.CommandType = CommandType.Text
>> > Commande.CommandText = "UPDATE [tbl_users] SET [Password]='" &
>> > txt_old_mdp.Text & "',[Nom]='" & txt_nom.Text & "',[Prenom]='" &
>> > txt_prenom.Text & "',[Mail]='" & txt_mail.Text &
>> "',[Date_Naissance]='" &
>> > txt_date_naissance.Text & "' WHERE [Pseudo]='" & txt_pseudo.Text &
>> "';"
>> > Connexion.ConnectionString =
>> "Provider=microsoft.jet.oledb.4.0;Data
>> > Source=" & Page.MapPath("mabase.mdb") & ";"
>> > 'Ouvre la connexion
>> > Connexion.Open()
>> > Commande.ExecuteScalar()
>> > lbl_majOK.Visible = True
>> > panel_profil.Visible = True
>> > Connexion.Close()
>> > End Sub
>> >
>> > Dès que j'enlève la clause WHERE, tous les champs de la table sont
>> > modifiés
>> > (c'est normal donc le update... fonctionne), mais mon problème vient
>> du
>> > WHERE, pourquoi???
>> >
>> > Merci de votre aide
>>
>>
>>

Es-tu sûr que la valeur txt_pseudo.Text contient bien quelque chose ? Si
oui est ce que
le pseudo existe bien dans la base de données ?

Evite de faire des requêtes "à la PHP", c'est à dire en concaténant des
chaines de caractères. Utilise les OleDbParameter, cela t'évitera des
surprises si le pseudo contient un apostrophe...

Cordialement


--
Gilles TOURREAU
Responsable Informatique


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr



Avatar
Laurent Jordi
Salut,

Avant tout tu dois t'assurer que la base de donnée est dans un répertoire
autorisée en ecriture.

Concernant le OleDbParameter il s'agit d'un paramètre de requete.

Lorsque tu crée une requete access, tu as la possibilité de remplacer les
critères par des paramètres (typés ou non).
Dans l'éditeur de requete QBE (Query By Exemple) de access, il te suffit de
remplacer les valeurs que tu mettrais dans les cases correspondantes à tes
critères. Nommes les intelligeament et mets ces noms entre crochets.

Ensuite,

Base toi sur cet exemple :


Bien à toi

Laurent


"the viper" a écrit dans le message de
news:
Le pseudo existe dans la base et le champ txt_pseudo.text contient bien le
pseudo puique je l'affiche.
Pour OledbParameter, je connais pas mais je vais approfondir le sujet
Merci


"Gilles TOURREAU" a écrit :

Le Sun, 11 Feb 2007 01:26:00 +0100, the viper
a écrit:

> C'est uen base de données Access
>
> "Laurent Jordi" a écrit :
>
>> Salut
>>
>> Peux-tu préciser sur quelle base de donnéees tu travailles ?
>>
>> Merci
>>
>> Laurent Jordi
>> http://www.ezlogic.mc
>> http://www.laurentjordi.net
>> "the viper" a écrit dans le
>> message de
>> news:
>> > Bonjour
>> >
>> > J'ai une page de profil qui récupère les infos de l'utilisateur à
>> partir
>> > d'une table access. Ces infos sont affichés dans des textbox. Quand
>> > je
>> > modifie le contenu d'un ou plusieurs textbox ma requète ne produit
>> aucun
>> > effet dans ma table.
>> >
>> > Voila le code
>> > Private Sub btn_modif_Click(ByVal sender As System.Object, ByVal
>> > e
>> As
>> > System.EventArgs) Handles btn_modif.Click
>> > Dim Commande As New OleDbCommand
>> > Dim Connexion As New OleDbConnection
>> >
>> > 'Définition des paramètres de connexion
>> > Commande.Connection = Connexion
>> > Commande.CommandType = CommandType.Text
>> > Commande.CommandText = "UPDATE [tbl_users] SET [Password]='"
>> > &
>> > txt_old_mdp.Text & "',[Nom]='" & txt_nom.Text & "',[Prenom]='" &
>> > txt_prenom.Text & "',[Mail]='" & txt_mail.Text &
>> "',[Date_Naissance]='" &
>> > txt_date_naissance.Text & "' WHERE [Pseudo]='" & txt_pseudo.Text &
>> "';"
>> > Connexion.ConnectionString >> >> "Provider=microsoft.jet.oledb.4.0;Data
>> > Source=" & Page.MapPath("mabase.mdb") & ";"
>> > 'Ouvre la connexion
>> > Connexion.Open()
>> > Commande.ExecuteScalar()
>> > lbl_majOK.Visible = True
>> > panel_profil.Visible = True
>> > Connexion.Close()
>> > End Sub
>> >
>> > Dès que j'enlève la clause WHERE, tous les champs de la table sont
>> > modifiés
>> > (c'est normal donc le update... fonctionne), mais mon problème vient
>> du
>> > WHERE, pourquoi???
>> >
>> > Merci de votre aide
>>
>>
>>

Es-tu sûr que la valeur txt_pseudo.Text contient bien quelque chose ? Si
oui est ce que
le pseudo existe bien dans la base de données ?

Evite de faire des requêtes "à la PHP", c'est à dire en concaténant des
chaines de caractères. Utilise les OleDbParameter, cela t'évitera des
surprises si le pseudo contient un apostrophe...

Cordialement


--
Gilles TOURREAU
Responsable Informatique


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr





Avatar
the viper
Mon répertoire autorise l'écriture car avant de pouvoir mettre à jour les
données de son profil, l'utilisateur a créer son compte donc c'est surement
un problème au niveau de la requète parce que dès que j'enlève la clause
WHERE ma requète écrit bien dans la base, pas comme ça devrait mais ça écrit.

Pourtant j'ai fait un test de récupération du contenu du champ
txt_pseudo.txt dans un label et il me récupère bien le contenu du champ pour
l'afficher dans le label, donc je ne vois pas pourquoi il ne le récupère pas
pour la requète.

Merci
"Laurent Jordi" a écrit :

Salut,

Avant tout tu dois t'assurer que la base de donnée est dans un répertoire
autorisée en ecriture.

Concernant le OleDbParameter il s'agit d'un paramètre de requete.

Lorsque tu crée une requete access, tu as la possibilité de remplacer les
critères par des paramètres (typés ou non).
Dans l'éditeur de requete QBE (Query By Exemple) de access, il te suffit de
remplacer les valeurs que tu mettrais dans les cases correspondantes à tes
critères. Nommes les intelligeament et mets ces noms entre crochets.

Ensuite,

Base toi sur cet exemple :


Bien à toi

Laurent


"the viper" a écrit dans le message de
news:
> Le pseudo existe dans la base et le champ txt_pseudo.text contient bien le
> pseudo puique je l'affiche.
> Pour OledbParameter, je connais pas mais je vais approfondir le sujet
> Merci
>
>
> "Gilles TOURREAU" a écrit :
>
>> Le Sun, 11 Feb 2007 01:26:00 +0100, the viper
>> a écrit:
>>
>> > C'est uen base de données Access
>> >
>> > "Laurent Jordi" a écrit :
>> >
>> >> Salut
>> >>
>> >> Peux-tu préciser sur quelle base de donnéees tu travailles ?
>> >>
>> >> Merci
>> >>
>> >> Laurent Jordi
>> >> http://www.ezlogic.mc
>> >> http://www.laurentjordi.net
>> >> "the viper" a écrit dans le
>> >> message de
>> >> news:
>> >> > Bonjour
>> >> >
>> >> > J'ai une page de profil qui récupère les infos de l'utilisateur à
>> >> partir
>> >> > d'une table access. Ces infos sont affichés dans des textbox. Quand
>> >> > je
>> >> > modifie le contenu d'un ou plusieurs textbox ma requète ne produit
>> >> aucun
>> >> > effet dans ma table.
>> >> >
>> >> > Voila le code
>> >> > Private Sub btn_modif_Click(ByVal sender As System.Object, ByVal
>> >> > e
>> >> As
>> >> > System.EventArgs) Handles btn_modif.Click
>> >> > Dim Commande As New OleDbCommand
>> >> > Dim Connexion As New OleDbConnection
>> >> >
>> >> > 'Définition des paramètres de connexion
>> >> > Commande.Connection = Connexion
>> >> > Commande.CommandType = CommandType.Text
>> >> > Commande.CommandText = "UPDATE [tbl_users] SET [Password]='"
>> >> > &
>> >> > txt_old_mdp.Text & "',[Nom]='" & txt_nom.Text & "',[Prenom]='" &
>> >> > txt_prenom.Text & "',[Mail]='" & txt_mail.Text &
>> >> "',[Date_Naissance]='" &
>> >> > txt_date_naissance.Text & "' WHERE [Pseudo]='" & txt_pseudo.Text &
>> >> "';"
>> >> > Connexion.ConnectionString > >> >> "Provider=microsoft.jet.oledb.4.0;Data
>> >> > Source=" & Page.MapPath("mabase.mdb") & ";"
>> >> > 'Ouvre la connexion
>> >> > Connexion.Open()
>> >> > Commande.ExecuteScalar()
>> >> > lbl_majOK.Visible = True
>> >> > panel_profil.Visible = True
>> >> > Connexion.Close()
>> >> > End Sub
>> >> >
>> >> > Dès que j'enlève la clause WHERE, tous les champs de la table sont
>> >> > modifiés
>> >> > (c'est normal donc le update... fonctionne), mais mon problème vient
>> >> du
>> >> > WHERE, pourquoi???
>> >> >
>> >> > Merci de votre aide
>> >>
>> >>
>> >>
>>
>> Es-tu sûr que la valeur txt_pseudo.Text contient bien quelque chose ? Si
>> oui est ce que
>> le pseudo existe bien dans la base de données ?
>>
>> Evite de faire des requêtes "à la PHP", c'est à dire en concaténant des
>> chaines de caractères. Utilise les OleDbParameter, cela t'évitera des
>> surprises si le pseudo contient un apostrophe...
>>
>> Cordialement
>>
>>
>> --
>> Gilles TOURREAU
>> Responsable Informatique
>>
>>
>> S.A.R.L. P.O.S
>> Le spécialiste en motoculture depuis + de 30 ans !
>> http://www.pos.fr
>>





Avatar
Laurent Jordi
Récapitulons :

Dans ton pageload tu exécutes une requête select qui initialise ton
formulaire Attention de bien mettre se code dans un if not ispageload then
Lorsque l'utilisateur clique sur Ok (ça déclanche un submit)
Dans évènement Ok tu récupères bien la valeur modifiée de ton label.

Essaye de remplacer dans ta chaîne les ' par des "" (double guillemets) et
réessaye.

De mémoire access considère que les chaînes de caractères sont entre " et
non entre '. C'est SQL Server qui utilise les '.

Pour éviter de terminer ta chaîne il faut doubler les " à chaque fois que
l'un d'entre eux doit être inclus dans la chaîne.

Bonne continuation

Laurent Jordi
http://www.ezlogic.mc
http://www.laurentjordi.net


"the viper" a écrit dans le message de
news:
Mon répertoire autorise l'écriture car avant de pouvoir mettre à jour les
données de son profil, l'utilisateur a créer son compte donc c'est
surement
un problème au niveau de la requète parce que dès que j'enlève la clause
WHERE ma requète écrit bien dans la base, pas comme ça devrait mais ça
écrit.

Pourtant j'ai fait un test de récupération du contenu du champ
txt_pseudo.txt dans un label et il me récupère bien le contenu du champ
pour
l'afficher dans le label, donc je ne vois pas pourquoi il ne le récupère
pas
pour la requète.

Merci
"Laurent Jordi" a écrit :

Salut,

Avant tout tu dois t'assurer que la base de donnée est dans un répertoire
autorisée en ecriture.

Concernant le OleDbParameter il s'agit d'un paramètre de requete.

Lorsque tu crée une requete access, tu as la possibilité de remplacer les
critères par des paramètres (typés ou non).
Dans l'éditeur de requete QBE (Query By Exemple) de access, il te suffit
de
remplacer les valeurs que tu mettrais dans les cases correspondantes à
tes
critères. Nommes les intelligeament et mets ces noms entre crochets.

Ensuite,

Base toi sur cet exemple :


Bien à toi

Laurent


"the viper" a écrit dans le message
de
news:
> Le pseudo existe dans la base et le champ txt_pseudo.text contient bien
> le
> pseudo puique je l'affiche.
> Pour OledbParameter, je connais pas mais je vais approfondir le sujet
> Merci
>
>
> "Gilles TOURREAU" a écrit :
>
>> Le Sun, 11 Feb 2007 01:26:00 +0100, the viper
>> a écrit:
>>
>> > C'est uen base de données Access
>> >
>> > "Laurent Jordi" a écrit :
>> >
>> >> Salut
>> >>
>> >> Peux-tu préciser sur quelle base de donnéees tu travailles ?
>> >>
>> >> Merci
>> >>
>> >> Laurent Jordi
>> >> http://www.ezlogic.mc
>> >> http://www.laurentjordi.net
>> >> "the viper" a écrit dans le
>> >> message de
>> >> news:
>> >> > Bonjour
>> >> >
>> >> > J'ai une page de profil qui récupère les infos de l'utilisateur à
>> >> partir
>> >> > d'une table access. Ces infos sont affichés dans des textbox.
>> >> > Quand
>> >> > je
>> >> > modifie le contenu d'un ou plusieurs textbox ma requète ne
>> >> > produit
>> >> aucun
>> >> > effet dans ma table.
>> >> >
>> >> > Voila le code
>> >> > Private Sub btn_modif_Click(ByVal sender As System.Object,
>> >> > ByVal
>> >> > e
>> >> As
>> >> > System.EventArgs) Handles btn_modif.Click
>> >> > Dim Commande As New OleDbCommand
>> >> > Dim Connexion As New OleDbConnection
>> >> >
>> >> > 'Définition des paramètres de connexion
>> >> > Commande.Connection = Connexion
>> >> > Commande.CommandType = CommandType.Text
>> >> > Commande.CommandText = "UPDATE [tbl_users] SET
>> >> > [Password]='"
>> >> > &
>> >> > txt_old_mdp.Text & "',[Nom]='" & txt_nom.Text & "',[Prenom]='" &
>> >> > txt_prenom.Text & "',[Mail]='" & txt_mail.Text &
>> >> "',[Date_Naissance]='" &
>> >> > txt_date_naissance.Text & "' WHERE [Pseudo]='" & txt_pseudo.Text
>> >> > &
>> >> "';"
>> >> > Connexion.ConnectionString >> >> >> "Provider=microsoft.jet.oledb.4.0;Data
>> >> > Source=" & Page.MapPath("mabase.mdb") & ";"
>> >> > 'Ouvre la connexion
>> >> > Connexion.Open()
>> >> > Commande.ExecuteScalar()
>> >> > lbl_majOK.Visible = True
>> >> > panel_profil.Visible = True
>> >> > Connexion.Close()
>> >> > End Sub
>> >> >
>> >> > Dès que j'enlève la clause WHERE, tous les champs de la table
>> >> > sont
>> >> > modifiés
>> >> > (c'est normal donc le update... fonctionne), mais mon problème
>> >> > vient
>> >> du
>> >> > WHERE, pourquoi???
>> >> >
>> >> > Merci de votre aide
>> >>
>> >>
>> >>
>>
>> Es-tu sûr que la valeur txt_pseudo.Text contient bien quelque chose ?
>> Si
>> oui est ce que
>> le pseudo existe bien dans la base de données ?
>>
>> Evite de faire des requêtes "à la PHP", c'est à dire en concaténant
>> des
>> chaines de caractères. Utilise les OleDbParameter, cela t'évitera des
>> surprises si le pseudo contient un apostrophe...
>>
>> Cordialement
>>
>>
>> --
>> Gilles TOURREAU
>> Responsable Informatique
>>
>>
>> S.A.R.L. P.O.S
>> Le spécialiste en motoculture depuis + de 30 ans !
>> http://www.pos.fr
>>







Avatar
remi
Bonjour,

personnellement je ne comprends pas pourquoi les noms des champs de la table
sont entre crochets...

Commande.CommandText = "UPDATE [tbl_users] SET
[Password]='"
&
txt_old_mdp.Text & "',[Nom]='" & txt_nom.Text & "',[Prenom]='" &
txt_prenom.Text & "',[Mail]='" & txt_mail.Text &
"',[Date_Naissance]='" &
txt_date_naissance.Text & "' WHERE [Pseudo]='" & txt_pseudo.Text
&

je verrais plutôt quelque chose comme :

txt_date_naissance.Text & "' WHERE Pseudo='" & txt_pseudo.Text

idem pour les autres champs.

Me trompes-je ?
Rémi


"Laurent Jordi" <info@(xxx)ezlogic.mc> a écrit dans le message de
news:%
Récapitulons :

Dans ton pageload tu exécutes une requête select qui initialise ton
formulaire Attention de bien mettre se code dans un if not ispageload then
Lorsque l'utilisateur clique sur Ok (ça déclanche un submit)
Dans évènement Ok tu récupères bien la valeur modifiée de ton label.

Essaye de remplacer dans ta chaîne les ' par des "" (double guillemets) et
réessaye.

De mémoire access considère que les chaînes de caractères sont entre " et
non entre '. C'est SQL Server qui utilise les '.

Pour éviter de terminer ta chaîne il faut doubler les " à chaque fois que
l'un d'entre eux doit être inclus dans la chaîne.

Bonne continuation

Laurent Jordi
http://www.ezlogic.mc
http://www.laurentjordi.net


"the viper" a écrit dans le message
de news:
Mon répertoire autorise l'écriture car avant de pouvoir mettre à jour les
données de son profil, l'utilisateur a créer son compte donc c'est
surement
un problème au niveau de la requète parce que dès que j'enlève la clause
WHERE ma requète écrit bien dans la base, pas comme ça devrait mais ça
écrit.

Pourtant j'ai fait un test de récupération du contenu du champ
txt_pseudo.txt dans un label et il me récupère bien le contenu du champ
pour
l'afficher dans le label, donc je ne vois pas pourquoi il ne le récupère
pas
pour la requète.

Merci
"Laurent Jordi" a écrit :

Salut,

Avant tout tu dois t'assurer que la base de donnée est dans un
répertoire
autorisée en ecriture.

Concernant le OleDbParameter il s'agit d'un paramètre de requete.

Lorsque tu crée une requete access, tu as la possibilité de remplacer
les
critères par des paramètres (typés ou non).
Dans l'éditeur de requete QBE (Query By Exemple) de access, il te suffit
de
remplacer les valeurs que tu mettrais dans les cases correspondantes à
tes
critères. Nommes les intelligeament et mets ces noms entre crochets.

Ensuite,

Base toi sur cet exemple :


Bien à toi

Laurent


"the viper" a écrit dans le message
de
news:
> Le pseudo existe dans la base et le champ txt_pseudo.text contient
> bien le
> pseudo puique je l'affiche.
> Pour OledbParameter, je connais pas mais je vais approfondir le sujet
> Merci
>
>
> "Gilles TOURREAU" a écrit :
>
>> Le Sun, 11 Feb 2007 01:26:00 +0100, the viper
>> a écrit:
>>
>> > C'est uen base de données Access
>> >
>> > "Laurent Jordi" a écrit :
>> >
>> >> Salut
>> >>
>> >> Peux-tu préciser sur quelle base de donnéees tu travailles ?
>> >>
>> >> Merci
>> >>
>> >> Laurent Jordi
>> >> http://www.ezlogic.mc
>> >> http://www.laurentjordi.net
>> >> "the viper" a écrit dans le
>> >> message de
>> >> news:
>> >> > Bonjour
>> >> >
>> >> > J'ai une page de profil qui récupère les infos de l'utilisateur
>> >> > à
>> >> partir
>> >> > d'une table access. Ces infos sont affichés dans des textbox.
>> >> > Quand
>> >> > je
>> >> > modifie le contenu d'un ou plusieurs textbox ma requète ne
>> >> > produit
>> >> aucun
>> >> > effet dans ma table.
>> >> >
>> >> > Voila le code
>> >> > Private Sub btn_modif_Click(ByVal sender As System.Object,
>> >> > ByVal
>> >> > e
>> >> As
>> >> > System.EventArgs) Handles btn_modif.Click
>> >> > Dim Commande As New OleDbCommand
>> >> > Dim Connexion As New OleDbConnection
>> >> >
>> >> > 'Définition des paramètres de connexion
>> >> > Commande.Connection = Connexion
>> >> > Commande.CommandType = CommandType.Text
>> >> > Commande.CommandText = "UPDATE [tbl_users] SET
>> >> > [Password]='"
>> >> > &
>> >> > txt_old_mdp.Text & "',[Nom]='" & txt_nom.Text & "',[Prenom]='" &
>> >> > txt_prenom.Text & "',[Mail]='" & txt_mail.Text &
>> >> "',[Date_Naissance]='" &
>> >> > txt_date_naissance.Text & "' WHERE [Pseudo]='" & txt_pseudo.Text
>> >> > &
>> >> "';"
>> >> > Connexion.ConnectionString >>> >> >> "Provider=microsoft.jet.oledb.4.0;Data
>> >> > Source=" & Page.MapPath("mabase.mdb") & ";"
>> >> > 'Ouvre la connexion
>> >> > Connexion.Open()
>> >> > Commande.ExecuteScalar()
>> >> > lbl_majOK.Visible = True
>> >> > panel_profil.Visible = True
>> >> > Connexion.Close()
>> >> > End Sub
>> >> >
>> >> > Dès que j'enlève la clause WHERE, tous les champs de la table
>> >> > sont
>> >> > modifiés
>> >> > (c'est normal donc le update... fonctionne), mais mon problème
>> >> > vient
>> >> du
>> >> > WHERE, pourquoi???
>> >> >
>> >> > Merci de votre aide
>> >>
>> >>
>> >>
>>
>> Es-tu sûr que la valeur txt_pseudo.Text contient bien quelque chose ?
>> Si
>> oui est ce que
>> le pseudo existe bien dans la base de données ?
>>
>> Evite de faire des requêtes "à la PHP", c'est à dire en concaténant
>> des
>> chaines de caractères. Utilise les OleDbParameter, cela t'évitera des
>> surprises si le pseudo contient un apostrophe...
>>
>> Cordialement
>>
>>
>> --
>> Gilles TOURREAU
>> Responsable Informatique
>>
>>
>> S.A.R.L. P.O.S
>> Le spécialiste en motoculture depuis + de 30 ans !
>> http://www.pos.fr
>>











Avatar
Laurent Jordi
Les crochets permettent l'utilisation d'espaces dans les noms des objets
access mais sont facultatifs s'il n'y en a pas.
Personnellement, j'ai l'habitude de ne pas mettre d'espace ou de caractères
spéciaux y compris des caractères accentués afin de faciliter toute
migration vers d'autres systèmes ou sur des serveurs fonctionnant dans un
autre environnement international.

essaye de remplacer les ' par des double "

@+

Laurent Jordi
http://www.ezlogic.mc
http://www.laurentjordi.net

"remi" a écrit dans le message de news:

Bonjour,

personnellement je ne comprends pas pourquoi les noms des champs de la
table sont entre crochets...

Commande.CommandText = "UPDATE [tbl_users] SET
[Password]='"
&
txt_old_mdp.Text & "',[Nom]='" & txt_nom.Text & "',[Prenom]='" &
txt_prenom.Text & "',[Mail]='" & txt_mail.Text &
"',[Date_Naissance]='" &
txt_date_naissance.Text & "' WHERE [Pseudo]='" & txt_pseudo.Text
&

je verrais plutôt quelque chose comme :

txt_date_naissance.Text & "' WHERE Pseudo='" & txt_pseudo.Text

idem pour les autres champs.

Me trompes-je ?
Rémi


"Laurent Jordi" <info@(xxx)ezlogic.mc> a écrit dans le message de
news:%
Récapitulons :

Dans ton pageload tu exécutes une requête select qui initialise ton
formulaire Attention de bien mettre se code dans un if not ispageload
then
Lorsque l'utilisateur clique sur Ok (ça déclanche un submit)
Dans évènement Ok tu récupères bien la valeur modifiée de ton label.

Essaye de remplacer dans ta chaîne les ' par des "" (double guillemets)
et réessaye.

De mémoire access considère que les chaînes de caractères sont entre " et
non entre '. C'est SQL Server qui utilise les '.

Pour éviter de terminer ta chaîne il faut doubler les " à chaque fois que
l'un d'entre eux doit être inclus dans la chaîne.

Bonne continuation

Laurent Jordi
http://www.ezlogic.mc
http://www.laurentjordi.net


"the viper" a écrit dans le message
de news:
Mon répertoire autorise l'écriture car avant de pouvoir mettre à jour
les
données de son profil, l'utilisateur a créer son compte donc c'est
surement
un problème au niveau de la requète parce que dès que j'enlève la clause
WHERE ma requète écrit bien dans la base, pas comme ça devrait mais ça
écrit.

Pourtant j'ai fait un test de récupération du contenu du champ
txt_pseudo.txt dans un label et il me récupère bien le contenu du champ
pour
l'afficher dans le label, donc je ne vois pas pourquoi il ne le récupère
pas
pour la requète.

Merci
"Laurent Jordi" a écrit :

Salut,

Avant tout tu dois t'assurer que la base de donnée est dans un
répertoire
autorisée en ecriture.

Concernant le OleDbParameter il s'agit d'un paramètre de requete.

Lorsque tu crée une requete access, tu as la possibilité de remplacer
les
critères par des paramètres (typés ou non).
Dans l'éditeur de requete QBE (Query By Exemple) de access, il te
suffit de
remplacer les valeurs que tu mettrais dans les cases correspondantes à
tes
critères. Nommes les intelligeament et mets ces noms entre crochets.

Ensuite,

Base toi sur cet exemple :


Bien à toi

Laurent


"the viper" a écrit dans le
message de
news:
> Le pseudo existe dans la base et le champ txt_pseudo.text contient
> bien le
> pseudo puique je l'affiche.
> Pour OledbParameter, je connais pas mais je vais approfondir le sujet
> Merci
>
>
> "Gilles TOURREAU" a écrit :
>
>> Le Sun, 11 Feb 2007 01:26:00 +0100, the viper
>> a écrit:
>>
>> > C'est uen base de données Access
>> >
>> > "Laurent Jordi" a écrit :
>> >
>> >> Salut
>> >>
>> >> Peux-tu préciser sur quelle base de donnéees tu travailles ?
>> >>
>> >> Merci
>> >>
>> >> Laurent Jordi
>> >> http://www.ezlogic.mc
>> >> http://www.laurentjordi.net
>> >> "the viper" a écrit dans le
>> >> message de
>> >> news:
>> >> > Bonjour
>> >> >
>> >> > J'ai une page de profil qui récupère les infos de l'utilisateur
>> >> > à
>> >> partir
>> >> > d'une table access. Ces infos sont affichés dans des textbox.
>> >> > Quand
>> >> > je
>> >> > modifie le contenu d'un ou plusieurs textbox ma requète ne
>> >> > produit
>> >> aucun
>> >> > effet dans ma table.
>> >> >
>> >> > Voila le code
>> >> > Private Sub btn_modif_Click(ByVal sender As System.Object,
>> >> > ByVal
>> >> > e
>> >> As
>> >> > System.EventArgs) Handles btn_modif.Click
>> >> > Dim Commande As New OleDbCommand
>> >> > Dim Connexion As New OleDbConnection
>> >> >
>> >> > 'Définition des paramètres de connexion
>> >> > Commande.Connection = Connexion
>> >> > Commande.CommandType = CommandType.Text
>> >> > Commande.CommandText = "UPDATE [tbl_users] SET
>> >> > [Password]='"
>> >> > &
>> >> > txt_old_mdp.Text & "',[Nom]='" & txt_nom.Text & "',[Prenom]='"
>> >> > &
>> >> > txt_prenom.Text & "',[Mail]='" & txt_mail.Text &
>> >> "',[Date_Naissance]='" &
>> >> > txt_date_naissance.Text & "' WHERE [Pseudo]='" &
>> >> > txt_pseudo.Text &
>> >> "';"
>> >> > Connexion.ConnectionString >>>> >> >> "Provider=microsoft.jet.oledb.4.0;Data
>> >> > Source=" & Page.MapPath("mabase.mdb") & ";"
>> >> > 'Ouvre la connexion
>> >> > Connexion.Open()
>> >> > Commande.ExecuteScalar()
>> >> > lbl_majOK.Visible = True
>> >> > panel_profil.Visible = True
>> >> > Connexion.Close()
>> >> > End Sub
>> >> >
>> >> > Dès que j'enlève la clause WHERE, tous les champs de la table
>> >> > sont
>> >> > modifiés
>> >> > (c'est normal donc le update... fonctionne), mais mon problème
>> >> > vient
>> >> du
>> >> > WHERE, pourquoi???
>> >> >
>> >> > Merci de votre aide
>> >>
>> >>
>> >>
>>
>> Es-tu sûr que la valeur txt_pseudo.Text contient bien quelque chose
>> ? Si
>> oui est ce que
>> le pseudo existe bien dans la base de données ?
>>
>> Evite de faire des requêtes "à la PHP", c'est à dire en concaténant
>> des
>> chaines de caractères. Utilise les OleDbParameter, cela t'évitera
>> des
>> surprises si le pseudo contient un apostrophe...
>>
>> Cordialement
>>
>>
>> --
>> Gilles TOURREAU
>> Responsable Informatique
>>
>>
>> S.A.R.L. P.O.S
>> Le spécialiste en motoculture depuis + de 30 ans !
>> http://www.pos.fr
>>