Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как установить значение поля по умолчанию? Работа с IB из Delphi (IBX) 
:(
    Опции темы
Гость_Сергей
Дата 12.8.2005, 15:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











IB 7.5, приложение на Delphi черех IBX.

Как работает механизм значений по умолчанию для полей IB?

Если в таблице поле, для которого задано NOT NULL и значение по умолчанию, то каким образом это значение заносится?

1) При получении команды на фиксацию изменений записи от приложения, IB, в случае наличия в таком поле NULL, сама заменяет его на прописанное по умолчанию значение?

2) Или IB предварительно, по запросу, передает приложению это значение, и уже потом требует от него возврата конкретного, не NULL значения?


Связываю с таблицей компонет Delphi IBTable. В полях, для которых заданы значения по умолчанию и NOT NULL, сбрасываю флаг Requered (иначе IBTable будет требовать занесения значений в эти поля).
В таблице приложения заношу в поля значения, и оставляю нетронутыми поля, для которых в БД установлены значения по умолчанию. При попытке фиксации новой записи, выдается ошибка от IB, что значение не может быть NULL.

Еще пробовал играть со свойствами полей IBTable - DefaultExpression, BlanksToNULL и AutoGeneratedValue. Но к желаемому результату так и не пришел smile

Почитал немного описание IBTable, и наткнулся на упоминания о том, что вроде как сначала необходимо запросить у IB (Refresh, AutoRefresh) эти вот значения по умолчанию, указанные в описании таблицы, а затем передавать их вместе с записью.

Так как же все-таки заставить работать значения по умолчанию?
  Вверх
Гость_Сергей
Дата 13.8.2005, 10:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Или IBTable вне зависимости от заполненности полей посылает всегда INSERT с полным списком полей и VALUES?

Тогда для чего нужны свойства BlanksToNULL и AutoGeneratedValue?

И почему никак не работает DefaultExpression?
  Вверх
Alex
Дата 13.8.2005, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 7
Всего: 162



Модератор: Пожалуйста, один топик - один вопрос.


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
SergeBS
Дата 5.9.2005, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: нет
Всего: 22



Каша у тебя в голове smile. Значение по умолчанию - это то значение, которое получит поле, если ты введешь новую запись и этому полю значения не присвоишь. Если присвоишь - то что присвоишь, то и будет. Пример:
Пусть поле def0 - по умолчанию = 1
insert into tbl (a,b,def0) values ( 3,5,2)
присвоит def0 значение 2.
insert into tbl (a,b) values ( 3,5)
- def0 получит значение по умолчанию = 1. Все корректно.
Nul - not Null тут не при чем. Либо присваиваешь значение величине в новой записи, либо нет.
А уже при коммите - есть присвоенное значение или нет.
Hint: если ты не присвоил переменной значение, это не значит, что ты присвоил ей Null.
Допустим ты ничего не присвоил.
Тогда если может быть null - останется null. Есть default -> default. Not null и нет default - получишь по мордам от сервака, что должен был что-то присвоить, что - он без понятия, а не присвоил.

С прочим разберемся позже. Я домой пошел.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0451 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.