Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2010, 23:25   #1
MSD
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 85
По умолчанию Обязательные поля

Здравствуйте. Подскажите пожалуйста. Есть БД BDE, на форме table, datasourse, query, dbnavigator, dbgrid, dbcombobox и 10 - dbedit'ov. Хочу сделать поля некоторые поля обязательными для заполнения, к примеру пишу в событии TableBeforPost:
if dbedit9.text=' ' then showmessage('error');
dbgrid1.datasourse.dataset.cansel; или abort без разницы, но те поля которы я уже ввел все равно остаются в новой таблице....(( Подскажите как сделать чтобы исправить (нужны обязательные поля!), спасибо, огромное.
MSD вне форума Ответить с цитированием
Старый 10.06.2010, 00:28   #2
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

кинь код посмотреть

Код:
if dbedit9.text=' ' then 
begin
showmessage('error');
dbgrid1.datasourse.dataset.cansel;
end;
begin-end не забыл?

правильнее будет проверять чтоб в обязательных полях были данные, а потом добавлять в базу, а не отменять транзакции.

и почему бы не сделать обязательными поля (not null) на уровне БД? а потом уже через try-except извращаться?
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
MadReason вне форума Ответить с цитированием
Старый 15.06.2010, 10:42   #3
MSD
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 85
По умолчанию

Цитата:
Сообщение от MadReason Посмотреть сообщение
кинь код посмотреть

Код:
if dbedit9.text=' ' then 
begin
showmessage('error');
dbgrid1.datasourse.dataset.cansel;
end;
begin-end не забыл?

правильнее будет проверять чтоб в обязательных полях были данные, а потом добавлять в базу, а не отменять транзакции.

и почему бы не сделать обязательными поля (not null) на уровне БД? а потом уже через try-except извращаться?
спасибо сделал на уровне БД, как перехватить сообщение об ошибке когда поле не заполнено и вставить своё сообщение?
MSD вне форума Ответить с цитированием
Старый 15.06.2010, 10:47   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Код:
try
 ....//ваши действия
except
 ....//обработка ошибки
end;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 17.06.2010, 13:56   #5
MSD
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 85
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Код:
try
 ....//ваши действия
except
 ....//обработка ошибки
end;
Сделал так:
Код:
begin
if dbedit1.text<>'' then
  try
  table1.post;
  except
  showmessage('Ошибка')
  end;
но при выполнении условия вылетает с начало моё сообщение "Ошибка" а потом сообщение базы данных об ошибке не заполненного поля.. Что не так делаю? Программу запускал и без дельфи...
MSD вне форума Ответить с цитированием
Старый 20.06.2010, 12:06   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

А если так?
Код:
begin
  try
  if dbedit1.text<>'' then
  table1.post;
  except
  showmessage('Ошибка')
  end;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 22.06.2010, 13:11   #7
MSD
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 85
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
А если так?
Код:
begin
  try
  if dbedit1.text<>'' then
  table1.post;
  except
  showmessage('Ошибка')
  end;
та же фигня, только теперь сообщение "Ошибка" вообще не выскакивает а только ошибка базы данных... типа поле пустое все дела..) ((((
MSD вне форума Ответить с цитированием
Старый 22.06.2010, 13:32   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Цитата:
а только ошибка базы данных... типа поле пустое все дела.
Скрин ошибки можно увидеть?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 22.06.2010, 13:55   #9
MSD
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 85
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Скрин ошибки можно увидеть?
да конечно..)

http://i064.radikal.ru/1006/5e/08601e01f0e7.jpg
MSD вне форума Ответить с цитированием
Старый 22.06.2010, 14:13   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ужосс... А не проще ли сделать тип поля NOT NULL в самой СУБД?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Измененние цвета фона поля (поля со списком) при редактировании TimRus Microsoft Office Access 2 17.05.2010 21:56
получить данные поля исходя из lookup-поля malayka Помощь студентам 0 21.04.2010 21:19
как получить значение поля грид на основе значения другого lookUp поля malayka БД в Delphi 0 21.04.2010 19:06
Выявление одинаковости значений поля в одной талице по значению поля в другой nikmay SQL, базы данных 4 13.08.2009 12:51
Слияние и поля!!!! Окоча Юра Microsoft Office Word 2 01.03.2009 22:05