Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
rvafexa
17 / 8 / 2
Регистрация: 13.08.2012
Сообщений: 252
#1

Как проверить наличие записи В ПОДЧИНЕННОЙ ФОРМЕ

27.02.2014, 23:12. Просмотров 1383. Ответов 14
Метки нет (Все метки)

привет всем ...


Мне нужно по нажатию на кнопку "новая запись" , в форме "F_Работник" проверить наличие записи В

подчиненной форме " F_Описание" и, если нет записей, выводить сообщение, что поля не заполнены



а, если имеется полностью заполненная строка, (начало_работы, должность, Зарплата) то переходить на новую запись


пожалуйста Помогите реализовать с помощью VBA используя этот файл
0
Вложения
Тип файла: rar test.rar (36.8 Кб, 13 просмотров)
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2014, 23:12
Ответы с готовыми решениями:

Как проверить наличие записи В ПОДЧИНЕННОЙ ФОРМЕ
привет всем ... Как проверить наличие записи В ПОДЧИНЕННОЙ ФОРМЕ с помощью...

Проверить наличие записи в подчиненной форме
Приветствую всех! Понимаю, что на этот вопрос уже 1...000 ответов, но тем не...

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

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

Повторяющие записи в подчиненной форме
Приветствую жителей данного форума. Прошу принять в свою компанию. Помогите...

14
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
28.02.2014, 09:01 #2
Visual Basic
1
2
3
4
5
If IsNull(DLookup("Описание_id", "Описание", "imia='" & Me.imia & "' AND familia='" & Me.familia & "'")) Then
    DoCmd.GoToRecord , , acNewRec
Else
    MsgBox "поля не заполнены"
End If
1
Agapov_stas
3336 / 1739 / 82
Регистрация: 05.08.2010
Сообщений: 4,446
Завершенные тесты: 1
28.02.2014, 09:15 #3
Цитата Сообщение от rvafexa Посмотреть сообщение
а, если имеется полностью заполненная строка
Хотя бы одна или все должны быть заполнены?
Если хотя бы одна, тогда, как вариант:
Visual Basic
1
2
3
4
5
If DCount("*", "Описание", "id_Работник=" & Nz(Me.id, 0) & " AND Len([Описание_id] & '')>0 AND Len([начало_работы] & '')>0 AND Len([должность] & '')>0 AND Len([Зарплата] & '')>0") > 0 Then
   DoCmd.GoToRecord , , acNewRec
Else
   MsgBox ("Твой месседж")
End If
Если все, тогда посчитать разницу общего количества записей и записей со всеми заполненными полями, типа:
Visual Basic
1
2
3
4
5
If DCount("*", "Описание", "id_Работник=" & Nz(Me.id, 0) & "")-DCount("*", "Описание", "id_Работник=" & Nz(Me.id, 0) & " AND Len([Описание_id] & '')>0 AND Len([начало_работы] & '')>0 AND Len([должность] & '')>0 AND Len([Зарплата] & '')>0") = 0 Then
   DoCmd.GoToRecord , , acNewRec
Else
   MsgBox ("Твой месседж")
End If
Но я бы лучше сделал проверку непосредственно в подчиненной форме, ИМХО. Сделать, к примеру обязательными для заполнения все поля.

P.S. Плюс можно использовать RecordsetClone.
0
mobile
Эксперт MS Access
22639 / 12941 / 2662
Регистрация: 28.04.2012
Сообщений: 14,171
28.02.2014, 09:51 #4
Варианты с Dcount не пройдут если в форме есть фильтр. Надо проверять непосредственно рекордсет формы. Он всегда даст актуальное значение. Вне зависимости от способа фильтрации
Visual Basic
1
If Me.МояПодформа.Form.Recordset.EOF Then 'Форма пустая
2
Agapov_stas
3336 / 1739 / 82
Регистрация: 05.08.2010
Сообщений: 4,446
Завершенные тесты: 1
28.02.2014, 09:57 #5
Цитата Сообщение от mobile Посмотреть сообщение
Варианты с Dcount не пройдут если в форме есть фильтр.
Дык посмотрел, вроде нету. К тому же, не сложно собирать строку фильтра и добавлять ее в условие DCount, но там и фильтровать то нечего.
А за рекордсет формы, это да, я З.Ы. подписал тоже. Впрочем, лично как по мне, это все необходимо делать в подчиненной форме, ИМХО, и лучше отдать вообще аксу, а не программно.
0
mobile
Эксперт MS Access
22639 / 12941 / 2662
Регистрация: 28.04.2012
Сообщений: 14,171
28.02.2014, 10:04 #6
Цитата Сообщение от Agapov_stas Посмотреть сообщение
Дык посмотрел, вроде нету
Как Вы это можете знать? Юзер всегда может воспользоваться встроенным фильтром из меню. Вручную. Не программно.
1
Agapov_stas
3336 / 1739 / 82
Регистрация: 05.08.2010
Сообщений: 4,446
Завершенные тесты: 1
28.02.2014, 10:23 #7
Цитата Сообщение от mobile Посмотреть сообщение
Юзер всегда может воспользоваться встроенным фильтром из меню. Вручную. Не программно.
Об этом как-то не подумал.
0
rvafexa
17 / 8 / 2
Регистрация: 13.08.2012
Сообщений: 252
28.02.2014, 10:44  [ТС] #8
все должны быть заполнены - если имеется полностью заполненная строка, (и начало_работы и должность и Зарплата) то переходить на новую запись.

большое спасибо друзья за помощь но не могли бы выложить файл с вашими примерами.

толи я не смог разобрать, толи код не работает?

вот посмотрите...
0
Вложения
Тип файла: rar Rube.rar (36.2 Кб, 12 просмотров)
Тип файла: rar Agapov_stas.rar (36.6 Кб, 9 просмотров)
Тип файла: rar mobile.rar (37.1 Кб, 10 просмотров)
rvafexa
17 / 8 / 2
Регистрация: 13.08.2012
Сообщений: 252
28.02.2014, 11:06  [ТС] #9
встроенным фильтром из меню можно ли заблокировать...

Добавлено через 36 секунд
встроенны фильтр из меню можно и заблокировать xatel skazat
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
28.02.2014, 12:43 #10
rvafexa, а зачем вообще устраивать проверку, когда и так видно на форме, есть ли заполненные поля?
И переделайте вид F_Описание в табличный, гораздо красивше будет.
0
Agapov_stas
3336 / 1739 / 82
Регистрация: 05.08.2010
Сообщений: 4,446
Завершенные тесты: 1
28.02.2014, 13:14 #11
Цитата Сообщение от rvafexa Посмотреть сообщение
но не могли бы выложить файл с вашими примерами.
Там два предложенных варианта.
1
Вложения
Тип файла: rar db.rar (30.2 Кб, 24 просмотров)
Agapov_stas
3336 / 1739 / 82
Регистрация: 05.08.2010
Сообщений: 4,446
Завершенные тесты: 1
28.02.2014, 13:21 #12
Лучший ответ Сообщение было отмечено rvafexa как решение

Решение

Там вариант 2 подправить, в спешке не добавил Do While..Loop.
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
'Вариант2
Private Function MyFun2()
Dim rst As Object, s As String
Set rst = Me.F_Описание.Form.RecordsetClone
 
If rst.RecordCount = 0 Then
   MsgBox ("Не заполнена ни одна запись в подчиненной форме!"): Exit Function
Else
   rst.MoveFirst
   Do While Not rst.EOF
   With rst
        s = "/" & rst![Описание_id] & "/" & rst![начало_работы] & "/" & rst![должность] & "/" & rst![Зарплата] & "/"
        If InStr(1, s, "//") > 0 Then MsgBox ("Не заполнены все поля подчиненной формы!"): Exit Function
        .MoveNext
   End With
   Loop
End If
DoCmd.GoToRecord , , acNewRec
 
Set rst = Nothing
End Function
0
rvafexa
17 / 8 / 2
Регистрация: 13.08.2012
Сообщений: 252
04.03.2014, 09:22  [ТС] #13
If Me.МояПодформа.Form.Recordse.EOF Then


так не работает...
0
Poosh_
0 / 0 / 0
Регистрация: 03.08.2014
Сообщений: 30
06.12.2015, 02:00 #14
Здравствуйте
Подскажите, плз, если есть необходимость проверить наличие записей в подформе (ПФ) для определения доступности кнопки на главной форме (ГФ). Как бы само дело проверить - не проблема, а вот когда - не совсем понимаю. Поместив
Visual Basic
1
2
3
4
If Me.ПФ.Form.Recordset.RecordCount = 0 Then
Me.btn.Enabled = False
Else: Me.btn.Enabled = True
End If
в событие Current ГФ сходу все определяет правильно и при отсутствии записей в ПФ кнопка неактивна, но вот когда добавляешь запись в ПФ как сделать, чтоб отреагировала форма и сделала кнопку активной и наоборот? Да и в случае выхода из ГФ при отсутствии записей в ПФ возникает навязчивое сообщение "Текущая запись отсутствует." Понимаю, что где-то что-то не так/не туда, а как правильно - чет туплю, не пойму. Помогите, плз
Заранее спасибо
0
texnik-san
шапоклякистка 8-го дня
3630 / 2191 / 389
Регистрация: 26.06.2015
Сообщений: 4,648
Записей в блоге: 1
06.12.2015, 02:49 #15
Цитата Сообщение от Poosh_ Посмотреть сообщение
но вот когда добавляешь запись в ПФ как сделать, чтоб отреагировала форма и сделала кнопку активной и наоборот?
Прикрутить такую же проверку к событию "После обновления" подчиненной формы.
0
06.12.2015, 02:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2015, 02:49

Дублирование записи в подчиненной форме
Существует главная форма, в ней подчиненная ленточная форма с наборами значений...

Новые записи в подчиненной форме
Добрый день!мне нужна ваша помощь! мне надо чтоб можно было добавлять данные в...

Программное добавление записи в подчиненной форме...
Есть подчиненная форма, в которой заполняются поля. При нажатии опр.клавиши на...


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

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

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