AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Firedac Problem beim Zeichen &

Ein Thema von Kostas · begonnen am 1. Mär 2024 · letzter Beitrag vom 1. Mär 2024
Antwort Antwort
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.063 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Firedac Problem beim Zeichen &

  Alt 1. Mär 2024, 11:21
Hallo Zusammen,

Ich habe eine TFDQuery mit dem Inhalt:
Code:
select first 1000 k.*, k.BARZAHLER || k.BARZAHLER as BARZAHLER1
from KUNDEN k
where (k.AUSBLENDEN='N')
&dwhere
Wenn nach etwas gesucht wird, wird ein Macro erzeugt:
Code:
    dwhere := ' and ((k.FIRMA containing '''+dwhere+''') or ( k.ZUSATZ containing '''+dwhere+''' ) or ( k.ZUSATZ2 containing '''+dwhere+''' ))';

    qrKunden.MacroByName('dwhere').AsRaw := dwhere;

Jetzt gebe ich als Suchbegriff: C&T um die Firma C&T GmbH zu finden. Ich bekomme alles mögliche jedoch nicht die Firma. Suche ich jedoch nach C& wird C&T GmbH gefunden.

In dem unten stehenden Artikel ist beschrieben wie man mit solchen Zeichen umgehen soll.

Zitat:
Setzen Sie für "!", "&", "{", "}" ResourceOptions.MacroCreate, MacroExpand und EscapeExpand auf False.
https://docwiki.embarcadero.com/RADS...stext_(FireDAC)

Wenn ich das mache, kann ich kein Macro verwenden.
Auch wenn ich das SQL direkt als Where aufbaue, funktioniert es ebenfalls nicht wenn ich FireDac verwende. IBObjects hat damit keine Probleme. IBExpert hat damit auch kein Problem.

Hat jemand eine Idee?

Geändert von Kostas ( 1. Mär 2024 um 11:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.052 Beiträge
 
Delphi 12 Athens
 
#2

AW: Firedac Problem beim Zeichen &

  Alt 1. Mär 2024, 12:33
Hast du schon versucht, das & zu verdoppeln bevor du es dem Makrowert zuweist?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.203 Beiträge
 
Delphi 12 Athens
 
#3

AW: Firedac Problem beim Zeichen &

  Alt 1. Mär 2024, 12:52
Ja, entgegen anderen Frameworks, ersetzt FireDAC Makros auch innerhalb von Strings.

Escape von & und ! via \ , so wie es in nahezu jeder SQL-Language üblich ist.
http://docwiki.embarcadero.com/RADSt...text_(FireDAC)

Bei Makros innerhalb von Makros/Parameter eventuell doppelt/mehrfach Escapen, also \\&
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 1. Mär 2024 um 12:55 Uhr)
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.063 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Firedac Problem beim Zeichen &

  Alt 1. Mär 2024, 14:19
Hast du schon versucht, das & zu verdoppeln bevor du es dem Makrowert zuweist?
Sorry, hätte ich erwähnen sollen. Ja habe ich probiert. Auch mit C/&T, C\&T geht alles nicht.
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.063 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Firedac Problem beim Zeichen &

  Alt 1. Mär 2024, 14:20
auch // geht nicht.
ich habe vor dem zuweisen des Macros das & durch //& ersetzt, geht auch nicht.

Code:
' and ((k.FIRMA containing ''C//&T'') or ( k.ZUSATZ containing ''C//&T'' ) or ( k.ZUSATZ2 containing ''C//&T'' ))'
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.203 Beiträge
 
Delphi 12 Athens
 
#6

AW: Firedac Problem beim Zeichen &

  Alt 1. Mär 2024, 14:38
Backslash vs. Slash

\ nicht /
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.063 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Firedac Problem beim Zeichen &

  Alt 1. Mär 2024, 15:01
leider auch nicht. Das wir dals Macro übergeben:
Code:
' and ((k.FIRMA containing ''C\\&T'') or ( k.ZUSATZ containing ''C\\&T'' ) or ( k.ZUSATZ2 containing ''C\\&T'' ))'
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz