Форум: "Начинающим";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];
ВнизВопрос по коду алгоритма Найти похожие ветки
← →
Мария (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c