Page 1 sur 1

DatabaseUpdate [Réglé]

Publié : mar. 27/févr./2007 16:03
par Aratytof
Bonjour.

soit la ligne suivante :
DatabaseUpdate(base,"UPDATE perso SET age=34 WHERE id=1")
pas de problemes, ca roule.

Mais maintanenant je souhaite mettre à jour un champ avec une chaine de charactere tel que par ex :

update perso set lieunaissance = "Paris" where id = 45

Pas moyen...

Une âme charitable peut-être ?

Merci.

Publié : mar. 27/févr./2007 16:22
par Progi1984
Tiens une question sur les BD cela faisait longtemps....

Essaie de mettre des guillemets simples autour de paris :

Code : Tout sélectionner

"UPDATE perso SET lieunaissance = 'Paris' WHERE id = 45 "
ou de mettre le chr(34) comme ceci :

Code : Tout sélectionner

"UPDATE perso SET lieunaissance = "+chr(34)+"Paris"+chr(34)+" WHERE id = 45 "

Publié : mar. 27/févr./2007 16:40
par Aratytof
Ca marche à merveille !!!

Bien le bonjour Monsieur Progi1984.

Et merci.

Publié : mar. 27/févr./2007 16:51
par Progi1984
Monsieur, Monsieur, Pas de monsieur entre nous. Call me just God ! lol

Appelle moi simplement Progi1984 ou Progi...

Publié : mar. 27/févr./2007 18:11
par Aratytof
Ben, maintenant, le problème, c'est que ca ne fonctionne pas avec une variable. Ex:

Lieu.s="Les Sables d'Olonne"

ChaineTest.s="UPDATE perso SET LieuDeNaissance = " + lieu.s + " where id = 4"

DatabaseUpdate(base,ChaineTest.S)

Et là... pas content du tout...

Publié : mar. 27/févr./2007 20:10
par Flype

Code : Tout sélectionner

ChaineTest.s = "UPDATE perso SET LieuDeNaissance = '" + lieu.s + "' WHERE id = 4"
çà marchera beaucoup mieux avec des guillemets.
d'ailleurs je te conseille de toujours en mettre sauf pour les numerics (même si mysql les tolère quand même).

Publié : mar. 27/févr./2007 20:40
par Flype
parfois pour de longues et fastidieuses requêtes SQL, on peut adopter cette méthode :

Code : Tout sélectionner

sql$ = "UPDATE perso SET LieuDeNaissance = 'lieu$' WHERE id = id$"

sql$ = ReplaceString(sql$, "id$",   "4")
sql$ = ReplaceString(sql$, "lieu$", "Les Sables d'Olonne")
ou bien dans le même esprit

Code : Tout sélectionner

sql$ = "UPDATE perso SET LieuDeNaissance = '%lieu%' WHERE id = %id%"

sql$ = ReplaceString(sql$, "%id%",   "4")
sql$ = ReplaceString(sql$, "%lieu%", "Les Sables d'Olonne")

Publié : mer. 28/févr./2007 10:51
par Aratytof
Merci beaucoup pour vos réponses.

A bientôt.

Publié : mer. 28/févr./2007 11:44
par Flype
ah et puis d'ailleurs - autre problème à prendre en compte dans une requête SQL :

les accents (dans d'Olonnes par exemple) qui vont être confondus avec les guillemets de chaines de caractères.

Il faut utiliser le caractère d'échappement \ (antislash) devant l'accent

Ce qui donne 'Les Sables d\'Olonnes'

En général je fais comme ceci (j'en manipule beaucoup au travail en purebasic ou php) :

Code : Tout sélectionner

;-

Macro SQL(requete, nom, valeur)
  ReplaceString(requete, nom, ReplaceString(valeur, "'", "\'"))
EndMacro

;-

Define req.s

req = "UPDATE perso SET "
req + "DateDeNaissance = '%date%', "
req + "LieuDeNaissance = '%lieu%' "
req + "WHERE id = %id%"

req = SQL(req, "%id%",   "4")
req = SQL(req, "%date%", "1980-12-31") 
req = SQL(req, "%lieu%", "Les Sables d'Olonne") 

MessageRequester("Requête SQL", req)

;-


Publié : ven. 09/mars/2007 12:47
par lionel_om
Par contre sous une BD Microsoft (ex : ACCESS), il faut utiliser un ' pour échapper un ':

Code : Tout sélectionner

Fonction("UPDATE test SET coucou='c''est bien'")