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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

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

Как поставить контроль на пустое поле при закрытии формы?
сделал вот так , но работает как то криво через раз, то проверяет, то нет
мож как то по другому можно?

procedure TForm_sotr.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
//проверка на наличие пустых записей перед закрытием, если такие записи найдены то отменяем закрытие //формы
if dbgrid1.DataSource.DataSet.RecordCo unt<>0 then begin

if (form_general.table_sotrudniki.Loca te('fio_name','', [loCaseInsensitive,loPartialKey])) then begin ShowMessage('У Вас есть не заполненные записи в поле "ФИО"');CanClose:=false; dbgrid1.SetFocus;end
else begin
sdr1 вне форума Ответить с цитированием
Старый 08.10.2014, 10:38   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Проверяйте VCL компоненты, а не БД. Или юзер сам запросы в БД пишет на SQL?
Человек_Борща вне форума Ответить с цитированием
Старый 08.10.2014, 10:56   #3
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

Я бы вам посоветовал не прогонять всю таблицу на наличие не заполненных полей с ФИО, а проверять это поле перед сохранением таблицы.
У таблицы есть метод onBeforePost
в него пишете что-то типо
Код:
procedure TForm1.ADOTable1BeforePost(DataSet: TDataSet);
begin
if Dataset.FieldByName('fio_name').AsString='' then 
begin
ShowMessage('Не заполнено обязательное поле "ФИО"') ;
Abort;//отменит добавление
end;
end;
Перед сохранением будет проверятся текущая строка.
Сразу понятно, даже не обязательно вставать на это поле...
Dozent вне форума Ответить с цитированием
Старый 08.10.2014, 11:23   #4
sdr1
Пользователь
 
Регистрация: 06.10.2014
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Dozent Посмотреть сообщение
Я бы вам посоветовал не прогонять всю таблицу на наличие не заполненных полей с ФИО, а проверять это поле перед сохранением таблицы.
У таблицы есть метод onBeforePost
в него пишете что-то типо
Код:
procedure TForm1.ADOTable1BeforePost(DataSet: TDataSet);
begin
if Dataset.FieldByName('fio_name').AsString='' then 
begin
ShowMessage('Не заполнено обязательное поле "ФИО"') ;
Abort;//отменит добавление
end;
end;
Перед сохранением будет проверятся текущая строка.
Сразу понятно, даже не обязательно вставать на это поле...
Все отлично работает спасибо большое, только я никак не пойму как добавить контроль на несколько полей?
sdr1 вне форума Ответить с цитированием
Старый 08.10.2014, 12:34   #5
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

Цитата:
Сообщение от sdr1 Посмотреть сообщение
Все отлично работает спасибо большое, только я никак не пойму как добавить контроль на несколько полей?
Ни чего сложного, добавить в условие проверку второго необходимого поля, либо для каждого поля делать отдельную проверку поочереди

Код:
procedure TForm1.ADOTable1BeforePost(DataSet: TDataSet);
begin
if (Dataset.FieldByName('fio_name').AsString='')OR(Dataset.FieldByName('ДРУГОЕ ПОЛЕ').AsString='') then 
begin
ShowMessage('Не заполнено обязательное поле "ФИО"') ;
Abort;//отменит добавление
end;
end;
Dozent вне форума Ответить с цитированием
Старый 08.10.2014, 15:34   #6
sdr1
Пользователь
 
Регистрация: 06.10.2014
Сообщений: 46
По умолчанию

Спасибо большое еще раз выручил, что то я сегодня плохо сображаю
sdr1 вне форума Ответить с цитированием
Старый 08.10.2014, 21:08   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Я чот не въехал в проблему. Что это за окно? Добавление/редактирование записи БД? Дай скриншот посмотреть.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать кнопку BitBtn, на одной дочерней форме, не активной при закрытии другой дочерней формы? yds-09 Общие вопросы Delphi 18 30.09.2013 20:42
Как выскочить из цикла for при закрытии формы? men232 Общие вопросы Delphi 16 08.10.2011 13:16
ошибка при закрытии формы TotKtoNado Общие вопросы Delphi 3 03.07.2011 19:20
Как в C# при закрытии главной формы не завершать программный поток? Mixim Общие вопросы .NET 3 01.09.2010 21:32
Уничтожать созданные формы при закрытии? Как? TwiX Общие вопросы Delphi 4 09.04.2010 09:49