Page 1 of 1

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

Posted: Tue 11 Feb 2020 20:00
by Akella
Нашёл эту тему
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;

Спасибо.

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

Posted: Tue 11 Feb 2020 20:18
by Akella
Нашел ещё

Code: Select all

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

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

Posted: Wed 12 Feb 2020 10:21
by ViktorV
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