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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2014, 09:32   #1
sdr1
Пользователь
 
Регистрация: 06.10.2014
Сообщений: 46
По умолчанию Проверка на пустое поле при закрытии

Ребят доброе утро, подскажите как сделать, чтоб при закрытии формы в строках dbgrid проводилась проверка на не заполненное поле. (dbgrid adoquery access). Сделал вот так
Код:
procedure TForm_ins_sotr.BitBtn2Click(Sender: TObject);
begin
if dbgrid1.DataSource.DataSet.FieldByName('on5').AsString='' then
   begin
   ShowMessage('Вы не выбрали организацию');
   end
else
   begin
   close;
   end;
   end;
но если перехожу на другую строку и жму закрыть, то закрывает и сообщение не выдает. Как сделать так, чтоб проверка проходила по всему содержимому?

Если ввожу вот так
Код:
dbgrid1.fields[4].Asstring=''
то вообще не закрывает всегда пишет "Вы не выбрали организацию" если даже она заполнена.
sdr1 вне форума Ответить с цитированием
Старый 25.11.2014, 10:43   #2
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

добавить цикл для пробежки по всем записям
Код:
while not dbgrid1.DataSource.DataSet.eof do
begin
проверка записи
dbgrid1.DataSource.DataSet.next;
end;
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Старый 25.11.2014, 11:22   #3
sdr1
Пользователь
 
Регистрация: 06.10.2014
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Toxa Посмотреть сообщение
добавить цикл для пробежки по всем записям
Код:
while not dbgrid1.DataSource.DataSet.eof do
begin
проверка записи
dbgrid1.DataSource.DataSet.next;
end;
При таком раскладе все зависает
sdr1 вне форума Ответить с цитированием
Старый 25.11.2014, 11:34   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А чего зависает? что делается в цикле помимо итераций?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.11.2014, 11:45   #5
sdr1
Пользователь
 
Регистрация: 06.10.2014
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А чего зависает? что делается в цикле помимо итераций?
вот процедура
Код:
procedure TForm_ins_sotr.BitBtn2Click(Sender: TObject);

begin
dbgrid1.DataSource.DataSet.First;
  while not dbgrid1.DataSource.DataSet.Eof do
begin
if dbgrid1.DataSource.DataSet.FieldByName('on5').AsString='' then
   begin
   ShowMessage('Âû íå âûáðàëè îðãàíèçàöèþ');
   end
else
   begin
   close;
   end;
      end;
        dbgrid1.DataSource.DataSet.next;
        end;
sdr1 вне форума Ответить с цитированием
Старый 25.11.2014, 11:47   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

И что хотели? Begin end понаставили как попадя без всяких выходов из цикла и результата ждете?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.11.2014, 12:14   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Та да... Один end лишний.
Получается что dbgrid1.DataSource.DataSet.next; находится за пределами цикла.
Обычная человеческая невнимательность. Бывает )))
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.11.2014, 12:14   #8
sdr1
Пользователь
 
Регистрация: 06.10.2014
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
И что хотели? Begin end понаставили как попадя без всяких выходов из цикла и результата ждете?
если ставлю выход
Код:
break
то проверка не происходит

напишите пжл код

Код:
begin

  while not dbgrid1.DataSource.DataSet.Eof do
begin
if dbgrid1.DataSource.DataSet.FieldByName('on5').AsString='' then
   begin
   ShowMessage('вы не выбрали организацию');
end
  else
begin
close;
dbgrid1.DataSource.DataSet.next;
end;
end;
end
сделал вот так, теперь окно ShowMessage('вы не выбрали организацию');
не закрывается

Последний раз редактировалось Stilet; 25.11.2014 в 12:54.
sdr1 вне форума Ответить с цитированием
Старый 25.11.2014, 12:53   #9
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

Цитата:
сделал вот так, теперь окно ShowMessage('вы не выбрали организацию');
не закрывается
надо сначала продумать алгоритм действий
пройтись по всем записям, проверить есть ли не заполненные - если есть, то ругнуться
если все заполненные то close (т.е. вызвать уже после цикла)

а сейчас у тебя получается зашел в первую строку -если заполнен, выдал сообщение и цикл висит, нажимаешь ОК в сообщении, цикл идет в следующую запись, опять проверяет, а тут будет заполнен и все, сработает выход
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Старый 25.11.2014, 12:54   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
begin
 with dbgrid1.DataSource.DataSet do
  while not Eof do begin
   if FieldByName('on5').AsString='' then
    ShowMessage('вы не выбрали организацию');
   next;
  end;

end
Сообщение будет вылазить на каждом пустом поле.
А лучше это все заменить на:
Код:
begin
  if dbgrid1.DataSource.DataSet.locate('on5','',[]) begin
    ShowMessage('Какое-то из записей не заполнено');
  end;

end
И никакого цикла не нужно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как поставить контроль на пустое поле при закрытии формы sdr1 Общие вопросы Delphi 6 08.10.2014 21:08
появляется пустое пространство справа при уменьшении размера окна alesja92 HTML и CSS 2 14.09.2012 17:29
При запуске программы, выдает пустое окно. Hooligan Общие вопросы C/C++ 1 29.02.2012 19:20
Проверка на пустое ли поле Edit amator_roma Общие вопросы Delphi 4 16.11.2010 17:40
Скрытие панелей инструментов при открытии и отображение при закрытии документа Василий. Microsoft Office Word 0 23.10.2010 00:41