🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi.bazy-danych
Article #82702

Re: FireDAC, TField.Origin

#82702
From: wloochacz
Date: Fri, 05 Aug 2016 12:40
65 lines
3352 bytes
W dniu 2016-08-04 o 12:45, Trawnik pisze:
> Cześć,
> Delphi 10.1 Berlin
> FDQuery, takie samo zapytanie do wszystkich baz:
> select nazwisko_osoby as "Nazwisko osoby" from osoby;
>
> Dla utworzonego obiektu takiej kolumny property TField.Origin przyjmuje
> różne wartości w zależności od silnika bazy:
> dla Firebird 2.5.5 TField.Origin = nazwisko_osoby  <-- OK
W nazwie tej kolumny nie ma spacji, gdyby była byłoby tak samo jak w Oracle.

> dla Oracle 11.2.0.4 TField.Origin = "Nazwisko osoby"  <-- ŹLE
Dobrze.

> dla MS SQL 2005 TField.Origin = [Nazwisko osoby]  <-- ŹLE
I tu też DOBRZE.

Pojechałeś trochę za daleko - po pierwsze kto normalny wkłada spacje do 
nazwy obiektów w bazie danych?
Da się, ale...

A po drugie - jak już masz tę spację, to jak sobie wyobrażasz napisanie 
SQL z taką kolumną bez użycia kwalifikatora identyfikatora?
Takie zapytanie nie przejdzie z oczywistych względów:
select * from tab
order by Nazwisko osoby

ale takie:
select * from tab
order by [Nazwisko osoby] jest prawidłowe dla MSSQL. Dla Oracle/FB 
będzie to podwójny cudzysłów.


> Zgodnie z dokumentacją "TField.Origin indicates the name of the field in
> its original database table".
No i to jest ZGODNE z tym co jest napisane.
A napisane masz "name of the field in its original database table" a nie 
w SelectSQL, prawda?
Prawda.

Jak masz spację w nazwach, to masz kłopot.

> Jakieś sugestie? Wszystkie mile widziane.
> Pozdrawiam,
Sugestia jest taka, że nie da rady tego zrobić bo tak działa FireDAC i 
koniec.
Dawno temu dyskutowałem na ten temat z Dymitrym i dowiedziałem się, że 
się nie da, bo ta informacja jest wykorzystywana przez 
SQLCommandGenerator i jak wpiszesz tam... wróć - zapędziłem się. Nie o 
to pytałeś :)

A więc sugestia jest taka: NIE UŻYWAJ SPACJI.

A nie wiem czy wiesz, ale żeby takie zapytanie poprawnie odpalić w 
FireDAC na różnych bazach danych (bo różne silniki wymagają różnych 
kwalifikatorów dla identyfikatora) musisz je odpowiednio zapisać w 
FireDAC, czyli tak:

select * from tab
order by {id Nazwisko osoby}

Poza tym, wszystko jest w dokumentacji...

-- 
wloochacz
Technical Details
Message-ID: <57a48955$0$15206$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!cyclone01.ams2.highwinds-media.com!voer-me.highwinds-media.com!peer01.am1!peering.am1!peer03.fr7!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <57a31d68$0$639$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!cyclone01.ams2.highwinds-media.com!voer-me.highwinds-media.com!peer01.am1!peering.am1!peer03.fr7!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Subject: Re: FireDAC, TField.Origin
Newsgroups: pl.comp.lang.delphi.bazy-danych
References: <57a31d68$0$639$65785112@news.neostrada.pl>
From: wloochacz <wloochacz@no.spam.gmail.com>
Date: Fri, 5 Aug 2016 14:40:53 +0200
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0
MIME-Version: 1.0
In-Reply-To: <57a31d68$0$639$65785112@news.neostrada.pl>
Lines: 65
Message-ID: <57a48955$0$15206$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 79.186.26.130
X-Trace: 1470400853 unt-rea-a-02.news.neostrada.pl 15206 79.186.26.130:49377
X-Complaints-To: abuse@news.neostrada.pl
X-Received-Body-CRC: 2666234953
X-Received-Bytes: 3224
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit