Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   ClientDataSet Filter mit Fieldnames die mit einer Zahl anfangen (https://www.delphipraxis.net/213538-clientdataset-filter-mit-fieldnames-die-mit-einer-zahl-anfangen.html)

lxo 14. Aug 2023 13:34

Delphi-Version: 11 Alexandria

ClientDataSet Filter mit Fieldnames die mit einer Zahl anfangen
 
Hallo,

ich habe ein ClientDataSet mit Fields die einen FieldName haben der mit einer Zahl anfängt.
Damit kommt wohl der Expression-Parser (Data.DBCommon.TExprParser) nicht klar.

Klar könnte ich einfach einen Buchstaben vorne dran setzen, aber gibt es da evtl. eine Lösung für?
Hab schon mit Quotes einfache und doppelte probiert aber geht auch nicht.



Delphi-Quellcode:
var
  lCDS: TClientDataSet;
begin
  lCds := TClientDataSet.Create( nil);
  try
    lCDS.FieldDefs.Add( '1A', ftFloat);
    lCDS.FieldDefs.Add( '1B', ftFloat);
    lCDS.CreateDataSet;
    lCDS.Filter := '(1A > 0) and (1B > 0)';
    lCDS.Filtered := True; // Im Projekt ... ist eine Exception der Klasse EDatabaseError mit der Meldung '')' erwartet, jedoch 'A' vorgefunden' aufgetreten.
  finally
    FreeAndNil( lCds);
  end;
end;
end;

himitsu 14. Aug 2023 13:45

AW: ClientDataSet Filter mit Fieldnames die mit einer Zahl anfangen
 
FeldBezeichner dürfen nicht mit Ziffern beginnen,

bzw., wenn es mit einer Ziffer beginnt, dann ist es eine Zahl und Zahlen enthalten keine Buchstaben.

lxo 14. Aug 2023 14:04

AW: ClientDataSet Filter mit Fieldnames die mit einer Zahl anfangen
 
Zitat:

Zitat von himitsu (Beitrag 1525601)
FeldBezeichner dürfen nicht mit Ziffern beginnen,

bzw., wenn es mit einer Ziffer beginnt, dann ist es eine Zahl und Zahlen enthalten keine Buchstaben.

Wo ist das denn definiert?
Grundsätzlich ist es ja kein Problem.
Nur z.B. beim Filter knallts.


TFDMemTable kommt damit übrigens klar wenn man den Feldnamen in doublequotes setzt.

Jasocul 14. Aug 2023 14:50

AW: ClientDataSet Filter mit Fieldnames die mit einer Zahl anfangen
 
Das dürfte in SQL-92 definiert sein.
Es gibt aber Datenbanken, die sich nicht daran halten. SQL-Server erlaubt meines Wissens sogar Leerzeichen.
Zitat:

Zitat von lxo (Beitrag 1525602)
TFDMemTable kommt damit übrigens klar wenn man den Feldnamen in doublequotes setzt.

Und wer will das und achtet immer darauf?
Abweichungen von solchen Basis-Standards führen bei einem Wechsel der DB oder beim Datenaustausch zu Problemen

himitsu 14. Aug 2023 17:07

AW: ClientDataSet Filter mit Fieldnames die mit einer Zahl anfangen
 
Es kommt auch drauf an, wie man es schreibt.
z.B. lassen sich in vielen DBMS Bezeichner auch escapen.

vielleich
Delphi-Quellcode:
lCDS.Filter := '("1A" > 0) and ("1B" > 0)';



PS: Das mit keine Ziffer am Anfang ist in vielen Sprachen so.
Auch Pascal/Delphi, JavaScript, PHP, Python, C++, ...............


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz