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

Задача: составить расписание занятий.
В абонемент включено 10 занятий. В абонементе три вида занятия,у каждого свой день недели. Занятия повторяются каждую неделю в тот же день.
Как создать цикл создания занятий, так чтобы он прерывался когда в базу запишутся 10 занятий?


Код: 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.
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 / 0
Цикл записи с прерыванием по условию
    #39442585
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
40.
41.
42.
Private Sub Кнопка177_Click()
On Error GoTo er1 
If Nz(Me.ФИО_ребенка) = "" Then
   MsgBox ("Занятие НЕ сохранено. Выберите клиента.")
   Exit Sub  '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\    
Else
   Dim rs12 As Recordset, i, myDate As Date
   'Dim rs13 As Recordset коменты ниже выкинул, значит это тоже не нужно...
   Dim j as long 
   myDate = Me.D11
   myDate1 = Me.D21
   myDate2 = Me.D31
   Set rs12 = CurrentDb.OpenRecordset("Расписание")
   'Set rs13 = CurrentDb.OpenRecordset("Расписание")  коменты ниже выкинул, значит это тоже не нужно...
   j=0       '\\\\\\\\\\\\\\\\\    
   For i = 1 To Me.Занятий
    If Me.P1 > 0 Then
     rs12.AddNew
     rs12![ФИО ребенка] = Me.ФИО_ребенка
     rs12!НомерЗанятия = i
     rs12![ДатаЗанятия] = myDate
     myDate = myDate + 7
     rs12.Update
     j=j+1          '\\\\\\\\\\\\\\\\\
       if j = 10 Then  '\\\\\\\\\\\\\\\\\
         MsgBox ("Занятие успешно сохранено!") '\\\\\\\\\\\\\\\\\
         rs12.Close  '\\\\\\\\\\\\\\\\\
         Exit Sub    '\\\\\\\\\\\\\\\\\
       End if        '\\\\\\\\\\\\\\\\\ 
    End If
  Next i   '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
End If
er1:
MsgBox ("Ошибка!")  '\\\\\\\\\\\\\\\\\\\\\\\\\\\
End Sub

' Дополнительный счетчик j для подсчета удачных
' rs12.AddNew
' ибо i хоть и растет, но его считать не стоит из-за 
' наличия If Me.P1 > 0 Then
' если в базу ляжет меньше 10 записей - тоже будет ошибка...
' ну и так то проверить не на чем...
...
Рейтинг: 0 / 0
Цикл записи с прерыванием по условию
    #39442589
quickstar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vmag, да, код отсчитывает 10 занятий и выходит.
Теперь вопрос как включить в цикл второй тип занятия со своей датой и параметрами?

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

Следовательно, расписание должно построиться.
Занятие 1: D1
Занятие 2: D2
Занятие 3: D1+7
...
Рейтинг: 0 / 0
Цикл записи с прерыванием по условию
    #39442961
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.
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 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Цикл записи с прерыванием по условию
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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