Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 12.01.2017
Сообщений: 35

Цикл с прерыванием по условию

22.04.2017, 08:21. Показов 564. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго вечера! в одиночку пока не могу победить задачу.
Прошу помощи.

Задача: составить расписание занятий.
В абонемент включено 10 занятий. В абонементе три вида занятия,у каждого свой день недели. Занятия повторяются каждую неделю в тот же день.
Как создать цикл создания занятий, так чтобы он прерывался когда в базу запишутся 10 занятий?
Code
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
40
41
42
43
44
45
Private Sub Кнопка177_Click()
If Nz(Me.ФИО_ребенка) = "" Then
MsgBox ("Занятие НЕ сохранено. Выберите клиента.")
Else
Dim rs12 As Recordset, i, myDate As Date
Dim rs13 As Recordset
myDate = Me.D11
myDate1 = Me.D21
myDate2 = Me.D31
Set rs12 = CurrentDb.OpenRecordset("Расписание")
Set rs13 = CurrentDb.OpenRecordset("Расписание")
 
For i = 1 To Me.Занятий
    If Me.P1 > 0 Then
    rs12.AddNew
    rs12![ФИО ребенка] = Me.ФИО_ребенка
    rs12!НомерЗанятия = i
    rs12![ДатаЗанятия] = myDate
    myDate = myDate + 7
    rs12.Update
 
 
        
'If Me.P2 > 0 Then
'rs13.AddNew
'rs13![ФИО ребенка] = Me.ФИО_ребенка
'rs13!НомерЗанятия = i
'rs13![ДатаЗанятия] = myDate1
'myDate1 = myDate1 + 7
'rs13.Update
'
'        ElseIf Me.P3 > 0 Then
'        rs12.AddNew
'        rs12![ФИО ребенка] = Me.ФИО_ребенка
'        rs12!НомерЗанятия = i
'        myDate = myDate + 7
'        rs12![ДатаЗанятия] = myDate
'        rs12.Update
 
'End If
End If
Next
End If
MsgBox ("Занятие успешно сохранено!")
End Sub
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.04.2017, 08:21
Ответы с готовыми решениями:

Начать вложенный цикл не с первого элемента и по условию вернуться в основной цикл
Добрый день. На самом деле, проблема чуть шире, чем в названии топика. Есть цикл, в котором идёт перебор массива. Внутри цикла есть...

Цикл по условию
Определить.является ли оследовательность цифр натурального числа при просмотре их справа налево возростающей последовательностью.(например...

Цикл по условию
С клавиатуры вводятся целые числа a и b .Найти остаток от деления ,не используя операции div and mod .. Заранее спасибо 8-)

3
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
22.04.2017, 09:49
myDate надо сделать массивом по числу занятий. Тогда даты будут правильно назначаться
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Dim myDate(1 To 3), j, k
myDate(1) = Me.D11
myDate(2) = Me.D21
myDate(3) = Me.D31
Set rs12 = CurrentDb.OpenRecordset("Расписание")
Set rs13 = CurrentDb.OpenRecordset("Расписание")
 
k=1
For i = 1 To Me.Занятий
    For j=1 to 3
       if k>10 Then      'Что-то делаем если занятий больше 10
       k=(i-1)*3 + j     'Последовательный номер занятий
       If Me.P1 > 0 Then
          rs12.AddNew
          rs12![ФИО ребенка] = Me.ФИО_ребенка
          rs12!НомерЗанятия = k
          rs12![ДатаЗанятия] = myDate(j)
          myDate(j) = myDate(j) + 7  'Новая дата занятия
          rs12.Update
1
0 / 0 / 0
Регистрация: 12.01.2017
Сообщений: 35
22.04.2017, 12:06  [ТС]
спасибо.
Когда одно занятие ясно.

Теперь вопрос как включить в цикл второй тип занятия со своей датой и параметрами?

Пример: абонемент из 5 занятий.
курс 1 проходит по понедельникам в 11ч. Дата начала - D1
курс 2 проходит по средам в 12 ч. Дата начала - D2

Следовательно, расписание должно построиться.
Занятие 1: D1
Занятие 2: D2
Занятие 3: D1+7 (на след неделе в тот же день)
Занятие 4: D2+7
Занятие 5: D1+14
0
0 / 0 / 0
Регистрация: 12.01.2017
Сообщений: 35
23.04.2017, 20:00  [ТС]
Решил задачу следующим образом.
Возможно, кому-то пригодится.

Visual Basic
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
Private Sub Кнопка177_Click()
'On Error GoTo er1
If Nz(Me.ФИОребенка) = "" Then
   MsgBox ("Занятие НЕ сохранено. Выберите клиента.")
   Exit Sub  '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Else
   Dim rs As Recordset, i1, i2, i3, i4, i5, myDate As Date
   Dim j As Long
   myDate1 = Me.D1
   myDate2 = Me.D1
   myDate3 = Me.D3
   myDate4 = Me.D4
   myDate5 = Me.D5
   Set rs = CurrentDb.OpenRecordset("Расписание")
   
   j = 0     '\\\\\\\\\\\\\\\\\
   
    If Me.P1 > 0 Then
    For i1 = 1 To Me.Kl1
    rs.AddNew
    rs![ФИОребенка] = Me.ФИОребенка
    rs!НомерЗанятия = i1
    rs![ДатаЗанятия] = myDate
    myDate = myDate + 7
    rs.Update
    Next i1
    End If
     
    If Me.P2 > 0 Then
    For i2 = 1 To Me.Kl2
    rs.AddNew
    rs![ФИОребенка] = Me.ФИОребенка
    rs!НомерЗанятия = i2
    rs![ДатаЗанятия] = myDate2
    myDate2 = myDate2 + 7
    rs.Update
    Next i2
    End If
    
    If Me.P3 > 0 Then
    For i3 = 1 To Me.Kl3
    rs.AddNew
    rs![ФИОребенка] = Me.ФИОребенка
    rs!НомерЗанятия = i3
    rs![ДатаЗанятия] = myDate3
    myDate3 = myDate3 + 7
    rs.Update
    Next i3
    End If
    
    If Me.P4 > 0 Then
    For i4 = 1 To Me.Kl4
    rs.AddNew
    rs![ФИОребенка] = Me.ФИОребенка
    rs!НомерЗанятия = i4
    rs![ДатаЗанятия] = myDate4
    myDate4 = myDate4 + 7
    rs.Update
    Next i4
    End If
    
    If Me.P5 > 0 Then
    For i5 = 1 To Me.Kl5
    rs.AddNew
    rs![ФИОребенка] = Me.ФИОребенка
    rs!НомерЗанятия = i5
    rs![ДатаЗанятия] = myDate5
    myDate5 = myDate5 + 7
    rs.Update
    Next i5
    End If
    
   
         
        j = j + 1      '\\\\\\\\\\\\\\\\\
          If j = Me.Занятий Then  '\\\\\\\\\\\\\\\\\
            MsgBox ("Занятие успешно сохранено!") '\\\\\\\\\\\\\\\\\
            rs.Close  '\\\\\\\\\\\\\\\\\
            Exit Sub    '\\\\\\\\\\\\\\\\\
          End If        '\\\\\\\\\\\\\\\\\
    
    
 
 
End If '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 
'er1:
'MsgBox ("Ошибка сохранения. Перезайдите в программу.")  '\\\\\\\\\\\\\\\\\\\\\\\\\\\
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.04.2017, 20:00
Помогаю со студенческими работами здесь

Цикл по условию
Одноклеточная амёба каждые 3 часа делится на 2 клетки. Определить, через сколько часов будет Х амёб.

Прервать цикл по условию
помогите найти ошибку, цикл проверяет столько раз сколько записей в листбокс, и столько же раз выводит ShowMessage, как сделать чтоб цикл...

Сделать бесконечный цикл с выходом по условию
Помогите сделать так чтобы программа не выключалась и числа можно было писать снова и снова x = int(input("Введите натуральное...

Цикл удаления строк не подходящих по условию
Добрый день! Нужна помощь с циклом, так как он у меня не работает как нужно и самой разобраться не получилось. Суть цикла: в...

Найти результат выражения, используя цикл по условию
задание: 1/(2*4)+2/(3*5)+3/(4*6)+.. Сделал так, но сомневаюсь в правильности, будьте любезны, проверьте код: var i,j, z,x :integer; rez...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru