Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Вниз

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

 
DelphiLexx ©   (2006-11-10 12:43) [0]

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


 
ЮЮ ©   (2006-11-10 12:48) [1]


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


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


 
Johnmen ©   (2006-11-10 13:07) [2]


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


и


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


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


 
Stanislav ©   (2006-11-10 13:50) [3]

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


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

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

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


 
Johnmen ©   (2006-11-10 15:23) [5]


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


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


 
Anatoly Podgoretsky ©   (2006-11-10 15:44) [6]

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

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


 
DelphiLexx ©   (2006-11-10 15:46) [7]


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

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


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


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

А как надо?


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


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

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


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

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

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


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

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

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


 
Desdechado ©   (2006-11-10 16:08) [12]

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

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

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


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

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

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

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


 
ANB ©   (2006-11-10 16:36) [14]


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

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


 
Johnmen ©   (2006-11-10 16:44) [15]


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


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

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


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

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


 
Desdechado ©   (2006-11-10 16:59) [17]

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


 
ANB ©   (2006-11-10 17:06) [18]


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

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



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.049 c
2-1169163839
NightHunter
2007-01-19 02:43
2007.02.04
Как запустить из моей проги екзешник?


6-1156749189
vovnor
2006-08-28 11:13
2007.02.04
Проверка наличия файла на сервере


6-1157100295
tvv
2006-09-01 12:44
2007.02.04
Работа с каталогами по сети


15-1168953840
ReeRE
2007-01-16 16:24
2007.02.04
Задача о загрузке рюкзака


15-1168804327
altex
2007-01-14 22:52
2007.02.04
Ноут в инет через ПК или Wi-Fi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский