Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как программно в DBGridEh'е запрещать, оставлять пустые записи


DelphiLexx ©   (2006-11-10 12:43:00) 

У меня DBGridEh связан через DataSource c FibDataSet'ом. Добвление новой записи в DBGridEh ведет не сразу к добавлению в БД, а после нажатия клавиши [B]OK[/B] формы. В БД на поле таблице (с которой мы и работает через DBGridEh) наложено ограничение Not Null. Если бы при добавлении записи в DBGridEh она сразу же отправлялась в БД, то отловить момент добавления записи с пустым полем не было проблем. Но у меня транзакция потдвержается только после нажатия кнопки [B]OK, которая закрывает форму[/B]. Поэтому в БД попадают записи с пустым полем. Вообщем как на уровне проги проверять добавление или изменение записи, чтобы не оказалось пустого поля, ну соотвестсвенно выдавать пользователю сообщение о пустом поле.


ANB   (2006-11-10 17:06:00) [1]


> А что за СУБД? можно триггером запретить.

Триггером некошерно. Зачем, если есть ограничения ?


Desdechado   (2006-11-10 16:59:00) [2]

> можно триггером запретить.
Одно другому не мешает.
Но доставать СУБД мелкими неурядицами недостаточно интеллектуального интерфейса я бы не стал.


Stanislav   (2006-11-10 16:53:00) [3]

А что за СУБД? можно триггером запретить.


Johnmen   (2006-11-10 16:44:00) [4]


> Нет, я не так категоричен как он. :)Я иногда допускаю редактирование
> в гриде, если по-другому получается раково/неюзабельно или
> ломает привычный пользователю UI.


Ну слава аллаху :)

Добавлю, что редактировать-нередактировать зависит от конкретной задачи в конкретной предметной области.


ANB   (2006-11-10 16:36:00) [5]


> DelphiLexx ©   (10.11.06 15:46) [7]

чек ограничение дополнительно наложи. И проверяй, что поле не равно ''.
ЗЫ. Вот оно, неудобство различия null и '' ! А сколько холиварили, что оракл зря их не различает.


Anatoly Podgoretsky   (2006-11-10 16:13:00) [6]

> Desdechado  (10.11.2006 16:08:12)  [12]

> Я иногда допускаю редактирование в гриде, если по-другому получается раково/неюзабельно .

Вот и я одно исключение у себя нашел.


Desdechado   (2006-11-10 16:08:00) [7]

> Ты преданный фанат MsGuns'а?
Нет, я не так категоричен как он. :)
Я иногда допускаю редактирование в гриде, если по-другому получается раково/неюзабельно или ломает привычный пользователю UI.

> OnAfterInsert данному поле присваивается значение 'Новый элемент'
goto Desdechado ©   (10.11.06 14:00) [4]

> А как надо?
Как задача стоит. Но предпочтительное отдельным формуляром (на той же форме или отдельной модальной), особенно если полей много и в гриде их все не видно по ширине. А на форме их можно разбросать так, чтобы удобно сгруппировать, красиво расставить и т.п.


Anatoly Podgoretsky   (2006-11-10 16:00:00) [8]

> DelphiLexx  (10.11.2006 15:47:08)  [8]

Скажем в форме, можно и в гриде, но надо много обработчиков писать


Anatoly Podgoretsky   (2006-11-10 15:58:00) [9]

> DelphiLexx  (10.11.2006 15:46:07)  [7]

Не редактируй в гриде.


Курдль   (2006-11-10 15:48:00) [10]


> Desdechado ©   (10.11.06 14:00) [4]
> ЗЫ редактирование в гриде - ваще дурной тон

Полностью поддерживаю! Это им, пнимашь, не ёксель какой-то там!
Пусть заполнят формуляр полностью и безошибочно - тогда и данные в БД.


DelphiLexx   (2006-11-10 15:47:00) [11]


> ЗЫ редактирование в гриде - ваще дурной тон

А как надо?


DelphiLexx   (2006-11-10 15:46:00) [12]


> А под пустым полем подразумевается (NULL) или '' ?

Вот здесь-то и вся проблема. Что в БД наложено ограничение Not Null. При добавлении новой записи у меня в событии OnAfterInsert данному поле присваивается значение 'Новый элемент'. После этого пользователь может взять выделить данную фразу и удалить получится пустое поле и в БД занесется '', но не Null.


Anatoly Podgoretsky   (2006-11-10 15:44:00) [13]

> Johnmen  (10.11.2006 15:23:05)  [5]

У меня за последние 13 лет, только в одном месте так редактируется одна единственная таблица для администратора. И ничего, даже наоборот без проблем.


Johnmen   (2006-11-10 15:23:00) [14]


> Desdechado ©   (10.11.06 14:00) [4]
> ЗЫ редактирование в гриде - ваще дурной тон


Ты преданный фанат MsGuns'а? :)


Desdechado   (2006-11-10 14:00:00) [15]

что мешает в BeforePost проверять правильность заполнения?

ЗЫ редактирование в гриде - ваще дурной тон


Stanislav   (2006-11-10 13:50:00) [16]

А под пустым полем подразумевается (NULL) или '' ?


Johnmen   (2006-11-10 13:07:00) [17]


> наложено ограничение Not Null.


и


> в БД попадают записи с пустым полем.


Где-то здесь враньё :)


ЮЮ   (2006-11-10 12:48:00) [18]


> Но у меня транзакция потдвержается только после нажатия
> кнопки [B]OK,


А открывается когда? А сервер какой? А может лучше кэшировать изменения в датасете, чем иметь такую длительную транзакцию?


Наверх

Титульная страница Поиск, карта сайта Написать письмо