ПредишенСледващото

1. Има маса с недвижими имоти.
2. Целта е идентифицирана посредством нейната ID ( "ID обект")
3. Обектите имат крайна дата ( "Крайна дата")
4. Използвайте заявка изберете всички записи, където крайната дата е по-малка или равна на текущата дата.
5. Отидете на първия запис
6. Ако крайната дата е по-малко от или равно на 7 ( "седем"), след това се записва "ID обект" на текущия запис в масив.
7. Отидете на пътеката. запис. (цикъл до .eof)

8. издава предупреждение, казвайки, че "животът в някои обекти скоро ще свърши"
9. Open форма само тези записи, където "ID обект" = данни от масива.


Частни Под Form_Open (Отмени Като цяло число)
Дим okdate, okdate2, MSG, DT, DF, д, т, у Както стринга
Дим SSD Както Дата
Дим ар Както стринга "Array да бъде най-вероятно
okdate = DATEVALUE (А ()) "в заявката за две полета" ID обект "и" крайна дата ", на" крайна дата "> = [N]

С CurrentDb.QueryDefs ( "Крайна дата")
.Параметри ( "N") = okdate
С .openrecordset
Ако не .EOF Тогава
.MoveFirst
правя
DT = .Fields ( "Крайна дата")
г = Nz (ляв (DT, 2), "") `дни
m = Nz (Mid (DT, 4, 2), "") `месец
у = Nz (Right (DT, 4), "") `години (нали?)
SSD = г "." m "." ш
DF = DateDiff ( "D", SSD, сега) `определя, като разликата в дни между текущата дата и крайна дата

Ако ге <= "7" Then
ар = .Fields ( "ID обект") `как нещо трябва да бъде написано в масива
.MoveNext
още
.MoveNext
Крайна сметка, ако
Loop До .EOF
Крайна сметка, ако
завършва с
завършва с

Ако Аг = Null След `ако масива е празна
Exit Sub `напусне
още
съобщ = MsgBox ( "Има обекти, чиито мандат приключва скоро!", vbYesNo + vbCritical, "Внимание!")
Ако съобщ = vbYes Тогава
DoCmd.OpenForm "обект". [ID обект] = Аг `данни" ID обект "от масива (многоредово)
още
Exit Sub
Крайна сметка, ако
Крайна сметка, ако
End Sub

Най-сложните наказателни дела.

но не и по-лесно да филтрирате по дата, за да пишете директно в съответствие филтъра на самата форма?

Е, ако процедурата е както следва:

Код: Избери всички
Дим ар като String
Ако ар = "" Тогава
Аг = "[ID обект] =" .Fields ( "ID обект") "филтър е оформен за едно поле стойност
още
Аг = ар "Or [ID обект] =" .Fields ( "ID обект") "се добавят повече стойност, ако има такива
Крайна сметка, ако

DoCmd.OpenForm "обект". ар

Не, това няма да стане.
първо трябва да попълните масив (както е, не знам)
и след това отворете формата не ИЛИ и И

Според вашето желание е възможно само две възможности

или да отворите формата от последния запис (както е сега)
или HZ какво ще се случи)))
След това цикълът, независимо дали това е необходимо.

Аг = ар "Or [ID обект] =" .Fields ( "ID обект") "се добавят повече стойност, ако има такива

Добавен поредния стойност, като например.

Най-сложните наказателни дела.

Forlaw написал (а): Аз не, тя няма да работи.
първо трябва да попълните масив (както е, не знам)
и след това отворете формата не ИЛИ и И


Донесох част от код, който формира "масив" АБ. линия е къде или чрез списъци стойности на полетата [ID на обекта]. И с просто нищо не се случва. Осем не могат едновременно да бъдат първите пет и девет

[/ Цитат]
така че би било:
код вложка е направена в обикновен текст, така че не може да се проследи точно гнездене
Код: Избери всички
Ако ге <= "7" Then
Ако ар = "" Тогава
Аг = "[ID обект] =" .Fields ( "ID обект") "филтър е оформен за едно поле стойност
още
Аг = ар "Or [ID обект] =" .Fields ( "ID обект") "се добавят повече стойност, ако има такива
Крайна сметка, ако
.MoveNext
още
.MoveNext
Крайна сметка, ако

и като цяло по-добре да се използва направо филтър по дата, а не цикли на града с сравнения

Свързани статии

Подкрепете проекта - споделете линка, благодаря!