![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по коду алгоритма [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]такое форматирование у меня по пьяни даже неполучится...