powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / view и домены
17 сообщений из 17, страница 1 из 1
view и домены
    #38714570
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!
В определении представления (view) есть такое поле
case when exists (подзапрос) then 1 else 0 end as имя_поля

Можно ли сделать, чтобы имя поля имело тот домен, который я хочу?

Зачем мне это надо?

Для редактирования сущностей у меня автоматически создаются вьюхи и формы для просмотра записи.
По домену поля определяется, какой контрол попадает на форму для поля.

Мне нужно, чтобы поле имело такой домен:

Код: sql
1.
CREATE DOMAIN SIMPLE_BOOLEAN AS INTEGER CHECK (value=1 or value=0 or value is null);



а у меня вместо него во вьюхе RDB$123123

Я, конечно, сделал возможность явно задать, что в этом поле чек-бокс, но это не вполне красиво получается.
...
Рейтинг: 0 / 0
view и домены
    #38714571
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Firebird 2.5.2
...
Рейтинг: 0 / 0
view и домены
    #38714616
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
budden> Можно ли сделать, чтобы имя поля имело тот домен, который я хочу?

Нет. Но нужно подумать, стоит ли завести соотв. тикет в трекере.
Впрочем, скорее всего это противоречит стандарту.

Как воркэраунд можно использовать PSQL-переменные (EB etc).

> Зачем мне это надо?
> ...
> По домену поля определяется, какой контрол попадает на форму для поля.
> Я, конечно, сделал возможность явно задать, что в этом поле чек-бокс ...

FIBPlus или самописка? Как вариант, можно сделать автоопределение
не по точному имени домена, а по подстроке в имени домена или поля.
Это немного топорно и не так красиво, но работает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
view и домены
    #38714622
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

Логично если есть cast к домену, то поле должно быть нужного домена.
Кроме того запрос вида
Код: sql
1.
select cast(2 as SIMPLE_BOOLEAN) from rdb$database


выдаст сообщение
авторvalidation error for CAST, value "2".
...
Рейтинг: 0 / 0
view и домены
    #38714630
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам, скорее самописка, хотя она поверх fibplus. Из fibplus мне на каком-то этапе удавалось достать инфу о типе исходного поля. Но в данном случае было некогда копаться и я счёл, что проще добавить своих метаданных.

В общем, для меня этот вопрос уже не особо актуален, но, наверное, было бы красивее, если бы create view реагировало на определения полей, содержащие cast.

Спасибо за обсуждение!
...
Рейтинг: 0 / 0
view и домены
    #38714631
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк Евгений> Логично если есть cast к домену, то поле должно быть нужного домена.

Не понял к чему это было сказано. Не имеют значения тип
каста и поля - они не наследуется, домен создаётся свой.

Впрочем, возможно и на этот счёт стоит покумекать над
созданием тикета - ничего плохого в наследовании домена
лично я не вижу, с ходу по крайней мере (ну разве что если
какие-то констрейнты/дефолты не подхватятся - не беда).

> Кроме того запрос вида выдаст сообщение
> validation error for CAST, value "2".

У меня почему-то не выдаёт. А должен?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
view и домены
    #38714633
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
budden> скорее самописка, хотя она поверх fibplus. Из fibplus мне на
budden> каком-то этапе удавалось достать инфу о типе исходного поля

Я имел в виду, что в какой-то из версий (довольно давно уже, вроде)
добавили "автобуленизацию" поля по наличию в имени/типе слова
boolean (или что-то в этом роде, подробностей не помню).

Свои метаданные хорошо, конечно, и даже лучше, но не для одного
сабжа, а если они вообще повсеместно в проекте используются, как ядро.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
view и домены
    #38714635
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buddenP.S. Firebird 2.5.2
Переходи на 3.0 и будет тебе настоящий булев тип без всяких заморочек с доменами и
магическими числами.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
view и домены
    #38714636
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамНе понял к чему это было сказано. Не имеют значения тип
каста и поля - они не наследуется, домен создаётся свой.
Если создать view на основе таблицы, то для полей с доменами, поля во view будут иметь такой же домен.
Логично, что если делаем cast к домену, то результат тот же домен. С учетом того что check для домена через cast работает.

Гаджимурадов РустамУ меня почему-то не выдаёт. А должен?
2.5.2
Код: sql
1.
2.
CREATE DOMAIN SIMPLE_BOOLEAN AS INTEGER CHECK (value=1 or value=0 or value is null);
select cast(2 as SIMPLE_BOOLEAN) from rdb$database


Получаю сообщение об ошибке указанное выше
...
Рейтинг: 0 / 0
view и домены
    #38714641
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк Евгений> Если создать view на основе таблицы, то для полей
Шавлюк Евгений> с доменами, поля во view будут иметь такой же домен.

А, ну да, но это не случай автора, увы.

Шавлюк Евгений> Логично, что если делаем cast к домену, то результат тот же домен.

Я об этом и говорю - я не вижу никаких
минусов и аргументов против соотв. тикета.
Это и стандарту не противоречит, вроде.

> Получаю сообщение об ошибке указанное выше

Так это рантайм-сообщение, я думал у тебя
парсер ошибку выдаёт. :) Не понял друг друга.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
view и домены
    #38714649
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buddenВ общем, для меня этот вопрос уже не особо актуален, но, наверное, было бы красивее, если бы create view реагировало на определения полей, содержащие cast.


Ну не знаю.Я у себя давным давно сделал отдельную табличку, где храню доп. информацию для сеток (заголовок, тип (для "исскуственных" полей типа boolean), ширину, видимость + кучка еще чего-то). В момент препарирования запроса просто выдергиваю нужную мне инфу и все. В принципе в том же FIB+ был репозиторий полей - чем не устраивает?
...
Рейтинг: 0 / 0
view и домены
    #38714756
Dzirt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк Евгений
Код: sql
1.
2.
CREATE DOMAIN SIMPLE_BOOLEAN AS INTEGER CHECK (value=1 or value=0 or value is null);
select cast(2 as SIMPLE_BOOLEAN) from rdb$database


Получаю сообщение об ошибке указанное выше
А если написать
Код: sql
1.
select cast(1 as SIMPLE_BOOLEAN) from rdb$database


тогда какое сообщение об ошибке? Сам же определил, что можно только 0, 1 или Null, а пихаешь 2.
...
Рейтинг: 0 / 0
view и домены
    #38714853
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster, такая табличка у меня тоже есть. Но я стараюсь пользоваться наиболее простыми решениями. Если информация о смысле поля может быть выражена доменом, это многое облегчает. Свои метаданные наворачиваю только тогда, когда это не выходит. В данном случае не вышло, метаданные пополнил.
...
Рейтинг: 0 / 0
view и домены
    #38714977
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
budden> Если информация о смысле поля может быть выражена доменом, это многое облегчает.
budden> Свои метаданные наворачиваю только тогда, когда это не выходит. В данном случае не вышло

Я вроде подсказал простой и эффективный способ с
проверкой подстроки в имени/типе поля...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
view и домены
    #38715231
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

А по мне - притянуто за уши... Анализировать имя, которое в общем случае имеет произвольное значение или вообще не несет смысловой нагрузки (блин, опять 1C на ум приходит ;) - неочевидно как-то...
...
Рейтинг: 0 / 0
view и домены
    #38715430
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам, так во вьюхе тип получается rdb$123123, его не проанализируешь. По имени поля - и так везде ужасные имена полей, учитывая ограничение на размер. Добавлять туда ещё префикс типа совсем не хочется. Да ничего, я эту проблему пережил уже, можно закрывать тему, в общем-то.
...
Рейтинг: 0 / 0
view и домены
    #38715675
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторvalue is null
не нужно, оно и так допускается
У меня такое объявление:
Код: sql
1.
CREATE DOMAIN DOM_BOOL AS SMALLINT CHECK (VALUE IN (0,1));
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / view и домены
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]