Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
ankan
41 / 26 / 0
Регистрация: 28.09.2012
Сообщений: 799
1

Запрет на изменение данных в поле в зависимости от наличия или отсутствия данных в другом поле

23.05.2014, 12:29. Просмотров 991. Ответов 10
Метки нет (Все метки)

Форумчане,доброго времени суток!
Помогите решить проблему:

В форме "frmВозвраты_Из_ОТК_ОТК_Калинин_СЮ" есть поле "Дата_ОТК_Повторно"
нужно сделать так что-бы это поле невозможно было заполнить пока:


в поле "Код_tblСправочник_Доработок" не появится значение отличное от "nd" И(ИЛИ) в поле "Комментарий" не появится какая-либо запись



В форме "frmВозвраты_Из_ОТК_ОТК_Калинин_СЮ" сейчас находятся четыре записи, три первые из них удовлетворяют вышеописанному условию( т.е. "Дата_ОТК_Повторно" можно заполнить),
четвертая из них НЕ удовлетворяет условию( т.е. "Дата_ОТК_Повторно" НЕЛЬЗЯ заполнить)
0
Вложения
Тип файла: rar Запрет на изменение поля( по условию).rar (186.1 Кб, 5 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2014, 12:29
Ответы с готовыми решениями:

Изменение цвета фона элемента управления формы при запуске процедуры. Запрет на заполнение поля в зав-ти от наличия данных в другом поле
Доброго всем здоровья! Помогите решить проблему! Есть форма "...

Как обеспечить зависимость значений для ввода в поле базы данных от значения в другом поле базы данных?
Есть 2 таблицы справочников (все факторы и все возможные значения - tblDicFactor и...

Значение в поле в зависимости от значения в другом поле
Здравствуйте. Задача опять образовалась. В запросе из нескольких таблиц имеем поле «Выслуга» в...

Вывод данных в поле формы в зависимости от кода
Всем доброго времени суток! Прошу помощи в следующем вопросе - есть форма, неважно какая, допустим...

Выбор данных в поле в зависимости от установленного флажка
Добрый день! Столкнулась с такой задачей: Есть 2 справочника: Сырье и Материалы. Хочу сделать...

10
Пытливый
1381 / 692 / 249
Регистрация: 29.05.2013
Сообщений: 3,125
23.05.2014, 12:41 2
Напрашивается очевидное решение сделать поле Дата_ОТК_Повторно вычисляемым. Это специальный тип поля, который не подлежит ручному редактированию, а заполняется на основе некоторых условий, что вам и нужно.
1
ankan
41 / 26 / 0
Регистрация: 28.09.2012
Сообщений: 799
23.05.2014, 12:51  [ТС] 3
Врят-ли.
Значение в поле "Дата_ОТК_Повторно" не привязано каким-либо алгоритмом к текущей дате ( Date)
0
boby104
868 / 338 / 87
Регистрация: 21.03.2013
Сообщений: 868
23.05.2014, 12:56 4
ankan,
Visual Basic
1
2
3
4
5
6
7
If IsNull(Me.Дата_ОТК_Повторно) = False Then
    If ((Me.Код_tblСправочник_Доработок = 7)) And ((Me.Комментарий = "") Or IsNull(Me.Комментарий)) Then
    MsgBox "Заполните поле Комментарий или уберите nd ...", , "Данные не будут внесены"
    DoCmd.CancelEvent
    Me.Дата_ОТК_Повторно = Null
    End If
End If
я бы в форме в свойстве до обновления вставил такой бы код
1
23.05.2014, 12:56
ltv_1953
Эксперт MS Access
13310 / 6018 / 1205
Регистрация: 21.06.2012
Сообщений: 10,872
23.05.2014, 13:14 5
Стандартное решение
Visual Basic
1
2
3
4
5
6
7
Private Sub Form_Current()
    If (Me.Êîä_tblÑïðГ*âî÷Г*ГЁГЄ_ÄîðГ*áîòîê = "nd") Or (Me.ÊîììåГ*ГІГ*ðèé <> "") Or (Not IsNull(Me.ÊîììåГ*ГІГ*ðèé)) Then
        Me.Г„Г*ГІГ*_ГЋГ’ГЉ_ÏîâòîðГ*Г®.Locked = False
    Else
        Me.Г„Г*ГІГ*_ГЋГ’ГЉ_ÏîâòîðГ*Г®.Locked = True
    End If
End Sub
Можно еще добавить (если нужно) аналогичные процедуры Код_tblСправочник_Доработок_AfterUpdate() и Комментарий_AfterUpdate(), чтобы ограничение срабатывало сразу.
1
boby104
868 / 338 / 87
Регистрация: 21.03.2013
Сообщений: 868
23.05.2014, 13:20 6
ltv_1953, у ankan к полю Код_tblСправочник_Доработок привязан счетчик, а видимое значение nd, проверять нужно по индексу который равен 7, так мне кажется правильнее. Плюс пользователь не всегда вспомнит что нужно сделать, чтоб дать доступ к полю
1
ltv_1953
Эксперт MS Access
13310 / 6018 / 1205
Регистрация: 21.06.2012
Сообщений: 10,872
23.05.2014, 13:29 7
7 так 7, не смотрел. Но есть стандартные свойства поля Locked и Enabled, которыми и следует пользоваться для таких ограничений.
1
ankan
41 / 26 / 0
Регистрация: 28.09.2012
Сообщений: 799
23.05.2014, 14:15  [ТС] 8
ltv_1953, процедура работает некорректно в случае если:

"Код_tblСправочник_Доработок" <>"nd" И поле "Комментарий" = Null

( по условию поле "Дата_ОТк_Повторно" заполнять можно- но НЕ Заполняется)

Добавлено через 9 минут
boby104, вставил Вашу процедуру в событие формы BeforeUpdate - но процедура корректно не заработала( можно внести значение в поле "Дата_ОТК_Повторно" в любом случае, не зависимо от условия)
0
ltv_1953
Эксперт MS Access
13310 / 6018 / 1205
Регистрация: 21.06.2012
Сообщений: 10,872
23.05.2014, 14:21 9
Цитата Сообщение от ankan Посмотреть сообщение
в поле "Код_tblСправочник_Доработок" не появится значение отличное от "nd" И(ИЛИ) в поле "Комментарий" не появится какая-либо запись
Сделано ИЛИ, сделать одновременно И и ИЛИ это как? Они исключают друг друга. Определитесь с условием. Во вложении, как и было указано ранее, подставлен код 7.
В первых трех (по коду) - разрешено, в четвертой - запрет.
1
Вложения
Тип файла: 7z Запрет на изменение поля( по условию).7z (41.5 Кб, 11 просмотров)
boby104
868 / 338 / 87
Регистрация: 21.03.2013
Сообщений: 868
23.05.2014, 14:30 10
ankan, Я вставляю свой код в ДоОбновления работает
корректно. Но другие события этой формы должны быть пустыми. Напишите что конкретно не работает.
Мой алгоритм такой: если пользователь хочет внести данные в поле и оно отвечает условию то данные вносятся, если условие не соблюдено то появляется сообщение и данные вытираются. Повторное введение данных то же самое.
Удалите сначала процедуру из события ТекущаяЗапись
1
ankan
41 / 26 / 0
Регистрация: 28.09.2012
Сообщений: 799
23.05.2014, 14:58  [ТС] 11
ltv_1953, Ваш код работает корректно, вероятно у меня были какие-то сбои или я не верно вставлял код в редакторе VBA ( вставлял и сохранял изменения, не закрывая редактор)- процедура работала некорректно.
Затем закрыл редактор VBA .открыл форму- все работает корректно, спасибо!

Добавлено через 3 минуты
boby104 , все работает корректно, Спасибо!
Появляется сообщение при закрытии формы( я почему -то думал оно должно появляться в момент перевода курсора с заполненного поля "Дата_ОТК_Повторно")
0
23.05.2014, 14:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2014, 14:58

Изменение данных в поле
Здравствуйте! Имеется таблица Товары, в ней есть поле Цена, нужно все значения этого поля...

Изменение цвета данных в поле
Подскажите вожможно ли в одном поле(как то програмно изменять цвета) т.е Например поле1- вней...

Как обеспечить зависимость значений для ввода в поле базы данных от значения в другом поле базы данных?
В таблицу DicFactor вводятся факторы, а в связанную с ней таблицу FactorValue вводятся допустимые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru