Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по коду алгоритма [D7, WinXP]


Мария ©   (2008-06-09 15:12:00) 

Добрый день!
Программа по обработке заявок от клиентов сервисного отдела.
БД-Аксесс.
Есть алгоритм,который не дает записывать мастера на одно и то же время.Но в коде есть ошибка,которую не могу найти.
Кнопка "записать" не доступна только на 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;


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

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


Sergey13   (2008-06-10 11:57:00) [2]

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

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


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

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

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;


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


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

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


Sergey13   (2008-06-09 16:53:00) [5]

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

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


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

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


clickmaker   (2008-06-09 16:27:00) [7]

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

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


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


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

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


clickmaker   (2008-06-09 15:22:00) [9]

> fmMD.adot1.Next ;

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


Palladin   (2008-06-09 15:14:00) [10]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо