Помогите пожалуйста..
1. Есть таблица с объектами недвижимости.
2. Объект определяется по его ID("ID Объекта")
3. У объектов есть дата окончания("Дата окончания")
4. С помощью запроса выбираем все записи, где дата окончания меньше или равна текущей дате.
5. Переходим на первую запись
6. Если дата окончания меньше или равна 7("семи"), то записываем "ID Объекта" текущей записи в массив.
7. Идём на след. запись.(цикл до .eof)
8. Выдаём предупреждение, мол "Срок у некоторых объектов скоро заканчивается"
9. Открываем форму только с теми записями, где "ID Объекта"=данным из массива.
Private Sub Form_Open(Cancel As Integer)
Dim okdate, okdate2, msg, dt, df, d, m, y As String
Dim ssd As Date
Dim ar As String 'массив должен быть, наверно
okdate = DateValue(Now()) 'В запросе два поля "ID Объекта" и "Дата окончания", где "Дата окончания" >= [N]
With CurrentDb.QueryDefs("Дата окончания")
.Parameters("N") = okdate
With .openrecordset
If Not .EOF Then
.MoveFirst
Do
dt = .Fields("Дата окончания")
d = Nz(Left(dt, 2), "") `день
m = Nz(Mid(dt, 4, 2), "") `месяц
y = Nz(Right(dt, 4), "") `год (правильно?)
ssd = d & "." & m & "." & y
df = DateDiff("d", ssd, Now) `определили, вроде, разницу в днях между текущей датой и датой окончания
If df <= "7" Then
ar = .Fields("ID Объекта") `как-то надо записать в массив
.MoveNext
Else
.MoveNext
End If
Loop Until .EOF
End If
End With
End With
If ar = Null Then `если массив пустой
Exit Sub `выходим
Else
msg = MsgBox("Есть объекты, срок которых скоро заканчивается!", vbYesNo + vbCritical, "Предупреждение!")
If msg = vbYes Then
DoCmd.OpenForm "Объект", , ,[ID Объекта]=ar `с данными "ID Объекта" из массива(несколько записей)
Else
Exit Sub
End If
End If
End Sub