Topic: ближайший день недели

Есть строка в таблице которая имеет данные дней недели в Check box. То есть 7 штук и не имеет "даты старта". Всё это хранится в MySQL по системе 0 и 1 соответственно. Есть задача при нажатии на кнопку, что бы скрипт определил какой ближайший из дней недели к сегодняшнему дню отмечен галочкой, (1). И сохранить эти данные в дату старта этой задачи. Я вижу как это сделать через очень большой скрипт с помощью только оператора if строк так на 100, но наверное есть проще варианты. Может кто то делал уже подобное? Или есть примеры

Re: ближайший день недели

Решил вопрос следующим образом
procedure Form1_Button28_OnClick (Sender: TObject; var Cancel: boolean; uchet,s,id_zada4i,cvc,datawsw,dayMo,dayTu,dayWe,dayTh,dayFr,daySa,daySu,dattt:string; b,n:integer;);
begin
id_zada4i := SQLExecute('SELECT id FROM zada4i WHERE id='+ карта_фирмы.TableGrid11.sqlValue);
id_zada4i := vartostr(id_zada4i);
dayMo := SQLExecute('SELECT пн FROM zada4i WHERE id="'+id_zada4i+'" ');
dayTu := SQLExecute('SELECT вт FROM zada4i WHERE id="'+id_zada4i+'" ');
dayWe := SQLExecute('SELECT ср FROM zada4i WHERE id="'+id_zada4i+'" ');
dayTh := SQLExecute('SELECT чт FROM zada4i WHERE id="'+id_zada4i+'" ');
dayFr := SQLExecute('SELECT пт FROM zada4i WHERE id="'+id_zada4i+'" ');
daySa := SQLExecute('SELECT сб FROM zada4i WHERE id="'+id_zada4i+'" ');
daySu := SQLExecute('SELECT вс FROM zada4i WHERE id="'+id_zada4i+'" ');
uchet := SQLExecute('SELECT учёт_дня_недели FROM zada4i WHERE id="'+id_zada4i+'" ');
if (uchet = '0') then SQLExecute('SET @n := 1');
if (uchet = '1') then SQLExecute('SET @n := 0');
n := 0;
b := 7;
While (n < 7) do
begin
s := SQLExecute('SELECT DAYNAME(CURDATE() + @n)');
if (s = 'Monday') AND (dayMo = '1') then
begin
dattt := SQLExecute('SELECT CURDATE() +  @n ');
ShowMessage(dattt);
exit;
end;
if (s = 'Tuesday') AND (dayTu = '1') then
begin
dattt := SQLExecute('SELECT CURDATE() + @n');
ShowMessage(dattt);
exit;
end;
if (s = 'Wednesday') AND (dayWe = '1') then
begin
dattt := SQLExecute('SELECT CURDATE() + @n');
ShowMessage(dattt);
exit;
end;
if (s = 'Thursday') AND (dayTh = '1') then
begin
dattt := SQLExecute('SELECT CURDATE() + @n');
ShowMessage(dattt);
exit;
end;
if (s = 'Friday') AND (dayFr = '1') then
begin
dattt := SQLExecute('SELECT CURDATE() + @n');
ShowMessage(dattt);
exit;
end;
if (s = 'Saturday') AND (daySa = '1') then
begin
dattt := SQLExecute('SELECT CURDATE() + @n');
ShowMessage(dattt);
exit;
end;
if (s = 'Sunday') AND (daySu = '1') then
begin
dattt := SQLExecute('SELECT CURDATE() + @n');
ShowMessage(dattt);
exit;
end;
SQLExecute('SET @n := @n +1');
n := n +1;
end;
end;