[VB6 et acces] J'arrive pas a resoudre un pb

Résolu
energiez Messages postés 38 Date d'inscription jeudi 8 janvier 2004 Statut Membre Dernière intervention 16 juin 2005 - 26 juil. 2004 à 15:38
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 - 4 oct. 2004 à 13:15
Bonjour,

Je souhaite modifier un enregitrement, pour cela, j'effectue la commande suivante:
sql "select * from titreboissons where titre '" & cmbtitre2.Text & "' and '" & "stitre" & i & "' = '" & cmbsoustitre.Text & "' "
Set rs = db.OpenRecordset(sql, dbOpenDynaset)
rs.edit
...
rs.update

Cela ne fonctionne pas, il me fait l'erreur suivante:

erreur d'execution '3075':
erreur de syntaxe(opérateur abs) dans l'expression 'titre= 'boissons' and 'stitre1'='Jus d'orange"

Lorsque je débug, ilme renvoie sur la ligne Set rs = db.OpenRecordset(sql, dbOpenDynaset)

Une idée?

D'avance, merci pour votre aide...

12 réponses

HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
26 juil. 2004 à 16:36
Bonjour,

pourquoi ne passerais tu pas directement par une requête sql d'update ? Ainsi tu modifierais ton enregistrement en une seule fois.

Sinon, as-tu fait un affichage de ta requête sql (MsgBox par exemple), pour voir si la requête est écrite comme tu le souhaites.
Par ailleurs, pour la comparaison de chaine de caractères, tu peux aussi utiliser l'opérateur LIKE.
SELECT * FROM table WHERE nom LIKE "toto"

De plus, il y a une cote dans le mot que tu compares : Jus d'orange.
L'erreur vient peut être de là. Il faudrait que tu fasses un replace de ta cote par une double cote.

Fanny
3
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
26 juil. 2004 à 15:50
si j'ai bien compris tu as des champs stitre1, stitre2 ....

si c'est ca alors :
sql "select * from titreboissons where titre '" & cmbtitre2.Text & "' and stitre" & i & " = '" & cmbsoustitre.Text & "' "

cyberscorp2004@msn.com
Qui s'y frotte, s'y pique .
0
energiez Messages postés 38 Date d'inscription jeudi 8 janvier 2004 Statut Membre Dernière intervention 16 juin 2005
26 juil. 2004 à 15:57
Oui effectivement, j'ai pls soustittre:
stitre1, stitre2....

Cependant, même avec votre code, j'ai tjs la même erreur :(

Je peux me permettre de vous/te contacter par msn?

Quoiqu'il en soit, merci pour votre/ton aide :D
0
energiez Messages postés 38 Date d'inscription jeudi 8 janvier 2004 Statut Membre Dernière intervention 16 juin 2005
26 juil. 2004 à 17:16
Effectivement, je probléme vient de l'apostrophe de jus d'orange :(

Avez vous une solution permettant d'inclure des apostrophe et guillements?

HFanny, je ne comprends pas pas ton "option" sql update... Je ne suis pas trés calé dans ce domaine...

Quoi qu'il en soit, merci beaucoup de ton aide :D
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
26 juil. 2004 à 17:38
1. Le problème de l'apostrophe

Tu te fais une fonction de substitution de toutes les quotes par des double-quotes. Tes requêtes prennent la forme suivant (en supposant Quote2DblQuote ta fonction qui te renvoit une string où les quotes sont doublées par rapport à la string reçue)
sql "select * from titreboissons where titre '" & Quote2DblQuote(cmbtitre2.Text) & "' and stitre" & i & " = '" & Quote2DblQuote(cmbsoustitre.Text) & "' "


2. SQL Update

Fanny te demandait pourquoi tu passais par les curseurs ... une commande UPDATE aurait suffit peut-être.
db.Execute "UPDATE titreboissons SET MonChamp1 MaValeur1, MonChamp2 MaValeur2, ..."
0
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
26 juil. 2004 à 17:40
J'ai oublié mon WHERE dans ma requête de mise à jour, il fallait lire
db.Execute "UPDATE titreboissons SET MonChamp1 MaValeur1, MonChamp2 MaValeur2, ... WHERE MaCondition1 = MaValeurConditionnelle1 ..."
0
energiez Messages postés 38 Date d'inscription jeudi 8 janvier 2004 Statut Membre Dernière intervention 16 juin 2005
26 juil. 2004 à 17:45
Merci beaucoup pour cette aide!
Je ne connaissait pas le db. execute "UPDATE..."
Effectivement, ca parait un peu plus simple!
Encore une fois merci :)
0
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
26 juil. 2004 à 19:26
exemple de requete
Ajouter microsoft DAO 3.6 dans menu projet/référence si tu utilise access 2000

:

Dim DB As Database
Dim RS As Recordset
Set DB = OpenDatabase("c:\essai.mdb")
Set RS = DB.OpenRecordset("Select * From table1 Where prog='x-file'")
Do Until RS.EOF
Debug.Print RS!prog
RS.MoveNext
Loop

Si tu veux faire des modification :

DB.Execute "Update table1 set prog='Hello' where prog='x-file'"

si tu veux ajouter un enregistrement :

DB.Execute "insert into table1 values(6,'1','M6','01/01/01','20:00','0')"

pour la suppression :

DB.Execute "Delete * From table1 where prog='hello'"

energiez pour m'ajouter à ta liste msn : cyberscorp2004@msn.com
0
energiez Messages postés 38 Date d'inscription jeudi 8 janvier 2004 Statut Membre Dernière intervention 16 juin 2005
26 juil. 2004 à 20:22
Merci beaucoup frop01!
Je t'ajoute a ma liste, dés que je suis de retour devant MON pc (soit demain)!

++
0
essmahane Messages postés 4 Date d'inscription jeudi 23 septembre 2004 Statut Membre Dernière intervention 5 octobre 2004
4 oct. 2004 à 11:31
j'ai fait ce code dansune zone de texte a l'etat de keys presse .je vouderais que lors j'ecris un mot sur ma zone de texte il affiche directement dans la liste les noms ecris dans la zone de texte

sql1 = "select * from sitpedag where [nomar] like '*" + Text1.Text + "*' "

Set rs4 = db1.OpenRecordset(sql1)
List1.Clear
While Not rs4.EOF
rs4.MoveFirst
List1.AddItem rs4("numedoti")
0
essmahane Messages postés 4 Date d'inscription jeudi 23 septembre 2004 Statut Membre Dernière intervention 5 octobre 2004
4 oct. 2004 à 11:42
je voudrais la reponse le plutot possible
0
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
4 oct. 2004 à 13:15
sql1 = "select * from sitpedag where [nomar] like '*" + Text1.Text + "*' "

Set rs4 = db1.OpenRecordset(sql1)
List1.Clear
rs4.MoveFirst
do until rs4.eof
List1.AddItem rs4!numedoti
rs4.movenext
loop

:-p [mailto:cyberscorp2004@msn.com MSN] :big) [mailto:frop01@yahoo.fr YAHOO] >:)

Membre du club CodeS-SourceS
0
Rejoignez-nous