OVH Cloud OVH Cloud

Erreur requête les guillemets

9 réponses
Avatar
Louise Desbiens
Bonjour à tous,

Voici mon problème

voici ma requête

R.Open "SELECT * From Département WHERE ((Département='
" & _
ListSélection.List(x) & " ') AND ([Col2]=" & _
frmListe.cmbBâtiment & "))", DB, adOpenStatic,
adLockOptimistic

la valeur de ListSélection.List(x) égual : Aile 500 (D'aiguillon)

ce que la requête donne en texte

"SELECT * From Département WHERE ((Département='Aile 500 (D'aiguillon)')
AND ([Col2]=3))"

comme vous voyer il a 3 fois ' (Apostrophe)

dans ma requête et sa me fait une erreur

Quand j'utilisais une ouverture en access je n'avais pas de problème
'Access
DB.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " &
strCheminBase & strNomBase

parce que j'utilisais des triple guillemet guillemet
R.Open "SELECT * From Département WHERE
((Département=""" & _
ListSélection.List(x) & """) AND ([Col2]=" & _
frmListe.cmbBâtiment & "))", DB, adOpenStatic,
adLockOptimistic

ex:
ici et ici
"SELECT * From Département WHERE ((Département="Aile 500 (D'aiguillon)")
AND ([Col2]=3))"


Mais depuis j'utilise
'ODBC
DB.Open "Provider=MSDASQL.1;Persist Security Info=False;Data
Source=surgest;Initial Catalog=" &
il aime pas les triples guillemet

Quoi faire pour solutionner se problème??? :O(

J'espère que vous comprenez mon problème


Merci à tous ceux qui peut me répondre

Yves

9 réponses

Avatar
Christophe QUEVAL
Utilisez la fonction REPLACE

R.Open "SELECT * From Département WHERE ((Département='
" & _
Replace(ListSélection.List(x), "'", "''") & " ') AND


([Col2]=" & _
frmListe.cmbBâtiment & "))", DB, adOpenStatic,
adLockOptimistic




Un conseil : évitez les noms de champs, contrôles, variables... avec des
accents afin d'améliorer la portabilité de votre code et de vos bases de
données. :-)

Christophe

"Louise Desbiens" a écrit dans le message de
news:jYsyc.56063$
Bonjour à tous,

Voici mon problème

voici ma requête

R.Open "SELECT * From Département WHERE


((Département='
" & _
ListSélection.List(x) & " ') AND ([Col2]=" & _
frmListe.cmbBâtiment & "))", DB, adOpenStatic,
adLockOptimistic

la valeur de ListSélection.List(x) égual : Aile 500 (D'aiguillon)

ce que la requête donne en texte

"SELECT * From Département WHERE ((Département='Aile 500


(D'aiguillon)')
AND ([Col2]=3))"

comme vous voyer il a 3 fois ' (Apostrophe)

dans ma requête et sa me fait une erreur

Quand j'utilisais une ouverture en access je n'avais pas de problème
'Access
DB.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " &
strCheminBase & strNomBase

parce que j'utilisais des triple guillemet guillemet
R.Open "SELECT * From Département WHERE
((Département=""" & _
ListSélection.List(x) & """) AND ([Col2]=" & _
frmListe.cmbBâtiment & "))", DB, adOpenStatic,
adLockOptimistic

ex:
ici et ici
"SELECT * From Département WHERE ((Département="Aile 500


(D'aiguillon)")
AND ([Col2]=3))"


Mais depuis j'utilise
'ODBC
DB.Open "Provider=MSDASQL.1;Persist Security


Infoúlse;Data
Source=surgest;Initial Catalog=" &
il aime pas les triples guillemet

Quoi faire pour solutionner se problème??? :O(

J'espère que vous comprenez mon problème


Merci à tous ceux qui peut me répondre

Yves





Avatar
Jonathan
Salut,
Lors de l'entrée des données avec un apostrophe au lieu de les doubler, on
peut remplacer:
' ( touche 4 apha) par ` (touche 7 alpha + alt gr) avant l'enregistrement
dans la base de données avec:
Text1.text = Replace(Text1.text,"'","`")

Voila
@+
Jonathan
Avatar
Antoine Dinimant
Jonathan a écrit:
Salut,
Lors de l'entrée des données avec un apostrophe au lieu de les doubler, on
peut remplacer:
' ( touche 4 apha) par ` (touche 7 alpha + alt gr) avant l'enregistrement
dans la base de données avec:
Text1.text = Replace(Text1.text,"'","`")



Objection du littéraire outré : graphiquement, le `, càd l'accent grave,
c'est le signe inverse de l'apostrophe ! Si tu avais des problèmes avec
le é, tu le remplacerais par un è ?

Imagine le résultat : "qu`est-ce qu`t`as dans l`tête à c`t`heure ?"

Objection du contrôleur d'intégrité des données, outré lui aussi : et
par quoi remplaces-tu les ` ? parce que si on te suis, on ne peut plus
faire la différence entre un ' et un ` !
Par exemple, dans la littérature relative au C et à ses dérivés (PHP,
Perl, etc.), les guillemets ouvrants sont représentés* par `` (deux
accents graves) et les fermants par '' (deux apostrophes). Une citation
doit donc être présentée ainsi :

``quand c'est précis, j'apprécie''

ce qui deviendrait, avec ton système :

``quand c`est précis, j`apprécie``

A mon sens, il n'y a pas d'autre solution que d'utiliser les
"échappements" standard, et en SQL on échappe l'apostrophe en la doublant.

* sans doute pour différencier les citations du texte lui-même des
chaînes entre "" ou '' dans le code ? si qqn en sais plus sur cette
étrange coutume typographique, merci de m'éclairer !
Avatar
JeanPaul
Je ne sais pas si j'ai bien compris le problème, mais si c'est ce que je
pense, voici la solution.

Exemple: Si on écrit ceci , l'éditeur lui même refuse d'accepter l'égalité
= """

Private Sub Command1_Click()
If Right$(Text1.Text, 1) = """ Then
MsgBox "Il y a des guillemets à la fin"
End If
End Sub

Si on remplace par = Chr(34) Then

tout va très bien.
En espérant avoir rendu service
Jean Paul
Avatar
Louise Desbiens
Bonjour
Replace ne peut fonctionner
dans ma base les entrés on des accents et des apostrophe

EX:
Aile 500 (D'aiguillon)


"Christophe QUEVAL" a écrit dans le
message de news:
Utilisez la fonction REPLACE

R.Open "SELECT * From Département WHERE ((Département='
> " & _
> Replace(ListSélection.List(x), "'", "''") & " ') AND
([Col2]=" & _
> frmListe.cmbBâtiment & "))", DB, adOpenStatic,
> adLockOptimistic


Un conseil : évitez les noms de champs, contrôles, variables... avec des
accents afin d'améliorer la portabilité de votre code et de vos bases de
données. :-)

Christophe

"Louise Desbiens" a écrit dans le message


de
news:jYsyc.56063$
> Bonjour à tous,
>
> Voici mon problème
>
> voici ma requête
>
> R.Open "SELECT * From Département WHERE
((Département='
> " & _
> ListSélection.List(x) & " ') AND ([Col2]=" & _
> frmListe.cmbBâtiment & "))", DB, adOpenStatic,
> adLockOptimistic
>
> la valeur de ListSélection.List(x) égual : Aile 500 (D'aiguillon)
>
> ce que la requête donne en texte
>
> "SELECT * From Département WHERE ((Département='Aile 500
(D'aiguillon)')
> AND ([Col2]=3))"
>
> comme vous voyer il a 3 fois ' (Apostrophe)
>
> dans ma requête et sa me fait une erreur
>
> Quand j'utilisais une ouverture en access je n'avais pas de problème
> 'Access
> DB.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "


&
> strCheminBase & strNomBase
>
> parce que j'utilisais des triple guillemet guillemet
> R.Open "SELECT * From Département WHERE
> ((Département=""" & _
> ListSélection.List(x) & """) AND ([Col2]=" & _
> frmListe.cmbBâtiment & "))", DB, adOpenStatic,
> adLockOptimistic
>
> ex:
> ici et ici
> "SELECT * From Département WHERE ((Département="Aile 500
(D'aiguillon)")
> AND ([Col2]=3))"
>
>
> Mais depuis j'utilise
> 'ODBC
> DB.Open "Provider=MSDASQL.1;Persist Security
Infoúlse;Data
> Source=surgest;Initial Catalog=" &
> il aime pas les triples guillemet
>
> Quoi faire pour solutionner se problème??? :O(
>
> J'espère que vous comprenez mon problème
>
>
> Merci à tous ceux qui peut me répondre
>
> Yves
>
>
>




Avatar
Louise Desbiens
Bonjour
Ton truc est bon mais
dans ma base de données les entrés on des accents et des apostrophe

EX:
Aile 500 (D'aiguillon)


"Jonathan" a écrit dans le message de
news:40caf3ff$0$19708$
Salut,
Lors de l'entrée des données avec un apostrophe au lieu de les doubler, on
peut remplacer:
' ( touche 4 apha) par ` (touche 7 alpha + alt gr) avant l'enregistrement
dans la base de données avec:
Text1.text = Replace(Text1.text,"'","`")

Voila
@+
Jonathan




Avatar
Louise Desbiens
Bonjour,
Je comprend se que il voulais dire

remplacer les ' par ` c'est correct on ne l'utilise pas seul (`) dans la
langue française

Mais ma base existe déjà avec les accents

Yves






"Antoine Dinimant" a écrit dans le message de
news:
Jonathan a écrit:
> Salut,
> Lors de l'entrée des données avec un apostrophe au lieu de les doubler,


on
> peut remplacer:
> ' ( touche 4 apha) par ` (touche 7 alpha + alt gr) avant


l'enregistrement
> dans la base de données avec:
> Text1.text = Replace(Text1.text,"'","`")

Objection du littéraire outré : graphiquement, le `, càd l'accent grave,
c'est le signe inverse de l'apostrophe ! Si tu avais des problèmes avec
le é, tu le remplacerais par un è ?

Imagine le résultat : "qu`est-ce qu`t`as dans l`tête à c`t`heure ?"

Objection du contrôleur d'intégrité des données, outré lui aussi : et
par quoi remplaces-tu les ` ? parce que si on te suis, on ne peut plus
faire la différence entre un ' et un ` !
Par exemple, dans la littérature relative au C et à ses dérivés (PHP,
Perl, etc.), les guillemets ouvrants sont représentés* par `` (deux
accents graves) et les fermants par '' (deux apostrophes). Une citation
doit donc être présentée ainsi :

``quand c'est précis, j'apprécie''

ce qui deviendrait, avec ton système :

``quand c`est précis, j`apprécie``

A mon sens, il n'y a pas d'autre solution que d'utiliser les
"échappements" standard, et en SQL on échappe l'apostrophe en la doublant.

* sans doute pour différencier les citations du texte lui-même des
chaînes entre "" ou '' dans le code ? si qqn en sais plus sur cette
étrange coutume typographique, merci de m'éclairer !



Avatar
Louise Desbiens
Salut

Sa ne peut fonctionner

sa ferais 3 guillemets dans ma requete

Yves



"JeanPaul" a écrit dans le message de
news:cahe0j$j44$
Je ne sais pas si j'ai bien compris le problème, mais si c'est ce que je
pense, voici la solution.

Exemple: Si on écrit ceci , l'éditeur lui même refuse d'accepter


l'égalité
= """

Private Sub Command1_Click()
If Right$(Text1.Text, 1) = """ Then
MsgBox "Il y a des guillemets à la fin"
End If
End Sub

Si on remplace par = Chr(34) Then

tout va très bien.
En espérant avoir rendu service
Jean Paul




Avatar
Antoine Dinimant
Louise Desbiens a écrit:
Bonjour
Replace ne peut fonctionner
dans ma base les entrés on des accents et des apostrophe

EX:
Aile 500 (D'aiguillon)



ça ne pose aucun problème !

le replace revient à écrire
R.Open "Select * ... Where ... Col2 = 'Aile 500 (D''aiguillon')"

et la BDD comprendra bien que la Col2 doit être Aile 500 (D'aiguillon)

encore une fois, c'est la façon normale en SQL d'écrire des apostrophes
dans une chaîne entre apostrophes ! c'est un problème aussi vieux que le
SQL lui-même, il a une solution standard, inutile de réinventer des
bidouilles plus ou moins douteuses !