Получить реальное SQL-имя столбца

Discussion of open issues, suggestions and bugs regarding UniDAC (Universal Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
Akella
Posts: 8
Joined: Mon 02 Apr 2012 12:04

Получить реальное SQL-имя столбца

Post by Akella » Tue 11 Feb 2020 20:00

Нашёл эту тему
viewtopic.php?t=37293
но Delphi Tokyo говорит, что не знает ничего про SqlClassesUni и про TSqlFieldDesc.
У меня UniDAC 7.1.4, Firebird 3.
Есть ещё версия 8, но её я пока не устанавливал.

В общем, есть SQL запрос типа

Code: Select all

select 
a.id,
a.date_input,
USR.NAME USEREDIT_NAME,
from table1 a
LEFT JOIN USERS USR ON A.UID = USR.ID
в процессе работы программы нужно добавить

WHERE (lower(USR.NAME) LIKE '%вася%')


Есть ли готовая встроенная возможность получить реальное SQL-имя поля у TField (USR.NAME)?

По идее, есть Field.Origin:
http://docwiki.embarcadero.com/Librarie ... eld.Origin
Но TField.Origin возвращает пустую строку всегда
sFieldName := UniDBGrid.DataSource.DataSet.FieldByName(UniDBGrid.Columns.FieldName).Origin;

Спасибо.

Akella
Posts: 8
Joined: Mon 02 Apr 2012 12:04

Re: Получить реальное SQL-имя столбца

Post by Akella » Tue 11 Feb 2020 20:18

Нашел ещё

Code: Select all

Var
CRFieldDesc: TCRFieldDesc;
begin
...
..
      CRFieldDesc := TCRFieldDesc(UniDBGrid.DataSource.DataSet.FieldByName(UniDBGrid.Columns[I].FieldName));
      sFieldName := CRFieldDesc.ActualName;// пусто
но ActualName возвращает пустое значение

ViktorV
Devart Team
Posts: 3168
Joined: Wed 30 Jul 2014 07:16

Re: Получить реальное SQL-имя столбца

Post by ViktorV » Wed 12 Feb 2020 10:21

In the latest version 8.1.2 of UniDAC, you should use the property TUniQuery.Options.FieldOrigins. TFieldOrigins is an enumeration (foNone, foField, foTableAndField, foTableAliasAndField); the default value is foNone, therefore TField.Origin returns an empty string. To solve the defined task, you should set the property TUniQuery.Options.FieldOrigins to a value other than foNone.
Please use the Russion version of our forum for questions in Russion: ru

Post Reply