Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.13;
Скачать: CL | DM;

Вниз

Вопрос по коду алгоритма   Найти похожие ветки 

 
Мария   (2008-06-09 15:12) [0]

Добрый день!
Программа по обработке заявок от клиентов сервисного отдела.
БД-Аксесс.
Есть алгоритм,который не дает записывать мастера на одно и то же время.Но в коде есть ошибка,которую не могу найти.
Кнопка "записать" не доступна только на 2-х промежутках времени(время с 10-12,12-14),а в остальных(14-16,16-18) можно заявку всё равно записать.
Что не так?
Вот кусок кода:

procedure TfmAddZ.DBLookupComboBox5Click(Sender: TObject);

begin

 fmMD.adot1.First;
 while not fmMD.adot1.Eof do
begin

  If  DBLookupComboBox5.KeyValue = fmMD.adot1["График_работы_ID"]
Then  begin
ShowMessage("Мастер занят, введите другое время");
      BitBtn3.Enabled := false;
      fmMD.adot1.Next ;

     end
else

    BitBtn3.Enabled := true;

   fmMD.adot1.Next;

   end;

      end;


 
Palladin ©   (2008-06-09 15:14) [1]

такое форматирование у меня по пьяни даже неполучится...


 
clickmaker ©   (2008-06-09 15:22) [2]

> fmMD.adot1.Next ;

при срабатывании первого условия выполнится 2 раза. Так надо?


 
Мария   (2008-06-09 15:37) [3]


> при срабатывании первого условия выполнится 2 раза. Так
> надо?

Нет,так не надо.Нужно пройти по всем записям таблицы и посмотреть удовлетворяет ли условиям значения последующие записи.


 
clickmaker ©   (2008-06-09 16:27) [4]

> [3] Мария   (09.06.08 15:37)

ну так, у тебя перескок получается тогда


 
Мария   (2008-06-09 16:29) [5]

А как исправить этот перекос не подскажите?


 
Sergey13 ©   (2008-06-09 16:53) [6]

> [5] Мария   (09.06.08 16:29)

Первый next убери.


 
Мария   (2008-06-09 17:00) [7]


> Первый next убери.

Тогда кнопка отключается только на последней записи, а на трёх предыдущих нет.


 
Мария   (2008-06-10 11:31) [8]

Всем спасиб за советы.
Код,который исправил ошибку приведен ниже:

procedure TfmAddZ.DBLookupComboBox5Click(Sender: TObject);
begin
 fmMD.adot1.First;
 while not fmMD.adot1.Eof do begin
       If  DBLookupComboBox5.KeyValue = fmMD.adot1["График_работы_ID"]
       then  begin
         ShowMessage("Мастер занят, введите другое время");
         BitBtn3.Enabled := false;
         Exit;
       end;
     fmMD.adot1.Next;
 end;
 BitBtn3.Enabled := true;
end;


 
Sergey13 ©   (2008-06-10 11:57) [9]

> [8] Мария   (10.06.08 11:31)

А зачем вообще в цикле перебирать? Есть ведь Locate.


 
MsGuns ©   (2008-06-10 13:03) [10]

procedure TfmAddZ.DBLookupComboBox5Click(Sender: TObject);
begin
   BitBtn3.Enabled :=  not fmMD.adot1.Locate("График_работы_ID"                                   ,DBLookupComboBox5.KeyValue,[]);
end;



Страницы: 1 вся ветка

Текущий архив: 2008.07.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
15-1212048925
123-ий
2008-05-29 12:15
2008.07.13
Нередактируемый документ (Web)


15-1211866893
vajo
2008-05-27 09:41
2008.07.13
Что это за загрузка файла может быть?


2-1213513674
TForumHelp
2008-06-15 11:07
2008.07.13
Ресурсы в EXE-файле - Иконка


2-1213461136
Alexey
2008-06-14 20:32
2008.07.13
Работа с 2-мя клиентскими приложениями


2-1213614267
man
2008-06-16 15:04
2008.07.13
Файл занят другим процессом