powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Распределение детей по группам
20 сообщений из 20, страница 1 из 1
Распределение детей по группам
    #39498504
quickstar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

Задача: распределить 400 детей по группам, в каждой группе по 10 человек.

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

Вариант 1: сейчас делаю группировку через отчет по выбранным критериям (если все совпало), но не понимаю как сказать программе отсчитывать следующие 10 детей, когда группа наполнилась.

Вариант 2: делать через VBA, не понимаю как запрограммировать.

Господа Специалисты, помогите, пожалуйста, решить задачку :)
...
Рейтинг: 0 / 0
Распределение детей по группам
    #39498586
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quickstarсейчас делаю группировку через отчет по выбранным критериям (если все совпало), но не понимаю как сказать программе отсчитывать следующие 10 детей , когда группа наполнилась.
получите всех по выбранным критериям в запросе. потом в VBA пройдитесь по всем строкам запроса присваивая нужную группу (т.е. группа набралась, берём следующую)
...
Рейтинг: 0 / 0
Распределение детей по группам
    #39498589
quickstar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
наутилус, Вы можете поправить меня? я не программист, учусь по-немногу и вот каким путем пошел - перебрать все возможные варианты, но понимаю,что их будет штук 70! Может есть более простой путь? Покажите, куском кода, пожалуйста.
ОЧЕНЬ ХОЧУ НАУЧИТЬСЯ ЭТО ДЕЛАТЬ,


Private Sub Кнопка5_Click()Select Case КодКлиента And ФИОребенка And Возраст And Курс And ГодПосещения And Пожелания And Пожелания1 And ПедагогFROM КлиентыDim i rs As RecordsetSet rs = CurrentDb.OpenRecordset("Клиенты")For i = 1 To 10WHERE ((Клиенты.Возраст) BETWEEN "3" and "3.5")WHERE ((Клиенты.Курс) = 1)WHERE ((Клиенты.ГодПосещения) = 1)WHERE ((Клиенты.Пожелания) <> 1)WHERE ((Клиенты.Пожелания1) <> 3)WHERE ((Клиенты.ГодПосещения) = 1)rs![Группа] = 1rs.UpdateIf i < 10 ThenNext iElseFor i = 1 To 10WHERE ((Клиенты.Возраст) BETWEEN "3.5" and "4")WHERE ((Клиенты.Курс) = 1)WHERE ((Клиенты.ГодПосещения) = 1)WHERE ((Клиенты.Пожелания) <> 1)WHERE ((Клиенты.Пожелания1) <> 3)WHERE ((Клиенты.ГодПосещения) = 1)rs![Группа] = 2rs.UpdateIf i < 10 ThenNext iElseEnd Sub
...
Рейтинг: 0 / 0
Распределение детей по группам
    #39498590
quickstar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
Private Sub Кнопка5_Click()
Select Case КодКлиента And ФИОребенка And Возраст And Курс And ГодПосещения And Пожелания And Пожелания1 And Педагог
FROM Клиенты

Dim i, rs As Recordset
Set rs = CurrentDb.OpenRecordset("Клиенты")
For i = 1 To 10

WHERE ((Клиенты.Возраст) BETWEEN  "3" and "3.5")
WHERE ((Клиенты.Курс) = 1)
WHERE ((Клиенты.ГодПосещения) = 1)
WHERE ((Клиенты.Пожелания) <> 1)
WHERE ((Клиенты.Пожелания1) <> 3)
WHERE ((Клиенты.ГодПосещения) = 1)
rs![Группа] = 1
rs.Update

If i < 10 Then
Next i
Else

For i = 1 To 10

WHERE ((Клиенты.Возраст) BETWEEN  "3.5" and "4")
WHERE ((Клиенты.Курс) = 1)
WHERE ((Клиенты.ГодПосещения) = 1)
WHERE ((Клиенты.Пожелания) <> 1)
WHERE ((Клиенты.Пожелания1) <> 3)
WHERE ((Клиенты.ГодПосещения) = 1)
rs![Группа] = 2
rs.Update

If i < 10 Then
Next i
Else



End Sub
...
Рейтинг: 0 / 0
Распределение детей по группам
    #39498600
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quickstar,
какая-то каша... О-о...

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Private Sub Кнопка5_Click()

Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("Select Код, ФИО FROM Клиенты " + _
   " WHERE ((Клиенты.Возраст) BETWEEN  3 and 3.5) and ((Клиенты.Курс) = 1) and ((Клиенты.ГодПосещения) = 1) and ((Клиенты.Пожелания) <> 1)")

Dim group As Integer
Dim client_count As Integer

group = 1
client_count = 0

Do While Not rs.EOF()
    client_count = client_count + 1

    CurrentDb.Execute ("update Клиенты Set Группа =" + CStr(group) + " where Код = " + CStr(rs.Fields("Код")))

    If (clien_count = 10) Then
        group = group + 1
        client_count = 0
    End If


    rs.MoveNext
    
Loop


End Sub
...
Рейтинг: 0 / 0
Распределение детей по группам
    #39498601
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quickstar,

т.е. вы сначала в запросе вытаскиваете всех детей, которые подходят по параметрам группе. дальше проходитесь по запросу и присваиваете группу. по достижению 10 человек - номер группы увеличивается, считать начинаем с нуля.
...
Рейтинг: 0 / 0
Распределение детей по группам
    #39498610
quickstar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
наутилус, спасибо БОЛЬШОЕ!

Еще вопрос: если я буду перебирать все возможные комбинации группы, то у меня получиться порядка 70 вариаций или более.
Как можно разом задать параметры перебора, чтобы программно "перебрать" все возможные комбинации и распределить детей по группам?
...
Рейтинг: 0 / 0
Распределение детей по группам
    #39498616
quickstar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
параметры перебора:

Возраст: от 3 до 8 лет с шагом в 0,5 года. т.е. объединяю детей от 3 до 3,5 лет, от 3,5 до 4 лет и т.д.
Курс : три варианта курсов
ГодПосещения: три вариант 1, 2 или 3
Пожелания: много вариантов. клиент указывает когда НЕ может посещать занятие, в остальное время можно назначать.
Пожелания: второе пожелание. много вариантов. клиент указывает когда НЕ может посещать занятие, в остальное время можно назначать.
Педагог: много вариантов, клиент зам заявляет у кого хочет заниматься.
...
Рейтинг: 0 / 0
Распределение детей по группам
    #39498648
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quickstarКритерии распределения: возраст, курс, уровень, преподаватель.
а что такое уровень ?
...
Рейтинг: 0 / 0
Распределение детей по группам
    #39498734
quickstar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА, здравствуйте!
уровень - это другими словами год обучения 1-й 2-й или 3-й.
...
Рейтинг: 0 / 0
Распределение детей по группам
    #39498750
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quickstarДоброго времени суток!

Задача: распределить 400 детей по группам, в каждой группе по 10 человек.

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

Вариант 1: сейчас делаю группировку через отчет по выбранным критериям (если все совпало), но не понимаю как сказать программе отсчитывать следующие 10 детей, когда группа наполнилась.

Вариант 2: делать через VBA, не понимаю как запрограммировать.

Господа Специалисты, помогите, пожалуйста, решить задачку :)

1. Разбиваете своих детей на "супер группы" по критериям, и не парясь за количество в супергруппе.
2. Нумеруете детей супергруппе от 0 до N.
3. Номера с одинаковым остатком от деления номера в супергруппе на 10 образуют группу.

ЗЫ. VBA не нужен.
...
Рейтинг: 0 / 0
Распределение детей по группам
    #39498787
quickstar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222, погуглил и не нашел ответ что такое "супер группы в access.
Что Вы имели ввиду? И как в супер группе задать правила распределения?

Буду очень признателен. если разок покажите примером, чтобы на научиться.
...
Рейтинг: 0 / 0
Распределение детей по группам
    #39498795
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quickstarпогуглил и не нашел ответ что такое "супер группы в access.
Что Вы имели ввиду?Достаточно было просто подумать.
Например, те же "уровни" - ведь два ребёнка с разными "уровнями" не могут попасть в одну группу ни при каких обстоятельствах, верно? Так вот - сначала всех детей следует разделить на "супергруппы" так, чтобы ЛЮБЫЕ ДВА ребёнка из одной супергруппы теоретически МОГЛИ обучаться в одной группе. И только потом выполнять деление на группы - отдельно в рамках каждой супергруппы.
...
Рейтинг: 0 / 0
Распределение детей по группам
    #39498820
quickstar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, извиняюсь, но я не понимаю как это через код сделать не понимаю.

Услышал от вас, что сначала делаем некое глобальное деление (КАК ЕГО СДЕЛАТЬ? через запрос/через VBA), а потом делим внутри супергруппы на группы, но критериев очень много (ШЕСТЬ со своими вариантами), не понимаю как их заложить в некий исполняемый код. С этом прошу помочь.
...
Рейтинг: 0 / 0
Распределение детей по группам
    #39498829
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quickstarкритериев очень много (ШЕСТЬ со своими вариантами)Вот и сведите их в таблицу (ИД супергруппы - диапазонный набор определяющих критериев).
...
Рейтинг: 0 / 0
Распределение детей по группам
    #39498832
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quickstarВозраст: от 3 до 8 лет с шагом в 0,5 года. т.е. объединяю детей от 3 до 3,5 лет, от 3,5 до 4 лет и т.д.
Курс : три варианта курсов
ГодПосещения: три вариант 1, 2 или 3

3 курса, например рисование, лепка, танцы
3 года

итого получается 9 типов групп,в среднем по 40 детей или 4 группы на тип
возрастов намного больше(особенно если делить по полгода)

поэтому
--собрать заявления, в какой из 9 типов желает родитель поместить дитенка
--получится потребность в группах определенного типа
--определить преподавателей групп

например на танцы1 надо 10 груп, а на лепку3 --только 1группа, в которую попадут дети и 5 лет и 8
танцы1 можно поделить более мелко, но шансов, что не будет групп разного возраста -- нет
ведь надо учесть еще и наличие мальчиков, их всегда мало

а что делать, если лепка1=6, лепка2=4,лепка3=2
итого 12 детей --сколько это групп -- одна или три
или 2 по 6 детей
...
Рейтинг: 0 / 0
Распределение детей по группам
    #39499074
quickstar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА, фактически 450 детей. и когда руками разносим по группам, родители начинают спорить "это хочу, это не хочу".
Поэтому нужно программно задать распределение.
В этом прошу помощи.
...
Рейтинг: 0 / 0
Распределение детей по группам
    #39499108
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quickstarкогда руками разносим по группам, родители начинают спорить "это хочу, это не хочу".
Поэтому нужно программно задать распределениеТо есть Вы делите их по группам, а родители стоят за плечом и хотят-спорят? и успокоить их может только автоматизированное распределение? ну так втихую раскидайте, а потом на компе просто выведите готовый список, а им скажете, что, мол, это только что тулза вот насчитала...
...
Рейтинг: 0 / 0
Распределение детей по группам
    #39499119
quickstar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, хороший вариант и в тоже время 450 детей раскидывать по 6 параметрам, да еще и в каждом параметре по несколько вариантов, ух... задачка на недельку.

родители говорят когда точно они н могут водить детей и мы уже вставляем в пожелания. В коде заложу, проверку поиск вариантов кроме этих и великий Access сам все распределеит...

кхм... ну всё! помечтал, а теперь КАК ЭТО СДЕЛАТЬ?

наутилус, добрый человек, пол задачки помог решить. осталось понять как сюда вписать критерии отбора:
Возраст: от 3 до 8 лет с шагом в 0,5 года. т.е. объединяю детей от 3 до 3,5 лет, от 3,5 до 4 лет и т.д.
Курс : три варианта курсов
ГодПосещения: три вариант 1, 2 или 3
Пожелания: много вариантов. клиент указывает когда НЕ может посещать занятие, в остальное время можно назначать.
Пожелания: второе пожелание. много вариантов. клиент указывает когда НЕ может посещать занятие, в остальное время можно назначать.
Педагог: много вариантов, клиент зам заявляет у кого хочет заниматься.


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Private Sub Кнопка5_Click()

Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("Select Код, ФИО FROM Клиенты " + _
   " WHERE ((Клиенты.Возраст) BETWEEN  3 and 3.5) and ((Клиенты.Курс) = 1) and ((Клиенты.ГодПосещения) = 1) and ((Клиенты.Пожелания) <> 1)")

Dim group As Integer
Dim client_count As Integer

group = 1
client_count = 0

Do While Not rs.EOF()
    client_count = client_count + 1

    CurrentDb.Execute ("update Клиенты Set Группа =" + CStr(group) + " where Код = " + CStr(rs.Fields("Код")))

    If (clien_count = 10) Then
        group = group + 1
        client_count = 0
    End If


    rs.MoveNext
    
Loop


End Sub
...
Рейтинг: 0 / 0
Распределение детей по группам
    #39499180
quickstar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
составить бы некоторую функцию, которая перебирает значения - вопрос только как это сделать?
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Распределение детей по группам
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]