Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Составить расписание…  [new]
Ukraina
Member

Откуда: Ярославль (...) - Туркменистан
Сообщений: 24344
Господа!

Имеются следующие исходные данные:

Начальная дата: 12.05.2007
Кол-во визитов: 12
Дни доступа: Пн, Ср, Пт.

Требуется составить расписание визитов по датам, чтобы кол-во визитов было 12 и даты соответствовали этим дням недели…

Подскажите мысль, что-то запутался…




Интересно... чем всё это закончится
1 май 07, 13:42    [4088077]     Ответить | Цитировать Сообщить модератору
 Re: Составить расписание…  [new]
Karfaqen
Member

Откуда:
Сообщений: 7010
Как вариант:
Dim i&, d: d = CDate(#5/12/2007#)
Do While i < 12
    Select Case Weekday(d)
    Case vbMonday, vbWednesday, vbFriday
        i = i + 1: Debug.Print i, d
    End Select
    d = d + 1
Loop
1 май 07, 14:38    [4088113]     Ответить | Цитировать Сообщить модератору
 Re: Составить расписание…  [new]
Ukraina
Member

Откуда: Ярославль (...) - Туркменистан
Сообщений: 24344
Спасибо!!! Блин, вертелось что-то вроде этого... Еще раз благодарю!!!

Но тогда возникает следующий вопрос...

Естественно, что виы дней недель может меняться. Т.е. сейчас 2,4,6 (Пн,Ср,Пт), потом 3,7,7,1 (Вт,Чт,Сб,Вс)... Как мне передать в функцию, которая будет формировать таблицу с расписанием значения выбранных недель?

Сейчас пытаюсь применить, что есть 7 контролов ("Переключатель"), логические, за каждым закреплен свой день недели... Как передать в функцию набор (массив) этих выбранных переключателей?

Интересно... чем всё это закончится
1 май 07, 14:50    [4088121]     Ответить | Цитировать Сообщить модератору
 Re: Составить расписание…  [new]
Karfaqen
Member

Откуда:
Сообщений: 7010
Ukraina
Как передать в функцию набор (массив) этих выбранных переключателей?
ИМХО, в форме надо иметь 7 флажков - по одному на каждый день недели. В функцию передать дату начала и значения отмеченных флажков (например - в виде строки, содержащей эти значения через запятую).
1 май 07, 15:01    [4088130]     Ответить | Цитировать Сообщить модератору
 Re: Составить расписание…  [new]
Ukraina
Member

Откуда: Ярославль (...) - Туркменистан
Сообщений: 24344
Ну хорошо...

Я могу сформировать строку (через запятую), который будет отражать параметры дней недели:

2,4,6 (Пн, Вт,Ср) или 3,5,7,1 (Вт,Чт,Сб,Вс)

Но как тогда в приведенном примере отразить эту строку для параметра CASE?
Т.е., т.к. участие дней недели значение переменное, то и Case должен меняться...

Как программно менять параметры Case?

Case vbMonday, vbWednesday, vbFriday
Case vbSunday, vbFriday
Case 3,5,7,1


Интересно... чем всё это закончится
1 май 07, 17:29    [4088238]     Ответить | Цитировать Сообщить модератору
 Re: Составить расписание…  [new]
Karfaqen
Member

Откуда:
Сообщений: 7010
В таком духе:
Sub set_visits(startdate, weekdaylist$, daysnumb&)
    Dim i&, d: d = startdate
    Do While i < daysnumb
        If InStr(1, weekdaylist, CStr(Weekday(d))) > 0 Then
            i = i + 1
            Debug.Print i, d 'тут запись расписания
        End If
        d = d + 1
    Loop
End Sub

*Параметры:
startdate - дата начала
weekdaylist - список дней недели (в виде 2,4,6)
daysnumb - количество дней

**Проследите за единой системой нумерации дней недели у ваших флажков (номера, которые будут в параметре weekdaylist) и возвращаемых функцией Weekday.
1 май 07, 18:59    [4088315]     Ответить | Цитировать Сообщить модератору
 Re: Составить расписание…  [new]
Ukraina
Member

Откуда: Ярославль (...) - Туркменистан
Сообщений: 24344
Спасибо!!! Все получилось!!!

Интересно... чем всё это закончится
1 май 07, 20:45    [4088436]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить