|
|
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
В Ehlib если очень удобные пик-листы, основанные на TStrings. Они прекрасно работают с целочисленными и строчными ключами. Но иногда в БД приходится работать с ключами бинарного типа, н-р binary(8 , 16). В том же 1C или различных телефониях. Конечно можно преобразовывать байты в тхт-строку, но тогда будет проблема живого редактирования полей. Кто как решал подобную проблему ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2020, 11:23 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
L_argo Кто как решал подобную проблему ? Например, lookup поля использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2020, 12:18 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
wadman L_argo Кто как решал подобную проблему ? Например, lookup поля использовать. Хотелось бы поискать способ использования сабжа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2020, 12:25 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
L_argoОни прекрасно работают с целочисленными и строчными ключами. Как они работают с целочисленными ключами? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2020, 13:44 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov L_argoОни прекрасно работают с целочисленными и строчными ключами. Текстом пишешь в KeyItems значения ключа и он работает с целочисленным полем датасета. Очень удобно в живом гриде делать минисправочники. Или я неправильно понял вопрос ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2020, 17:08 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
L_argo Конечно можно преобразовывать байты в тхт-строку, но тогда будет проблема живого редактирования полей. Что за проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2020, 17:16 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
ъъъъъ L_argo Конечно можно преобразовывать байты в тхт-строку, но тогда будет проблема живого редактирования полей. Что за проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2020, 19:00 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
Написать обработчик TField.SetText не поможет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2020, 19:16 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
L_argo ъъъъъ пропущено... Что за проблема? Да как хочешь. В OnGetTex/OnSetText. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2020, 19:17 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
Michael Longneck Написать обработчик TField.SetText не поможет? По непонятной причине пишет ошибку: Invalid variant type or size for field 'хххх' юзаю FireDAC. Поле Binary(1) mssql в датасете типа TBytesField. Передаю в него правильный Variant из одного байта. в OnSetText пишу: Sender.Value := HexToVar(Text); HexToVar возвращает variant. Пробовал передать и явный байт. И с явным приведением Sender.AsVariant. Тож самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2020, 12:46 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
L_argo По непонятной причине пишет ошибку: L_argo, можно, конечно, сделать, чтобы "получилось". Но - скажи, на кой чёрт вообще это нужно - ключевые поля "руками" редактировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2020, 12:55 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
ъъъъъ L_argo По непонятной причине пишет ошибку: L_argo, можно, конечно, сделать, чтобы "получилось". Но - скажи, на кой чёрт вообще это нужно - ключевые поля "руками" редактировать? Ссылки на пункты справочника. Чтобы удобно в гриде менять значение с помощью выпадающего списка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2020, 13:03 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
L_argo ъъъъъ пропущено... L_argo, можно, конечно, сделать, чтобы "получилось". Но - скажи, на кой чёрт вообще это нужно - ключевые поля "руками" редактировать? Ссылки на пункты справочника. Чтобы удобно в гриде менять значение с помощью выпадающего списка. Неужели это удобно - из базы извлекать значения ключевых и отображаемых полей, преобразовывать их в текст и засовывать в keylist/picklist комбо-поля TDBGridEh? Вместо того, чтобы просто указать лист-датасорц лукап-поля? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2020, 13:25 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
L_argo Ссылки на пункты справочника. Чтобы удобно в гриде менять значение с помощью выпадающего списка. А сами "бинарные" поля в гриде ты как отображаешь? В "бинарном" виде, или как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2020, 13:41 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
ъъъъъ L_argo пропущено... Не ключевые поля, а поля с внешними ключами. Ссылки на пункты справочника. Чтобы удобно в гриде менять значение с помощью выпадающего списка. Неужели это удобно - из базы извлекать значения ключевых и отображаемых полей, преобразовывать их в текст и засовывать в keylist/picklist комбо-поля TDBGridEh? Вместо того, чтобы просто указать лист-датасорц лукап-поля? В некот. случаях минисправочника в БД вообще нет (н-р Муж/Жен, Да/Нет, или дни недели). Есть подготовленные списки ключ/значение. Я ответил на вопрос "для чего ?" ? :) Осталось найти ответ, почему выдает ошибку в OnSetText.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2020, 13:42 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
ъъъъъ L_argo Ссылки на пункты справочника. Чтобы удобно в гриде менять значение с помощью выпадающего списка. А сами "бинарные" поля в гриде ты как отображаешь? В "бинарном" виде, или как? пысы: Пиклист не у поля, а у колонки грида. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2020, 13:47 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
L_argo Да, удобно. Это делает простая процедура. Ясно, ты научился "как-то", и другие способы "не катят". Не за горами вопрос: "Долго отображается форма, что делать?". Ну да ладно, не моё дело. ~~~~~~~~~~~~~~ L_argo Осталось найти ответ, почему выдает ошибку в OnSetText.... юзаю FireDAC. Поле Binary(1) mssql в датасете типа TBytesField. У меня нет FireDac но вообще новых Дельфей, но я бы попробовал: Код: pascal 1. 2. - и по результатам действовал дальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2020, 14:09 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
L_argo, я просто подумал, возможно и не в DBGridEh дело вообще. Вот попробуйте, сможете ли выполнить (где DS - это ваш датасет) прямо из кода что-нибудь вроде Код: pascal 1. 2. 3. 4. ведь если так не пройдет, значит придется колдовать вокруг датасета ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2020, 14:16 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
ъъъъъ, TField.SetData() действительно помогла. Спасибо ! . Как-то упустил этот способ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2020, 14:20 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
Кроик Семён Код: pascal 1. У него тестовое поле размером в 1 байт...не всякий символ в 1 байт того... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2020, 14:20 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
Кроик Семён L_argo, я просто подумал, возможно и не в DBGridEh дело вообще. Вот попробуйте, сможете ли выполнить (где DS - это ваш датасет) прямо из кода что-нибудь вроде Код: pascal 1. 2. 3. 4. ведь если так не пройдет, значит придется колдовать вокруг датасета Кстати интересный прикол, если кому интересно: Если явно не объявить первичные ключи в свойствах датасета, то ФайрДАК пытается сам найти первичные ключи. Но если в конструкции FROM имя таблицы идет в следующей строке, то этот поиск оказывается неудачным и ФайрДАК фейлит живой апдейт. Правда фейлит не всегда. Пока закономерности не нашел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2020, 14:28 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
L_argo Если явно не объявить первичные ключи в свойствах датасета, то ФайрДАК пытается сам найти первичные ключи. Но если в конструкции FROM имя таблицы идет в следующей строке, то этот поиск оказывается неудачным и ФайрДАК фейлит живой апдейт. Правда фейлит не всегда. Пока закономерности не нашел. У файрдака автоматика вообще иногда странно работает. Особенно на всяких RefreshRecord(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2020, 15:17 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
alekcvpУ файрдака автоматика вообще иногда странно работает. Особенно на всяких RefreshRecord(). Поэтому лучше положить UpdateSQL и всё написать самому. Гораздо надёжнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2020, 11:40 |
|
||
|
Ehlib и ключи бинарного типа.
|
|||
|---|---|---|---|
|
#18+
Michael Longneck alekcvpУ файрдака автоматика вообще иногда странно работает. Особенно на всяких RefreshRecord(). Поэтому лучше положить UpdateSQL и всё написать самому. Гораздо надёжнее Апдейты я и так руками делаю через отдельный query (не люблю редактирование в датасетах). А вот как для RefreshRecord свой SQL написать?.. Собственно там даже писать ничего не надо, только один Where добавить, но он не справляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2020, 12:07 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40018752&tid=2037851]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 368ms |

| 0 / 0 |
