Bonjour à tous.
Je rencontre un problème très bizarre que je ne m'explique pas et qui m'embête beaucoup.
Je l'ai reproduit sur un simple petit exemple, un bouton qui ouvre un query. Dans la clause "WHERE" du question, on fait une recherche sur une valeur STRING qui contient un guillemet.
Voici mon code :
Le code comme ci-dessus fonctionne très bien et le résultat de la requête est juste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 procedure TForm1.Button2Click(Sender: TObject); Var NomSecteur,NomSecteurBDD : AnsiString; begin NomSecteur:='Contrôle d''entrée'; NomSecteurBDD:=StringReplace(NomSecteur,'''','''''',[rfReplaceAll, rfIgnoreCase]); Database1.Connected:=True; wwQueryUpdate.Close; wwQueryUpdate.SQL.Clear; wwQueryUpdate.DatabaseName:=DataBase1.DatabaseName; wwQueryUpdate.RequestLive:=False; wwQueryUpdate.SQL.Add('SELECT NO_ID,SECTEUR FROM SECTEURS'); wwQueryUpdate.SQL.Add('WHERE SECTEUR = '''+NomSecteurBDD+''''); wwQueryUpdate.Prepare; wwQueryUpdate.Open; wwQueryUpdate.Close; wwQueryUpdate.SQL.Clear; Database1.Connected:=False; end;
Par contre, si je change la ligne
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2wwQueryUpdate.RequestLive:=False;
L'ouverture de la requête me renvoie l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2wwQueryUpdate.RequestLive:=True;
Pour corriger ça, je dois encore une fois dédoubler les guillemets, donc rajouter la ligneGuillemet droit manquant.
en 3ème position.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 NomSecteurBDD:=StringReplace(NomSecteurBDD,'''','''''',[rfReplaceAll, rfIgnoreCase]);
Franchement je ne m'explique pas du tout ce comportement.
Avez-vous déjà vu ça ? Avez-vous une explication?
Merci d'avance
Excellente journée.
Noémie
Partager