|
|
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
Есть SQL запрос типа Код: sql 1. 2. 3. 4. 5. 6. в процессе работы программы нужно добавить Код: sql 1. Это связано с тем, что в каждом столбце сетки, как у cxGrid есть встроенная строка фильтрации по данному столбцу. У UniQuery у persistent-полей есть возможность добраться до TField UniDBGrid.Columns[I].Field. Вот такая предыстория. Т.е. фактически вопрос состоит в том, есть ли готовая встроенная возможность получить реальное имя поля у TField? По идее, есть Field.Origin: http://docwiki.embarcadero.com/Libraries/XE6/en/Data.DB.TField.Origin Но TField.Origin возвращает пустую строку всегда Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2020, 22:40 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
Нашел ещё Код: pascal 1. 2. 3. 4. 5. 6. 7. но ActualName возвращает пустое значение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2020, 23:19 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
X11 Нашел ещё Код: pascal 1. 2. 3. 4. 5. 6. 7. но ActualName возвращает пустое значение если использовать кошерный каст, то можно избежать многих ошибок: Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 11:41 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
b0rk, а это не одно и то же TCRFieldDesc(...FieldByName); и FieldByName as TCRFieldDesc; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 12:06 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
b0rk Код: pascal 1. error Incompatible types: 'TField' and 'TCRFieldDesc' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 12:08 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
X11 Есть SQL запрос типа Код: sql 1. 2. 3. 4. 5. 6. в процессе работы программы нужно добавить Код: sql 1. Это связано с тем, что в каждом столбце сетки, как у cxGrid есть встроенная строка фильтрации по данному столбцу. У UniQuery у persistent-полей есть возможность добраться до TField UniDBGrid.Columns[I].Field. Вот такая предыстория. Т.е. фактически вопрос состоит в том, есть ли готовая встроенная возможность получить реальное имя поля у TField? По идее, есть Field.Origin: http://docwiki.embarcadero.com/Libraries/XE6/en/Data.DB.TField.Origin Но TField.Origin возвращает пустую строку всегда Код: pascal 1. На последней доступной версии UniDAC 8.1.2 вам следует использовать свойство TUniQuery.Options.FieldOrigins. TFieldOrigins это перечисление (foNone, foField, foTableAndField, foTableAliasAndField) и значение пор умолчанию foNone, поэтому TField.Origin возвращает пустую строку. Для решения вашей задачи вам следует установить свойство TUniQuery.Options.FieldOrigins в значение отличное от foNone. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 12:47 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
devart На последней доступной версии UniDAC 8.1.2 В последней доступной МНЕ или в последней доступной сейчас на сайте? Просто моя лицензия закончилась в ноябре. Насколько я понял, я успел скачать версию 8.0.1. И в в этой версии моя проблема не решится, правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 13:17 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
X11 devart На последней доступной версии UniDAC 8.1.2 В последней доступной МНЕ или в последней доступной сейчас на сайте? Просто моя лицензия закончилась в ноябре. Насколько я понял, я успел скачать версию 8.0.1. И в в этой версии моя проблема не решится, правильно? Данное свойство было добавлено в UniDAC 7.3.10 от 17 сентября 2018 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2020, 13:27 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
А в Options есть есть такое же. И оно может иметь отличное от свойства значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2020, 18:20 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
X11 А в Options есть есть такое же. И оно может иметь отличное от свойства значение. Мы уже исправили данное поведение. Данное изменение вошло в UniDAC 8.1.2, который доступен для скачивания на нашем сайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2020, 14:13 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
доступно но только после оплаты лицензии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2020, 14:24 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
в запросе есть поле Код: sql 1. 2. 3. 4. 5. 6. В общем, в origin попадает "CAST" и получается в итоге Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2020, 20:33 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
X11 В общем, в origin попадает "CAST" Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2020, 21:00 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
Проблема в том, что там может быть больше одного поля, у меня их на данный момент два. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2020, 21:11 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
В общем, решил проблему с помощью вычисляемых полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 13:56 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
Странно, в запросе CASE нету. Код: sql 1. 2. 3. 4. 5. 6. а origion выдет название поля CASE вместо DELETED или C.DELETED. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 14:06 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
X11 а origion выдет название поля CASE вместо DELETED или C.DELETED. Код: sql 1. 2. 3. что получится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 14:31 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
Я понял почему. Заполняется свойство ORIGIN, и если ты меняешь запрос, то и persistent-поле нужно пересоздавать, иначе там старое значение. Я так думаю, что свойство ORIGIN можно и самом заполнять ручками? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 14:56 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
X11 если ты меняешь запрос, то и persistent-поле нужно пересоздавать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 15:10 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. Мы заполняем значения свойства Origin для полей набора данных на основании информации, которую нам возвращает сервер для колонок SQL выражения. Для колонки CLIENTS_COUNT сервер не вернет никакой информации о таблице. Поэтому в свойстве Origin может быть только псевдоним колонки. Если Вы установили свойству FieldOrigins значение foTableAliasAndField, и для поля "CLIENTS_COUNT" в наборе данных свойство Origin не равно "CLIENTS_COUNT", тогда вы можете написать нам в поддержку и мы обязательно исследуем такое поведение UniDAC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 18:11 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
Подскажите, а в какой момент заполняется свойство Origin? При создании persistent-поле в дизайне или во время исполнения программы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 20:35 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
X11, В фибах есть такая функция GetFieldByAlias , которая примерно тем и занимается, что вытаскивает имя поля или целое выражение из SQL-запроса по алиасу поля. Бывает что ошибается, просто надо помнить, что выражение должно быть целиком заключено в скобки. На самом деле - это некий текстовый парсер, который как-то что-то вытаскивает из текста запроса. Можно, наверное, целиком заюзать эту функцию и в унидаках, если у них такой нет. А может в унидаках тоже что-то похожее есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 07:41 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
devart Мы заполняем значения свойства Origin для полей набора данных на основании информации, которую нам возвращает сервер для колонок SQL выражения. т.е. SQL-сервер САМ парсит SQL запрос программиста? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 12:59 |
|
||
|
UniQuery получить реальное имя поле по всевдониму
|
|||
|---|---|---|---|
|
#18+
20.02.2020 12:59, X11 пишет: > т.е. SQL-сервер САМ парсит SQL запрос программиста? us! а как же иначе то?! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 13:01 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=58&tid=2038567]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
151ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 493ms |

| 0 / 0 |
