Главная страница
    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.042 c
3-1163151804
DelphiLexx
2006-11-10 12:43
2007.02.04
Как программно в DBGridEh е запрещать, оставлять пустые записи


2-1169219514
Linu_X_oid
2007-01-19 18:11
2007.02.04
Объясните, пожалйста, как можно нормально создать чат в Delphi 7


6-1157144470
Орион
2006-09-02 01:01
2007.02.04
Прокси для TWebBrowser


4-1158831405
Dima_shapkin
2006-09-21 13:36
2007.02.04
Active Directory


5-1148224234
jb
2006-05-21 19:10
2007.02.04
MouseWeel





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский