2016-09-04 3 views
2

Я создал форму и подформу в доступе, от одного до многих. Форма имеет идентификатор комнаты и текстовое поле no. кроватей, в подзаголовке я хочу добавить кровати на кровать id.Ограничение количества записей в доступе под формы

Как ограничить количество записей в подзадаче = < нет. кроватей?

Например. если нет. от кровати значение 4 Я хочу, чтобы пользователь не добавил 5-ю постель в суб-форме. Я довольно новый, чтобы получить доступ к столь подробному объяснению.

ответ

1

Вот как:

Public Sub SetFormAllowAdditions(_ 
    ByVal frm As Form, _ 
    ByVal lngRecordCountMax As Long) 

' Limit count of records in (sub)form to that of lngRecordCountMax. 
' 2004-10-06, Cactus Data ApS, CPH 
' 
' Call in (sub)form: 
' 
' Private Sub LimitRecords() 
'  Const lngRecordsMax As Long = 5 
'  Call SetFormAllowAdditions(Me.Form, lngRecordsMax) 
' End Sub 
' 
' Private Sub Form_AfterDelConfirm(Status As Integer) 
'  Call LimitRecords 
' End Sub 
' 
' Private Sub Form_AfterInsert() 
'  Call LimitRecords 
' End Sub 
' 
' Private Sub Form_Open(Cancel As Integer) 
'  Call LimitRecords 
' End Sub 

    Dim booAllowAdditions As Boolean 

    With frm 
    booAllowAdditions = (.RecordsetClone.RecordCount < lngRecordCountMax) 
    If booAllowAdditions <> .AllowAdditions Then 
     .AllowAdditions = booAllowAdditions 
    End If 
    End With 

End Sub 

Это работает для постоянного максимального кол-записей. Для переменного счетчика, замените эту строку:

Const lngRecordsMax As Long = 5 

с:

Dim lngRecordsMax As Long 
lngRecordsMax = Nz(Me.Parent![no. of beds].Value, 1) 

Кроме того, изменения Текущего события главной формы, как это:

Private Sub Form_Current() 

    Forms(Me.Name)!NameOfYourSubformControl.Form.LimitRecords 

End Sub 

и изменить LimitRecords от Частный вспомогательный до Public Function:

Public Function LimitRecords() 
+0

У меня проблема после добавления этого кода, если одна запись существует в суб-форме, где кровати все работает нормально, но если добавить новую запись в форме, где номера я не могу добавить любые новые запись в его подформу, потому что текстовых полей вообще нет. – IIlk

+0

Да, я думаю, вам нужно настроить минимальный макс. count от 0 до 1 (см. отредактированный ответ). Также «включить» подчиненную форму при создании новой записи в основной форме (см. Edit, последний абзац). – Gustav

+0

После изменения значения 1 я получил ошибку времени выполнения 2452, введенное выражение имеет неверную ссылку на родительское свойство, указывая на строку lngRecordsMax = Nzl .... Когда я изменил lngRecordsMax на 5, все работает так, как должно. – IIlk

Смежные вопросы