Bonjour,
N'ayant pas programmé depuis longtemps, je ne me souviens plus
des astuces pour contourner le problème des apostrophes (dans les phrases
français) lors d'une recherche dans un Recordset. Toute suggestion serait
grandement appréciée!
Merci d'avance!
Bonjour,
N'ayant pas programmé depuis longtemps, je ne me souviens plus
des astuces pour contourner le problème des apostrophes (dans les phrases
français) lors d'une recherche dans un Recordset. Toute suggestion serait
grandement appréciée!
Merci d'avance!
Bonjour,
N'ayant pas programmé depuis longtemps, je ne me souviens plus
des astuces pour contourner le problème des apostrophes (dans les phrases
français) lors d'une recherche dans un Recordset. Toute suggestion serait
grandement appréciée!
Merci d'avance!
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!
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!
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!
Salut IM
je crois qu'il faut les doubler..
Driss
"IM" a écrit dans le message de
news:mj1wh.71397$Bonjour,
N'ayant pas programmé depuis longtemps, je ne me souviens
plus
des astuces pour contourner le problème des apostrophes (dans les phrases
enfrançais) lors d'une recherche dans un Recordset. Toute suggestion serait
grandement appréciée!
Merci d'avance!
Salut IM
je crois qu'il faut les doubler..
Driss
"IM" <imarinov@videotron.ca> a écrit dans le message de
news:mj1wh.71397$rD5.614814@wagner.videotron.net...
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!
Salut IM
je crois qu'il faut les doubler..
Driss
"IM" a écrit dans le message de
news:mj1wh.71397$Bonjour,
N'ayant pas programmé depuis longtemps, je ne me souviens
plus
des astuces pour contourner le problème des apostrophes (dans les phrases
enfrançais) lors d'une recherche dans un Recordset. Toute suggestion serait
grandement appréciée!
Merci d'avance!
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!
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!
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!
Bonjour
Pour éviter l'erreur due à la présence d'apostrophes dans un recordset il
faut laisser l'erreur système 3077 se produire et la gérer de la façon
suivante en utilisant l'instruction Replace de VB6
Private Sub DBCombo1_DblClick(Area As Integer)
On Error GoTo Erreur
Data1.Recordset.FindFirst "Nom =( ' " & DBCombo1.BoundText & " ' ) "
Exit Sub
Erreur:
Design = DBCombo1.BoundText
Design = Replace(Design, " ' ", " '+ chr$(39)+' ")
Label1 = Design
Data1.Recordset.FindFirst " Nom = (' " & Design & " ' ) "
End Sub
En réalité il n'y a pas d'espace entre les symboles "'"" et ('" "')"
Avec VB5 Replace n'est pqs reconnu, il faut décomposer la chaîne et la
reconstituer ensuite avec chr$(39) pour '
--
Bonne réception.
http://perso.orange.fr/andre.araste/
Membre du Club Win's: http://www.clubwins.org
Avertissement: Je ne vends rien.
"IM" a écrit dans le message de news:
mj1wh.71397$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!
Bonjour
Pour éviter l'erreur due à la présence d'apostrophes dans un recordset il
faut laisser l'erreur système 3077 se produire et la gérer de la façon
suivante en utilisant l'instruction Replace de VB6
Private Sub DBCombo1_DblClick(Area As Integer)
On Error GoTo Erreur
Data1.Recordset.FindFirst "Nom =( ' " & DBCombo1.BoundText & " ' ) "
Exit Sub
Erreur:
Design = DBCombo1.BoundText
Design = Replace(Design, " ' ", " '+ chr$(39)+' ")
Label1 = Design
Data1.Recordset.FindFirst " Nom = (' " & Design & " ' ) "
End Sub
En réalité il n'y a pas d'espace entre les symboles "'"" et ('" "')"
Avec VB5 Replace n'est pqs reconnu, il faut décomposer la chaîne et la
reconstituer ensuite avec chr$(39) pour '
--
Bonne réception.
andre.araste@wanadoo.fr
http://perso.orange.fr/andre.araste/
Membre du Club Win's: http://www.clubwins.org
Avertissement: Je ne vends rien.
"IM" <imarinov@videotron.ca> a écrit dans le message de news:
mj1wh.71397$rD5.614814@wagner.videotron.net...
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!
Bonjour
Pour éviter l'erreur due à la présence d'apostrophes dans un recordset il
faut laisser l'erreur système 3077 se produire et la gérer de la façon
suivante en utilisant l'instruction Replace de VB6
Private Sub DBCombo1_DblClick(Area As Integer)
On Error GoTo Erreur
Data1.Recordset.FindFirst "Nom =( ' " & DBCombo1.BoundText & " ' ) "
Exit Sub
Erreur:
Design = DBCombo1.BoundText
Design = Replace(Design, " ' ", " '+ chr$(39)+' ")
Label1 = Design
Data1.Recordset.FindFirst " Nom = (' " & Design & " ' ) "
End Sub
En réalité il n'y a pas d'espace entre les symboles "'"" et ('" "')"
Avec VB5 Replace n'est pqs reconnu, il faut décomposer la chaîne et la
reconstituer ensuite avec chr$(39) pour '
--
Bonne réception.
http://perso.orange.fr/andre.araste/
Membre du Club Win's: http://www.clubwins.org
Avertissement: Je ne vends rien.
"IM" a écrit dans le message de news:
mj1wh.71397$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!
Le remplacement n'est pas satisfaisant.
Si je veux stocker le mot AUJOURD'HUI dans une base c'est ce mot la
et pas autre chose.
C'est pourquoi on peux tester le contenu auparavant et adapter le SQL
en conséquence.
Le seul problème, comme je l'ai écrit plus haut, c'est quand la
chaine de caractères
contient à la fois simple et double cote ...................
Le remplacement n'est pas satisfaisant.
Si je veux stocker le mot AUJOURD'HUI dans une base c'est ce mot la
et pas autre chose.
C'est pourquoi on peux tester le contenu auparavant et adapter le SQL
en conséquence.
Le seul problème, comme je l'ai écrit plus haut, c'est quand la
chaine de caractères
contient à la fois simple et double cote ...................
Le remplacement n'est pas satisfaisant.
Si je veux stocker le mot AUJOURD'HUI dans une base c'est ce mot la
et pas autre chose.
C'est pourquoi on peux tester le contenu auparavant et adapter le SQL
en conséquence.
Le seul problème, comme je l'ai écrit plus haut, c'est quand la
chaine de caractères
contient à la fois simple et double cote ...................
Le remplacement n'est pas satisfaisant.
Si je veux stocker le mot AUJOURD'HUI dans une base c'est ce mot la
et pas autre chose.
C'est pourquoi on peux tester le contenu auparavant et adapter le SQL
en conséquence.
Le seul problème, comme je l'ai écrit plus haut, c'est quand la
chaine de caractères
contient à la fois simple et double cote ...................
Le remplacement n'est pas satisfaisant.
Si je veux stocker le mot AUJOURD'HUI dans une base c'est ce mot la
et pas autre chose.
C'est pourquoi on peux tester le contenu auparavant et adapter le SQL
en conséquence.
Le seul problème, comme je l'ai écrit plus haut, c'est quand la
chaine de caractères
contient à la fois simple et double cote ...................
Le remplacement n'est pas satisfaisant.
Si je veux stocker le mot AUJOURD'HUI dans une base c'est ce mot la
et pas autre chose.
C'est pourquoi on peux tester le contenu auparavant et adapter le SQL
en conséquence.
Le seul problème, comme je l'ai écrit plus haut, c'est quand la
chaine de caractères
contient à la fois simple et double cote ...................
Daniel AUBRY wrote:Le remplacement n'est pas satisfaisant.
Si je veux stocker le mot AUJOURD'HUI dans une base c'est ce mot la
et pas autre chose.
C'est pourquoi on peux tester le contenu auparavant et adapter le SQL
en conséquence.
Le seul problème, comme je l'ai écrit plus haut, c'est quand la
chaine de caractères
contient à la fois simple et double cote ...................
Hello Daniel,
Ce n'est pas vraiement un problème, car en SQL, le séparateur de
chaine, c'est le single quote (apostrophe) (et seulement celui la!).
les guillemets (") ne sont PAS le séparateur de chaine en SQL.
Si certaines bases le supportent, c'est un abus. Ce n'est pas ce
qui est défini par SQL.
De toute façon, si clause est une chaine de caractère
et B un champ TEXTE, alors on peut TOUJOURS ecrire:
(valable dans absolument tous les cas)
SQL = "SELECT * FROM A WHERE B = '" & clause & "'"
Et la variable clause peut contenir autant de quillemets que tu veux.
Le seul souci est si clause contient des apostrophes.
Et pour gérer cela, on peut dans TOUS les cas écrire:
clause = Replace(clause, "'", "''")
Ca va juste doubler les apostrophes si il y en a et sinon, ca
ne change pas la chaine.
Cette méthode est générique, fontionne avec TOUTES les DB qui
supportent SQL, ne nécessite pas de gestion d'erreur, est 100%
portable et s'applique dans TOUS les cas :-)
Absoluement toutes les applications DB utilisent cette "astuce",
qui n'een est même pas une. C'est une convention, parfaitement
définie par la norme SQL, toutes bases confondues.
Elle n'a donc que des avantages :-)
--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Daniel AUBRY wrote:
Le remplacement n'est pas satisfaisant.
Si je veux stocker le mot AUJOURD'HUI dans une base c'est ce mot la
et pas autre chose.
C'est pourquoi on peux tester le contenu auparavant et adapter le SQL
en conséquence.
Le seul problème, comme je l'ai écrit plus haut, c'est quand la
chaine de caractères
contient à la fois simple et double cote ...................
Hello Daniel,
Ce n'est pas vraiement un problème, car en SQL, le séparateur de
chaine, c'est le single quote (apostrophe) (et seulement celui la!).
les guillemets (") ne sont PAS le séparateur de chaine en SQL.
Si certaines bases le supportent, c'est un abus. Ce n'est pas ce
qui est défini par SQL.
De toute façon, si clause est une chaine de caractère
et B un champ TEXTE, alors on peut TOUJOURS ecrire:
(valable dans absolument tous les cas)
SQL = "SELECT * FROM A WHERE B = '" & clause & "'"
Et la variable clause peut contenir autant de quillemets que tu veux.
Le seul souci est si clause contient des apostrophes.
Et pour gérer cela, on peut dans TOUS les cas écrire:
clause = Replace(clause, "'", "''")
Ca va juste doubler les apostrophes si il y en a et sinon, ca
ne change pas la chaine.
Cette méthode est générique, fontionne avec TOUTES les DB qui
supportent SQL, ne nécessite pas de gestion d'erreur, est 100%
portable et s'applique dans TOUS les cas :-)
Absoluement toutes les applications DB utilisent cette "astuce",
qui n'een est même pas une. C'est une convention, parfaitement
définie par la norme SQL, toutes bases confondues.
Elle n'a donc que des avantages :-)
--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
FAQ VB: http://faq.vb.free.fr/
Daniel AUBRY wrote:Le remplacement n'est pas satisfaisant.
Si je veux stocker le mot AUJOURD'HUI dans une base c'est ce mot la
et pas autre chose.
C'est pourquoi on peux tester le contenu auparavant et adapter le SQL
en conséquence.
Le seul problème, comme je l'ai écrit plus haut, c'est quand la
chaine de caractères
contient à la fois simple et double cote ...................
Hello Daniel,
Ce n'est pas vraiement un problème, car en SQL, le séparateur de
chaine, c'est le single quote (apostrophe) (et seulement celui la!).
les guillemets (") ne sont PAS le séparateur de chaine en SQL.
Si certaines bases le supportent, c'est un abus. Ce n'est pas ce
qui est défini par SQL.
De toute façon, si clause est une chaine de caractère
et B un champ TEXTE, alors on peut TOUJOURS ecrire:
(valable dans absolument tous les cas)
SQL = "SELECT * FROM A WHERE B = '" & clause & "'"
Et la variable clause peut contenir autant de quillemets que tu veux.
Le seul souci est si clause contient des apostrophes.
Et pour gérer cela, on peut dans TOUS les cas écrire:
clause = Replace(clause, "'", "''")
Ca va juste doubler les apostrophes si il y en a et sinon, ca
ne change pas la chaine.
Cette méthode est générique, fontionne avec TOUTES les DB qui
supportent SQL, ne nécessite pas de gestion d'erreur, est 100%
portable et s'applique dans TOUS les cas :-)
Absoluement toutes les applications DB utilisent cette "astuce",
qui n'een est même pas une. C'est une convention, parfaitement
définie par la norme SQL, toutes bases confondues.
Elle n'a donc que des avantages :-)
--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Hello Jean-Marc,
Pas tout à fait d'accord avec toi.
Si je met en oeuvre ta technique :
clause1 = "Un disque de 2" et demi acheté aujourd'hui"
MsgBox clause1
clause2 = Replace(clause1, "'", "''")
MsgBox clause2
clause1 et clause2 sont bien différents.
Ecrire le mot aujourd'hui ---> aujourd"hui ne me convient pas.
Hello Jean-Marc,
Pas tout à fait d'accord avec toi.
Si je met en oeuvre ta technique :
clause1 = "Un disque de 2" et demi acheté aujourd'hui"
MsgBox clause1
clause2 = Replace(clause1, "'", "''")
MsgBox clause2
clause1 et clause2 sont bien différents.
Ecrire le mot aujourd'hui ---> aujourd"hui ne me convient pas.
Hello Jean-Marc,
Pas tout à fait d'accord avec toi.
Si je met en oeuvre ta technique :
clause1 = "Un disque de 2" et demi acheté aujourd'hui"
MsgBox clause1
clause2 = Replace(clause1, "'", "''")
MsgBox clause2
clause1 et clause2 sont bien différents.
Ecrire le mot aujourd'hui ---> aujourd"hui ne me convient pas.
Daniel AUBRY wrote:Hello Jean-Marc,
Pas tout à fait d'accord avec toi.
Si je met en oeuvre ta technique :
clause1 = "Un disque de 2" et demi acheté aujourd'hui"
MsgBox clause1
clause2 = Replace(clause1, "'", "''")
MsgBox clause2
clause1 et clause2 sont bien différents.
Ecrire le mot aujourd'hui ---> aujourd"hui ne me convient pas.
Je suis désolé de ne pas me faire comprendre ...
Ca n'écrira pas ->aujourd"hui<-
Ca écrira ->ajourd'hui<-
Le plus simple:
faire une base de donnée, une table Table1, avec un champ Titre.
Puis le programme suivant en VB:
Dim db As Database
Dim rs As Recordset
Dim szTitle As String
Set db = OpenDatabase("c:bd1.mdb")
Set rs = db.OpenRecordset("Table1")
szTitle = "L'ile au trésor, un livre d'aujourd'hui!"
rs.AddNew
rs.Fields("Titre") = szTitle
rs.Update
rs.Close
szTitle = Replace(szTitle, "'", "''")
Set rs = db.OpenRecordset("SELECT * FROM TABLE1 WHERE Titre = '" &
szTitle & "'")
MsgBox rs.Fields("Titre")
rs.Close
db.Close
Le résultat, c'est que la table contient bien ce que tu veux, et que
la requête fonctionne...
J'espère que c'est plus clair :-(
Bonne soirée!
--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Daniel AUBRY wrote:
Hello Jean-Marc,
Pas tout à fait d'accord avec toi.
Si je met en oeuvre ta technique :
clause1 = "Un disque de 2" et demi acheté aujourd'hui"
MsgBox clause1
clause2 = Replace(clause1, "'", "''")
MsgBox clause2
clause1 et clause2 sont bien différents.
Ecrire le mot aujourd'hui ---> aujourd"hui ne me convient pas.
Je suis désolé de ne pas me faire comprendre ...
Ca n'écrira pas ->aujourd"hui<-
Ca écrira ->ajourd'hui<-
Le plus simple:
faire une base de donnée, une table Table1, avec un champ Titre.
Puis le programme suivant en VB:
Dim db As Database
Dim rs As Recordset
Dim szTitle As String
Set db = OpenDatabase("c:bd1.mdb")
Set rs = db.OpenRecordset("Table1")
szTitle = "L'ile au trésor, un livre d'aujourd'hui!"
rs.AddNew
rs.Fields("Titre") = szTitle
rs.Update
rs.Close
szTitle = Replace(szTitle, "'", "''")
Set rs = db.OpenRecordset("SELECT * FROM TABLE1 WHERE Titre = '" &
szTitle & "'")
MsgBox rs.Fields("Titre")
rs.Close
db.Close
Le résultat, c'est que la table contient bien ce que tu veux, et que
la requête fonctionne...
J'espère que c'est plus clair :-(
Bonne soirée!
--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
FAQ VB: http://faq.vb.free.fr/
Daniel AUBRY wrote:Hello Jean-Marc,
Pas tout à fait d'accord avec toi.
Si je met en oeuvre ta technique :
clause1 = "Un disque de 2" et demi acheté aujourd'hui"
MsgBox clause1
clause2 = Replace(clause1, "'", "''")
MsgBox clause2
clause1 et clause2 sont bien différents.
Ecrire le mot aujourd'hui ---> aujourd"hui ne me convient pas.
Je suis désolé de ne pas me faire comprendre ...
Ca n'écrira pas ->aujourd"hui<-
Ca écrira ->ajourd'hui<-
Le plus simple:
faire une base de donnée, une table Table1, avec un champ Titre.
Puis le programme suivant en VB:
Dim db As Database
Dim rs As Recordset
Dim szTitle As String
Set db = OpenDatabase("c:bd1.mdb")
Set rs = db.OpenRecordset("Table1")
szTitle = "L'ile au trésor, un livre d'aujourd'hui!"
rs.AddNew
rs.Fields("Titre") = szTitle
rs.Update
rs.Close
szTitle = Replace(szTitle, "'", "''")
Set rs = db.OpenRecordset("SELECT * FROM TABLE1 WHERE Titre = '" &
szTitle & "'")
MsgBox rs.Fields("Titre")
rs.Close
db.Close
Le résultat, c'est que la table contient bien ce que tu veux, et que
la requête fonctionne...
J'espère que c'est plus clair :-(
Bonne soirée!
--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/