![]() |
|
|
![]()
|
|
| Dimyan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 441 Регистрация: 12.1.2004 Где: Новосибирск Репутация: нет Всего: 4 |
InterBase
есть поле типа DOUBLE PRECISION, в базе ему задано значение по умолчанию 0 считывается оно из базы в TQuery где ему в свойстве DefaultExpression так же задано значение по умолчанию 0 редактируется поле через TDBEdit и если в TDBEdit то поле почему то имеет значение null как будто ему по барабану что у него задано значение по умолчанию, как это исправить? как сделать чтоб 100% если я не ввел ничего в поле то оно автоматом было бы равно 0? -------------------- Как хорошо ничего не делать, а потом еще немного отдохнуть :) |
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
может параметр not null задать или что тоже самое непустое.?
|
|||
|
||||
| Dimyan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 441 Регистрация: 12.1.2004 Где: Новосибирск Репутация: нет Всего: 4 |
Bes, он задан, он то и ругается что вносится пустое(null) значение
-------------------- Как хорошо ничего не делать, а потом еще немного отдохнуть :) |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 5 Всего: 44 |
А перед редактированием в DBEdit '0' есть?
Если есть то нормальная ситуация, 0 присваивается полю при создании записи, а приредактировании, если ты его удаляешь то передается нальный параметр, а поле нот налл, вот и ошибка. предусмотри это в коде: if DBEdit.text='' then DBEdit.text:='0'; а если поле нальное при создании сроки и если ты все правильно сделал то этого не может быть... |
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
какая база? как создается? попробую у себя такое же сотворить.
|
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 17 Всего: 162 |
InterBase написано в первой строчке вопроса. Добавлено @ 22:03 Dimyan, если я правильно тебя понял, то у тебя была таблица, в которой одно поле оставалось, в некоторых ситуациях null теперь ты установил в базе данных значение по умолчанию для этого поля и не понимаешь, почему тебе по-прежнему возвращают null. Я правильно понял? -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Dimyan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 441 Регистрация: 12.1.2004 Где: Новосибирск Репутация: нет Всего: 4 |
Alex, ага
-------------------- Как хорошо ничего не делать, а потом еще немного отдохнуть :) |
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
Сорри с Интербейзом не работал, но я клоню к тому, что значение по умолчанию и ненулевое поле это две разные вещи и указываются в разных местах. ДАК МОЖЕТ ПОСТАВИТЬ NOT NULL????
|
|||
|
||||
| Dimyan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 441 Регистрация: 12.1.2004 Где: Новосибирск Репутация: нет Всего: 4 |
Bes, я же уже сказал что у меня установлено ограничение not null на это поле, но у меня есть для него значение по умолчанию и через клиенскую программу оно не задается
вот описание поля
-------------------- Как хорошо ничего не делать, а потом еще немного отдохнуть :) |
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
Блин, ничего не понимаю. Зачем поле у которого есть значение по умолчанию задавать через клиентскую программу. Или ты модифицирцешь таблицу через клиента или ты меняешь значение поля через клиента, тогда вопрос: когда утебя нулевое значение до модификации или после. При чем тут клиент-то? Или ты добавляешь запись и значение нуловое в новой записи?....??????????????????
|
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 5 Всего: 44 |
Dimyan я тебя понял, есть поля которые заполняются юзером, среди них твое хитрое поле которое если юзер заполнел должно иметь его значение иначе значение по умолчанию в товоем случае "0". Я повторюсь, наверника есть параметры которые ты передаешь в INSERT, среди них твое поле, которое может передаться нальным, если юзер его невписал в TEdit, здесь и ошибка т.к. это поле not null, а параметр передается null, это не обойти ни как кроме:
if DBEdit.text='' then pCell_In:=0; ParamByName('pCell_In').Values:=pCell_In; ExecSQL; или исключи этот параметр из INSERT, что как я понял тебе делать не надо. |
|||
|
||||
| Dimyan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 441 Регистрация: 12.1.2004 Где: Новосибирск Репутация: нет Всего: 4 |
DimW, спасибо сделал так как ты подсказал.
проверку по if правда это всеравно как то неправильно реализовано (имхо) я считаю это автоматом должно быть раз все указано -------------------- Как хорошо ничего не делать, а потом еще немного отдохнуть :) |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 5 Всего: 44 |
А по моему все верно, раз ты в инсерт включаешь это поле то оно пишется как оно есть, а ограничения только предупреждают что существует нарушение...
Ну сам посуди ты хочешь полю присвоеть значение '125', а оно ставит тебе '0' присваевает, ерунда правда... другое дело если ты его не укажишь в инсерте, то срабатывают значение поумолчанию + ограничения. Думаю проблема решена, но чувствую что ты остался не даволен и тот вариан что я передложил наверниака держал прозапас... |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 17 Всего: 162 |
Dimyan, нет не должно, все это значение по умолчанию учитывается только в момент добавления НОВОЙ записи, если в запросе на добавление ты не задал значение этого поля.
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |