
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
17.08.2004, 17:14:56
|
|||
|---|---|---|---|
|
|||
Поставишь точку останова -- работает, уберешь -- не работает... |
|||
|
#18+
Странно... Ставлю на условное форматирование пользовательскую функцию -- неправильно форматирует. Более того, если в этой функции есть точка останова, все нормально. Останавливаем, запускаем -- ОК. Если точки останова нет... вообще непонятно, откуда он (Access) такое форматирование берет: фон -- прозрачный (хотя ни в одних свойствах такого нет), цвет -- по умолчанию. ------------ на всякий случай текст функций ----------- Public Function IsHoliday(ByVal aDate As Date) As Boolean ' Возвращает True, если день является праздничным Select Case Format(aDate, "dd.mm") Case "01.01", "02.01", "23.02", "08.03", "01.05", "02.05", _ "09.05", "12.06", "07.11", "12.12" IsHoliday = True Case Else IsHoliday = False End Select End Function Public Function IsRestDay(ByVal aDate As Date) As Boolean ' Возвращает True, если день является выходным или праздничным ' (учитывая переносы праздничных дней) If IsHoliday(aDate) Then IsRestDay = True Exit Function End If Select Case Weekday(aDate) Case vbMonday, vbFriday IsRestDay = (IsHoliday(aDate + 1) Or IsHoliday(aDate - 1)) Case vbSaturday IsRestDay = (Not IsHoliday(aDate + 3)) Case vbSunday IsRestDay = (Not IsHoliday(aDate - 3)) Case Else IsRestDay = False End Select End Function -------------- вызов в условном форматировании: IsRestDay(CDate(Format([M10];"0")+"."+Format([M1];"0")+"."+Format([Y];"0000"))) где M10 (число месяца), M1 (месяц) и Y (год) -- числовые поля таблицы, которая приаттачена к строке редактирования (связь по полю M10). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.08.2004, 17:41:58
|
|||
|---|---|---|---|
|
|||
Поставишь точку останова -- работает, уберешь -- не работает... |
|||
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.08.2004, 07:55:08
|
|||
|---|---|---|---|
|
|||
Поставишь точку останова -- работает, уберешь -- не работает... |
|||
|
#18+
2 Владимир, Саныч: ;) Спасибо за совет. К сожалению -- все равно не работает. Тут в Access Help вот что написано: Microsoft Access Caution Any time you temporarily yield the processor within an event procedure, make sure the procedure is not executed again from a different part of your code before the first call returns; this could cause unpredictable results . In addition, do not use DoEvents if other applications could possibly interact with your procedure in unforeseen ways during the time you have yielded control. А как насчет квазипараллельного исполнения подпрограммы условного форматирования во всех элементах? Может, с этим связано? P.S. Кста, на FormActivate DoEvents тоже не работает. На FormCurrent -- работает, но только первая запись. ;) P.P.S. Боюсь, в условном форматировании уже что-то вроде DoEvents стоит -- уж очень подозрительно подмигивает заголовок окна MS Access во время открытия формы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.08.2004, 09:21:55
|
|||
|---|---|---|---|
|
|||
Поставишь точку останова -- работает, уберешь -- не работает... |
|||
|
#18+
Попробуй поэксперементировать с функциями. 1.Замени в вызове IsRestDay(CDate на DateSerial Запусти 2.Выброси всю начинку из ф-ии IsRestDay, пусть она изначально возвращает False Запусти 3.Понемногу возврашай код в ф-ию IsRestDay Может быть поймаешь когда начинаются проблемы. Удачи! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.08.2004, 09:37:48
|
|||
|---|---|---|---|
|
|||
Поставишь точку останова -- работает, уберешь -- не работает... |
|||
|
#18+
ЗЫ Проверил твои ф-ии у себя на компе - все работает, если региональные установки даты дд.мм.гггг, а у меня было дд/мм/гггг , естественно, получил ошибку. Так что, если у тебя рег. установки другие, применение CDate - проблематично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.08.2004, 09:41:03
|
|||
|---|---|---|---|
Поставишь точку останова -- работает, уберешь -- не работает... |
|||
|
#18+
Посмотри кусок моего кода - может поможет :о) В табличной форме имена контролов, отображающие суммарные данные за день месяца, состоят из номера дня (1,2,3,4...31). Таким макаром при Requery заливаю столбцы, если праздник или выходной и скрываю лишние, если месяц меньше 31 дня. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.08.2004, 09:41:23
|
|||
|---|---|---|---|
|
|||
Поставишь точку останова -- работает, уберешь -- не работает... |
|||
|
#18+
2 Rivkin Dmitry: Насчет DateSerial -- спасибо ;) (русские легких путей не выбирают ;) ). Но все равно не работает, хоть удаляй код, хоть не удаляй. Дело действительно в DoEvents, но когда ее вызывать -- ума не приложу. Были испробованы даже такие варианты: IsRestDay(CDate(Format(DoEvents()*0+[M10];"0")+"."+Format([M1];"0")+"."+Format([Y];"0000"))) IsRestDay(CDate(Format([M10];"0")+"."+Format([M1];"0")+"."+Format([Y];"0000"))) Or DoEvents() Толку мало (при таком изменении вообще условное форматирование отключается, выдается формат по умолчанию). Лучший результат был, когда в FormCurrent ставилось DoEvents -- хоть одна (первая) строка рассчитана... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.08.2004, 09:49:14
|
|||
|---|---|---|---|
|
|||
Поставишь точку останова -- работает, уберешь -- не работает... |
|||
|
#18+
2 Витал: Если бы у меня один контрол отвечал за один день -- можно вообще ему просто ForeColor поменять. У меня ленточная форма... А в "выражении" разве не имена полей таблицы, а имена контролов? А какой синтаксис? 2 Rivkin Dmitry: Форма -- ленточная... :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.08.2004, 10:01:46
|
|||
|---|---|---|---|
Поставишь точку останова -- работает, уберешь -- не работает... |
|||
|
#18+
Dark Night2 Витал: Если бы у меня один контрол отвечал за один день -- можно вообще ему просто ForeColor поменять. У меня ленточная форма... А в "выражении" разве не имена полей таблицы, а имена контролов? А какой синтаксис? 2 Rivkin Dmitry: Форма -- ленточная... :( Код: plaintext 1. "Если бы у меня один контрол отвечал за один день...", а за сколько он отвечает? если не секрет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.08.2004, 17:20:43
|
|||
|---|---|---|---|
|
|||
Поставишь точку останова -- работает, уберешь -- не работает... |
|||
|
#18+
2 Витал: По идее, должен получиться календарик. Такой вот: Код: plaintext 1. 2. 3. 4. 5. 6. 7. P.S. А разве обязательно такое сложное значение ставить для всегда_труйного_выражения? Можно поставить просто слово True -- оно точно всегда True! И, тем более, можно и ForeColor поменять... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=45&tablet=1&tid=1672330]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 357ms |

| 0 / 0 |
