powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Событие перед созданием новой записи
15 сообщений из 15, страница 1 из 1
Событие перед созданием новой записи
    #39831613
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

Возникла непонятная ситуация в процессе модернизации базы (Access 2003). Прошу помощи!

Есть простая форма для работы с заказами и создающая новые заказы. Работает напрямую с таблицей.
При создании новой записи в таблицу автоматически подставляется текущая дата в [ДатаЗаказа] - значение по умолчанию Date(), а в [ДатаГотовности] прописывается значение по умолчанию Date() + 9. Далее вводятся разные данные: ФИО заказчика, номер заказа и прочее...
Т.е. при переходе формы в режим новой записи (стандартная кнопка внизу формы - стрелка вправо со звездочкой), [ДатаЗаказа] и [ДатаГотовности] уже заполнены данными.
При двойном клике по вышеуказанным контролам открывается календарик, где можно выставить любую дату.

Хочу сделать так: сразу при переходе в режим новой записи, если [ДатаГотовности] попадает на субботу или воскресенье, то сразу автоматически открывался этот календарик для возможности вручную скорректировать дату менеджером.

Что-то типа такого:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub Дата_готовности_BeforeInsert(Cancel As Integer)
'если дата попадает на на субботу или воскресенье - открыть календарик для коррекции даты
    If Format(Me.Дата_готовности, "w", 2) = 6 Or Format(Me.Дата_готовности, "w", 2) = 7 Then
        Me.Дата_готовности.SetFocus
        DoCmd.OpenForm "DatePicker"
    End If
End Sub


Пробовал на разные события прописывать: BeforeInsert, AfterInsert, AfterUpdate, Dirty, Enter... Нет никакой реакции!
Подскажите, что не так?
Как правильно сделать?
...
Рейтинг: 0 / 0
Событие перед созданием новой записи
    #39831623
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал так, чтобы после ввода номера заказа проверялась дата готовности. Работает!
Код: vbnet
1.
2.
3.
4.
5.
6.
Private Sub Номер_заказа_LostFocus()
    If Format(Me.Дата_готовности, "w", 2) = 6 Or Format(Me.Дата_готовности, "w", 2) = 7 Then
        Me.Дата_готовности.SetFocus
        DoCmd.OpenForm "DatePicker"
    End If
End Sub


Но все же хотелось бы, чтобы проверка выполнялась сразу при переходе в режим создания записи
...
Рейтинг: 0 / 0
Событие перед созданием новой записи
    #39831712
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex37...Но все же хотелось бы, чтобы проверка выполнялась сразу при переходе в режим создания записиЕсли очень хочется,то почему в коде не наблюдается
Код: vbnet
1.
2.
3.
If Me.NewRecord Then
...
End If
...
Рейтинг: 0 / 0
Событие перед созданием новой записи
    #39831716
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuAlex37...Но все же хотелось бы, чтобы проверка выполнялась сразу при переходе в режим создания записиЕсли очень хочется,то почему в коде не наблюдается
Код: vbnet
1.
2.
3.
If Me.NewRecord Then
...
End If



Спасибо за ответ. Но не соображу. А к чему это привязать?
...
Рейтинг: 0 / 0
Событие перед созданием новой записи
    #39831717
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вдогонку:и событие Form_Current()
...
Рейтинг: 0 / 0
Событие перед созданием новой записи
    #39831721
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuвдогонку:и событие Form_Current()

Попробовал в разных вариантах с этим событием. Появляется сообщение об ошибке при, например, попытке пролистать записи...
...
Рейтинг: 0 / 0
Событие перед созданием новой записи
    #39831727
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex37,
а может делать значением по умолчанию ближайший рабочий день?
Так все работает
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub дата_GotFocus() 'Form_Current()
'событие выберите сами
If (Weekday(Me.дата) = 7 Or Weekday(Me.дата) = 1) And Me.NewRecord Then
    MsgBox "выходной,исправьте дату"
    Me.дата.ShowDatePicker = 1
End If
End Sub
...
Рейтинг: 0 / 0
Событие перед созданием новой записи
    #39831734
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
код,что предложен,предполагает значение по умолчанию (в таблице или форме) =Date()
...
Рейтинг: 0 / 0
Событие перед созданием новой записи
    #39831745
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил остановиться на таком варианте:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Номер_заказа_AfterUpdate()
'если дата попадает на на субботу или воскресенье - открыть календарик для коррекции даты
    If Weekday(Me.Дата_готовности) = 7 Or Weekday(Me.Дата_готовности) = 1 Then
        Beep
        Me.Дата_готовности.SetFocus
        DoCmd.OpenForm "DatePicker"
    End If
End Sub


До вчерашнего дня, в течении лет 12, [Дата готовности] = [Дата заказа] + 7. Т.е. Дата готовности почти всегда попадала в рабочие дни (кроме праздников среди недели).
Менеджеры уже отвыкли кликать на контролах [Дата заказа] и [Дата готовности]. Теперь стало Date + 7.
Ввод номера заказа обязателен. Иначе форму не закрыть + появится соответствующее сообщение. Форма открывается с курсором в поле номера заказа. Его набирают первым и проверка даты готовности будет выполнена!

Спасибо sdku ! Подсказал идею для дальнейшего апгрейда. ;)
...
Рейтинг: 0 / 0
Событие перед созданием новой записи
    #39831746
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Правильно так:
Менеджеры уже отвыкли кликать на контролах [Дата заказа] и [Дата готовности]. Теперь стало Date + 9.
...
Рейтинг: 0 / 0
Событие перед созданием новой записи
    #39831753
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex37.... Теперь стало Date + 9.а почему не так:если суббота то Date()+2;если воскресенье Date()+1.А еще бывают праздники и переносы выходных-здесь без дополнительной таблицы не обойтись...
...
Рейтинг: 0 / 0
Событие перед созданием новой записи
    #39831756
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И уже потом +7 и +выходные в этих 7
...
Рейтинг: 0 / 0
Событие перед созданием новой записи
    #39831768
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuAlex37.... Теперь стало Date + 9.а почему не так:если суббота то Date()+2;если воскресенье Date()+1.А еще бывают праздники и переносы выходных-здесь без дополнительной таблицы не обойтись...
Так сложилось. Нет четких правил. Кроме того, ранее могли быть проведены заказы со сроками более 15, 20 дней (несколько раз в месяц бывают). Приходится учитывать эти дни готовности, чтобы не перегружать цех в эти дни ... И ещё масса моментов не поддающихся логике и программированию :) Без ручного контроля не обойтись.
...
Рейтинг: 0 / 0
Событие перед созданием новой записи
    #39831806
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex37,
может в таблице добавить "срокИсполненияЗаказа",со значением по-умолчанию наиболее часто используемой длительностью и уже после его заполнения считать
...
Рейтинг: 0 / 0
Событие перед созданием новой записи
    #39831933
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuAlex37,
может в таблице добавить "срокИсполненияЗаказа",со значением по-умолчанию наиболее часто используемой длительностью и уже после его заполнения считать
Спасибо за советы. Я переговорил почти со всеми менеджерами, работающими с базой, требования у разных отделов разделились. Видимо буду для каждого отдела делать свою форму со своими расчетами. Так будет правильнее...
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Событие перед созданием новой записи
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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