Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
5 / 5 / 6
Регистрация: 12.07.2011
Сообщений: 723

Запрет ввода в поле подчиненной формы

03.04.2014, 09:06. Показов 4305. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Делаю в Аксесс форму для ввода данных с подчиненной формой. На главной форме есть список, из которого выбираются значения для некоторых полей подчиненной формы. Структура списка на главной форме:Договор,Документ,примечание. По нажатию на элементе списка главной формы в поля подчиненной формы записываются все три поля:Договор,Документ,примечание и текущая дата в кратком формате. Также в подчиненной форме есть поле "времяНаДокумент" - количество часов, которое потрачено на документ. Проблема в том, что юзеры ставят часы в подчиненную форму не выбрав документ... т.е. ставят в пустое место.... Как сделать проверку заполнения и запретить ввод в поле ВремянаДокумент, поля строки, куда пытаются ввести значение, все пустые?бывает и такой казус: документ выбрали, он записался в форму, ачасы ставят... ниже, в следующую пустую строку... этого надо как то тоже избежать...
Есть на главной форме список, куда выводятся работы сотрудника. Работник должен выбрать в списке нужную работу двойным щелчком и атрибуты этой работы должны прописаться в поля подчиненной формы. Я это делаю так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub ТекЗадачи_DblClick(Cancel As Integer)
Forms![EzhetOtchet]![ЕжТрудоЗатратаОтчета].SetFocus
 'Forms![EzhetOtchet]![ЕжТрудоЗатратаОтчета].Form![Назначение].SetFocus
 'if ТекЗадачи.Column(0) Not in [Forms![EzhetOtchet]![ЕжТрудоЗатратаОтчета].Form![Назначение] then
 DoCmd.GoToRecord , , acNewRec
 Forms![EzhetOtchet]![ЕжТрудоЗатратаОтчета].Form![Объект] = ТекЗадачи.Column(1)
 Forms![EzhetOtchet]![ЕжТрудоЗатратаОтчета].Form![Объект].Enabled = False
Forms![EzhetOtchet]![ЕжТрудоЗатратаОтчета].Form![Примечание] = ТекЗадачи.Column(5)
Forms![EzhetOtchet]![ЕжТрудоЗатратаОтчета].Form![Примечание].Enabled = False
Forms![EzhetOtchet]![ЕжТрудоЗатратаОтчета].Form![НазваниеДокумента] = ТекЗадачи.Column(3)
Forms![EzhetOtchet]![ЕжТрудоЗатратаОтчета].Form![НазваниеДокумента].Enabled = False
Forms![EzhetOtchet]![ЕжТрудоЗатратаОтчета].Form![Назначение] = ТекЗадачи.Column(0)
Forms![EzhetOtchet]![ЕжТрудоЗатратаОтчета].Form![Дата] = Date
Forms![EzhetOtchet]![ЕжТрудоЗатратаОтчета].Form![Дата].Enabled = False
'end if
End Sub
т.е. в подчиненную форму при двойном щелчке на списке ТекЗадачи попадают: объект(договор),НазваниеДокумента, Примечание, Дата. Есть в подчиненной форме поле ВремяНаДокумент, которое заполняется с клавиатуры, т.е. в каждой строке подчиненной формы, где прописан документ, пользователь заполняет ВремяНаДокумент сам. Задача состоит в том, чтоб запретить заполнять ВремяНаДокумент в подчиненной форме, если не выбран документ в списке главной формы и также запретить заполнять ВремяНаДокумент в пустой строке ниже, под заполненной строкой(бывает такое, что документ выбрали, строка в подчиненной форме заполнена, а ставят цифру не глядя в пустое место строкой ниже).
[ЕжТрудоЗатратаОтчета] -есть та самая подчиненная форма.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.04.2014, 09:06
Ответы с готовыми решениями:

Запрет на создание записи в подчиненной форме при отсутствии значения в поле главной формы( или в этой же подчиненной форме) Аксесс 2003
Доброго времени суток ! Помогите , пожалуйста, решить проблему! шаг 1. В форме "frmТОиР_2" при вводе в "ПОЛЕ...

Запрет ввода пустого значения в поле формы
Прошу помощи - при формировании формы на основе таблицы - необходимо запретить в форме вводить пустое значения для данного поля, -...

Объединение вертикальных полей подчиненной формы в одно поле главной формы
Доброго времени суток уважаемые форумчане! Подскажите пож-та каким образом можно объединить поля из разных записей подчиненной формы в...

10
106 / 55 / 7
Регистрация: 10.03.2014
Сообщений: 185
03.04.2014, 10:57
самое простое в таблице, на которую опирается ваша подчиненная форма, объявить поля обязательными, тогда акс сам не даст ввести . но красивее проверить предыдущее( вносимое из главной формы), если оно равно "" или isnull(предыдущего)=true , то msgbox(" сделайте то что нужно")
1
5 / 5 / 6
Регистрация: 12.07.2011
Сообщений: 723
03.04.2014, 11:08  [ТС]
на каком событии поля это лучше сделать? я имею ввиду проверку. AfterUpdate не всегда работает, т.к. щелкнув цифру, люди сразу нажимают кнопку "Отправить" на главной форме...
0
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,082
03.04.2014, 11:12
Ничего не понял... Это?
Visual Basic
1
if isnull(ТекЗадачи.Column(3)) then
0
5 / 5 / 6
Регистрация: 12.07.2011
Сообщений: 723
03.04.2014, 11:13  [ТС]
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub ВремяНаДокумент_AfterUpdate()
If IsNull(Назначение.Value) Then
ВремяНаДокумент = 0
MsgBox "Для ввода трудозатрат необходимо выбрать задачу из списка"
End If
If ВремяНаДокумент > 8 Then
MsgBox "Введено недопустимое значение Количество часов факт. Количество трудозатрат за день не может быть больше 8 часов"
ВремяНаДокумент = 0
End If
End Sub
пробовал так делать. Если ввести в пустое место и нажать на кнопку на главной форме,которая сохраняет запись,все проходит, а этого нельзя допускать...
0
3357 / 1776 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
03.04.2014, 11:15
Событие BeforeUpdate выберите.
И ставьте Cancel=True.
0
5 / 5 / 6
Регистрация: 12.07.2011
Сообщений: 723
03.04.2014, 11:17  [ТС]
Visual Basic
1
..If IsNull(Назначение.Value) Then...
вот проверка... Назначение - это поле, значение которого возвращается при выборе элемента из списка на главной форме. В подчиненной форме поле Назначение используется как внешний ключ.
0
106 / 55 / 7
Регистрация: 10.03.2014
Сообщений: 185
03.04.2014, 11:38
если у вас пользователи такие резвые, сделайте аналогичную проверку и на кнопку отправить
1
5 / 5 / 6
Регистрация: 12.07.2011
Сообщений: 723
03.04.2014, 11:58  [ТС]
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
If Len(Forms![EzhetOtchet]![ЕжТрудоЗатратаОтчета].Form![Назначение]) = 0 Then
MsgBox "Проверьте заполнение отчета"
Else
 If MsgBox("Вы подтверждаете распределение часов по задачам?", vbYesNo) = vbYes Then
 If СуммаЗатратЗаДень<= 8 Then
 If СуммаЗатратЗаДень > 0 Then
 DoCmd.SetWarnings False
 DoCmd.OpenQuery "ОбновлениеОстатковВремени", , acEdit
DoCmd.OpenQuery "ОбновлениеОстатковЧасов", , acEdit
 MsgBox "Отчет принят!", vbOKOnly
  DoCmd.SetWarnings True
 ТекЗадачи.Requery
ЧасовВОтчете = Forms![EzhetOtchet]![ЕжТрудоЗатратаОтчета].Form![ИтогЗаДень]
 DoCmd.Close acForm, "EzhetOtchet", acSaveYes
 Else
 MsgBox "превышена длительность рабочего дня", vbOKOnly
 End If
 End If
End If
End If
End Sub
вот так я сохраняю запись, нажатием на кнопку "Отправить". Все равно отправка срабатывает(особенно, если в подчиненной форме несколько строк и часть из них заполнена, а часть - нет), а не должна срабатывать, если не все строки, куда часы заполнили, заполнены работами.
0
106 / 55 / 7
Регистрация: 10.03.2014
Сообщений: 185
03.04.2014, 12:16
вы проверяете Len(Forms![EzhetOtchet]![ЕжТрудоЗатратаОтчета].Form![Назначение]) = 0, а у пустоты нет длины, вы бы выложили базу или кусок, проще сделать чем словами объяснить...
1
5 / 5 / 6
Регистрация: 12.07.2011
Сообщений: 723
03.04.2014, 12:28  [ТС]
выкладываю. Смотрите форму EzhetOtchet
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.04.2014, 12:28
Помогаю со студенческими работами здесь

Поле подчиненной формы
Сделал базу больницы по заданию, и столкнулся с проблемой, нужно чтобы поле из подчиненной формы брало значение из основной, как это...

Вычисляемое поле из подчиненной формы
Есть две формы, одна главная, одна подчиненная. На главной форме добавляю поле количество преподавателей, которое будет вычисляться...

Вставка данных в поле формы из подчиненной
Уважаемые форумчане! Здравствуйте! Подскажите, пожалуйста, как реализовать следующее: после занесения данных в поле подчиненной...

Запрос не видит поле подчиненной формы
SELECT Forms...Цена+ Forms...Form.+ Forms...Form.+ Forms...Form. AS Выражение1; Вроде все связано, но все время появляется...

Обновить поле Memo подчиненной формы
всем привет, избитая наверное тема... но никак не могу доехать)) есть главная форма &quot;копия абонент&quot;, на ней подчиненная...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru