OVH Cloud OVH Cloud

Contourner les apostrophes lors d'une recherche dans un Recordset

13 réponses
Avatar
IM
Bonjour,



N'ayant pas programmé depuis longtemps, je ne me souviens plus
des astuces pour contourner le problème des apostrophes (dans les phrases en
français) lors d'une recherche dans un Recordset. Toute suggestion serait
grandement appréciée!



Merci d'avance!

3 réponses

1 2
Avatar
Jean-marc
Daniel AUBRY wrote:
Ok Jean Marc, ça marche en DAO.

J'ai réécris ton code en ADO et cela plante à l'enregistrement (bien
sur)



Oui bien sur, et ce n'est pas du à ADO.
En DAO, c'est 100% identique
si on fait l'insertion avec un INSERT statement, il faut
bien sur faire la même manip de doublage des quote.

Voici exactement le même programme que toi, en DAO:

Dim db As Database
Dim rs As Recordset
Dim szTitle As String
Dim SQL As String

Set db = OpenDatabase("c:bd1.mdb")
Set rs = db.OpenRecordset("Table1")


szTitle = "L'ile au trésor, un livre d'aujourd'hui!"

'''''' ===>> ICI, IL FAUT CA, BIEN SUR

szTitle = Replace(szTitle, "'", "''")

SQL = "Insert into Table1"
SQL = SQL & " (Titre)"
SQL = SQL & " values ('"
SQL = SQL & szTitle & "')"

db.Execute SQL

Set rs = db.OpenRecordset("SELECT * FROM TABLE1 WHERE Titre = '" &
szTitle & "'")
MsgBox rs.Fields("Titre")

rs.Close
db.Close

Et bien entendu, du coup, ça fonctionne parfaitement.

On a écrit qq chose de parfaitement générique, qui fonctionne dans
tous les cas, en DAO comme en ADO.
Et si on exécute ce même code directement en ligne de commande
dans un script SQL sous DB2 ou sous Oracle, ça marchera toujours aussi
bien :-)

J'espère que notre petit échange (bien agréable) aura éclairé la lanterne
des amateurs de BDD :-)

Très bonne soirée!

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
Daniel AUBRY
Merci Jean Marc,
bonne soirée à toi également.
C'est toujours un plaisir de te lire.

dany

"Jean-marc" a écrit dans le message
de news: 45c10df1$0$28909$
Daniel AUBRY wrote:
Ok Jean Marc, ça marche en DAO.

J'ai réécris ton code en ADO et cela plante à l'enregistrement (bien
sur)



Oui bien sur, et ce n'est pas du à ADO.
En DAO, c'est 100% identique
si on fait l'insertion avec un INSERT statement, il faut
bien sur faire la même manip de doublage des quote.

Voici exactement le même programme que toi, en DAO:

Dim db As Database
Dim rs As Recordset
Dim szTitle As String
Dim SQL As String

Set db = OpenDatabase("c:bd1.mdb")
Set rs = db.OpenRecordset("Table1")


szTitle = "L'ile au trésor, un livre d'aujourd'hui!"

'''''' ===>> ICI, IL FAUT CA, BIEN SUR

szTitle = Replace(szTitle, "'", "''")

SQL = "Insert into Table1"
SQL = SQL & " (Titre)"
SQL = SQL & " values ('"
SQL = SQL & szTitle & "')"

db.Execute SQL

Set rs = db.OpenRecordset("SELECT * FROM TABLE1 WHERE Titre = '" &
szTitle & "'")
MsgBox rs.Fields("Titre")

rs.Close
db.Close

Et bien entendu, du coup, ça fonctionne parfaitement.

On a écrit qq chose de parfaitement générique, qui fonctionne dans
tous les cas, en DAO comme en ADO.
Et si on exécute ce même code directement en ligne de commande
dans un script SQL sous DB2 ou sous Oracle, ça marchera toujours aussi
bien :-)

J'espère que notre petit échange (bien agréable) aura éclairé la lanterne
des amateurs de BDD :-)

Très bonne soirée!

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/




Avatar
IM
Merci infiniment à tous ceux qui ont répondu, tous les trucs m'ont été
utiles!
1 2