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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2010, 11:31   #1
drossell
Пользователь
 
Регистрация: 01.06.2008
Сообщений: 10
По умолчанию Проблема при работе с DBEdit

Добрый день!
Возник вот такой вопрос:
Перед тем как записать в БД данные (Нажатие кнопки ОК), производится
проверка заполненности DBEdit1, если ни чего нет, то появляется
предупреждение.
У меня DBEdit всего 21, немогу разобраться, как записать, чтобы проверяло не только DBEdit1 но и все остальные?

Код:
 procedure TfmUtil.bbtOKClick(Sender: TObject);

begin
   if DM.tbUtil.State in [dsEdit, dsInsert] then
   DM.tbUtil.Post;
  if fmUtil.DBEdit1.EditText = '' then
    Application.MessageBox('Не ВСЕ поля заполнены!',
      'Ошибка', MB_OK + MB_ICONERROR)
  else begin

      DM.tbUtil.Edit;
      DM.tbUtilData.AsDateTime := dtpDate.Date;
      DM.tbUtilDatavidachi.AsDateTime := DateTimePicker1.Date;
      DM.tbUtil.Post;

    //Завершение транзакции с сохранением всех введенных данных:
    if DM.Database1.InTransaction then
      DM.Database1.Commit;
      close;
   end;
end;

За ранее спасибо!

Последний раз редактировалось drossell; 05.06.2010 в 11:49.
drossell вне форума Ответить с цитированием
Старый 06.06.2010, 09:27   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Раз используете TDBEdit для редактирования - вставки, то значит текущая запись в таблице как раз и есть добавляемая - редактируемая. В общем можно проверять содержимое полей в Tdataset, просто циклом пробежатся по полям и проверить значение
Код:
var
i:integer;
flag_:Boolean;
begin
flag_:=false;
 i:=0;
WHile not flag_ and (i<DM.tbUtil.Fieldcount) do (или какой у вас компонент)
begin 
flag_:= Trim(DM.tbUtil.Fields.Fields[i].AsString)='';
inc(i);
end; 
if flag_ then Application.MessageBox('Не ВСЕ поля заполнены!',
      'Ошибка', MB_OK + MB_ICONERROR)
else
.............
Естественно мнужно добавить условия чтобы проверелись только нужные поля.
Ну или пееребирать все компоненты на форме и если компонент Tdbedit то тоже самое

Код:
var
i:integer;
flag_:Boolean;
begin
flag_:=false;
 i:=0;
WHile not flag_ and (i<fmUtil.ControlCount) do 
begin 
if fmUtil.Controls[i] is TDBEdit then
flag_:=TRim((fmUtil.Controls[i] as TDBEdit).text)='';
inc(i);
end; 
if flag_ then Application.MessageBox('Не ВСЕ поля заполнены!',
      'Ошибка', MB_OK + MB_ICONERROR)
else
.............
//Набирал тут мог ошибится

кстати зачем у вас

Цитата:
if DM.tbUtil.State in [dsEdit, dsInsert] then
DM.tbUtil.Post;
до проверки?
vovk вне форума Ответить с цитированием
Старый 06.06.2010, 20:26   #3
drossell
Пользователь
 
Регистрация: 01.06.2008
Сообщений: 10
По умолчанию

Всё, разобрался, теперь работает так, как надо!
drossell вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема при работе с массивом Shouldercannon Общие вопросы Delphi 0 28.05.2010 12:57
Проблема при работе с ini dolphin705 Общие вопросы Delphi 4 12.08.2009 20:59
Проблема при работе с массивом kAND Общие вопросы C/C++ 10 15.02.2009 19:30
Проблема при работе с БД HAMMAN БД в Delphi 3 29.03.2008 14:42
Проблема при работе с представлениями Nemec БД в Delphi 2 29.07.2007 04:21