У меня есть сомнения по поводу свойства TField
Origin
.
Документация гласит:
Origin
назначено только во время разработки редактором полей и только тогда, когда компонент поля используется объектом TQuery
. Свойство Origin
отличает имя поля, отображаемое в его наборе данных, от имени поля в базовой таблице, на которой оно основано. Например, в запросе, использующем следующую инструкцию SQL, значение Origin
равно CUSTOMER.CUSTNO
.
SELECT CUSTNO AS ID FROM CUSTOMER
В этом случае свойство FieldName
равно ID.
Примечание: Origin
недоступно на Linux. Свойство Origin
реализовано только для наборов данных с поддержкой BDE>, которые появляются только в продукте Windows.
Но что, если текст SQL содержит псевдонимы таблиц?
SELECT C.CUSTNO AS ID FROM CUSTOMER C
Стоит ли ожидать Origin
значение CUSTOMER.CUSTNO
или C.CUSTNO
?
Справочная информация:
Я использую Dev Express TcxDBFilterControl
который использует свойство Origin
поля (в TcxDBFilterControl.GetExpressionFieldName
, то есть if Origin <> ''
) вместо свойства FieldName
для составления текста условия SQL. TpFIBDataSet
устанавливает Origin
на CUSTOMER.CUSTNO
вместо C.CUSTNO
, поэтому мне интересно, если это проблема TpFIBDataSet
(которая должна была установить Origin
на C.CUSTNO
) или это TcxDBFilterControl
проблема (которая не учитывает наличие псевдонимов в тексте SQL).