![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
не отображаются значения по умолчанию [D5, Oracle, ]
victor © (2001-12-25 06:55:00)почему при переходе на новую запись не отображаются значения по умолчанию, пробовал через default в самом оракле 8.16, и через delphi DefaultExpression
использую odac 2.50 - может в нем какие то особенности, потому что через BDE с Парадоксом у меня все получалось
Mick (2001-12-26 10:20:00) [1]Хотя я знал людей, которые чат реализовывали на IB и его евентах
Mick (2001-12-26 08:52:00) [2]>Alexandr
"..на сервере этот default задается чтоб точно был и никуда случайно не делся так сказать для надежности."
Сто раз нет и еще один раз нет.
Например пользователь в приложении стирает значение, которое вы ему вытянули и на сервер улетает запрос, который вставит NULL в поле.
Или поле перечислено в запросе "Insert into ... при вставке записи в третьем приложении.
И при этом поле, имеющее атрибут, Dеfault очень даже "куда-нибудь денется".
Для этих целей всегда служили NOT NULL, CHECK и т.д. но только не Dafault.
Задача, которую решал автор вопроса решается модулем MyConstants.pas и обработчиками событий датасета.
Либо вообще не вставлять это поле с клиента.
PS Неленивый писатель это похвально. Но неленивый читатель - это полезнее.
Alexandr (2001-12-25 13:48:00) [3]это workAround
на сервере этот default задается чтоб точно был и никуда случайно не делся так сказать для надежности.
А на клиенте дублируется чтоб все красиво было.
В чем проблема?
Будет тормозить? Возможно... Но на глаз незаметно. Будет ниже надежность -нет.
Вломы писать?- а вообще программу не вломы писать?
а Default значения нужны для сохранения логики сервера, а не для того что бы клиент эти поля не перечислял
Yuvich (2001-12-25 13:46:00) [4]Взять дефолтовое значение можно так:
SELECT column_name, data_default FROM all_tab_columns WHERE owner = "..." and table_name = "..."
ODAC берет дефолтовое значение начиная с версии 3.хх
Mick (2001-12-25 13:42:00) [5]Следите за ходом мысли:
Зачем нужны Default значения полей? Для того чтобы КЛИЕНТ мог в Insert Into ... не перчислять эти поля и СЕРВЕР вставил бы сам эти дефолтные значения.
Теперь что хотите вы:
При вставке новой записи иметь db-Aware контрол связанный с полем имеющим дефолтное значение и чтобы в этом контроле было это самое дефолтное значение.
При этом BDE формирует запрос Insert Into ..., в котором в списке вставляемых полей есть это наше поле со значением, присвоенным в клиенте.
Возвращаемся в начало и спрашиваем себя: На кой леший мы делали поле c default значением, если пишем данные в него с клиента?
Alexandr (2001-12-25 12:58:00) [6]или как бы всталять default значения на клиенте в событии OnAfterInsert
вот откуда их брать? Можно конечно из базы вытащить каким-нибудь сложным запросом, а можно просто продублировать задание значения в программе
Mick (2001-12-25 12:53:00) [7]Не вставлять данные в гриде
victor (2001-12-25 12:06:00) [8]и как быть???
Mick (2001-12-25 08:37:00) [9]Потому что при "переходе на новую запись" в оракле еще нет дефолтного значения поля.