RecordSource подчиненной формы
|
|
Понедельник, 04 Июня 2018 г. 20:31
+ в цитатник
Приветствую всех.
Пытаюсь сделать общий вид поисковой формы с полями для выборки данных для обеих форм – Формы2 и ее подчиненной Формы3. Т.е. суть такая – на Форме1 находится Форма2, в которой по «+» раскрываются записи подчиненной Формы3.
Принцип построения такой – есть общая свободная Форма1 с полями и комбобоксами, по которым делается общая выборка данных для обеих форм (обе в режиме таблицы): Форма2 – главная и Форма3 – подчиненная. Форма2 так же расположена на Форме1. Форма2 и Форма3 между собой связаны по полю кода – связь 1 ко многим.
Общий запрос состоит из 2-х таблиц (связь 1 ко многим), использую его для подчиненной Формы3, а в главной Форме2 вывожу запрос с полями только первой части общего запроса. Т.е. получается, что запрос для Формы2 я строю из запроса к Форме3.
В коде VBA, по выбранным полям на Форме1, я собираю 2 массива и получаю 2 переменные для выборки данных в запросах к Форме2 и Форме3. Дальше начинается сама проблема, из кода Формы1 присвоить полученный RecordSource для Формы2 получается, а для Формы3 нет.
Вот часть кода, где пытаюсь присвоить формам RecordSource с полученной выборкой данных к Форме2 и Форме3:
+ |
Private Sub ПоискПоПолям()
Dim strSQL As String
Dim rst As Recordset
On Error GoTo ErrNumber
strWHERE1 = "": strWHERE2 = ""
...
...
strSQL = "SELECT * FROM звПоиск"
If Not strWHERE1 = "" Then
If Not strWHERE2 = "" Then
strWHERE = strWHERE1 & " AND " & strWHERE2
Else
strWHERE = strWHERE1
End If
strSQL = strSQL & " WHERE " & strWHERE
Set rst = CurrentDb.OpenRecordset(strSQL)
If rst.RecordCount <> 0 Then
Me.фпПоискЗаявок.Form.RecordSource = "SELECT DISTINCT * FROM звПоискЗаявок WHERE " & strWHERE1
'???как обновить RecordSource "фпПоискМИЦОВИВ"
' Form_фпПоискМИЦОВИВ.RecordSource = strSQL '- не работает,т.е.обновление не происходит
' Me!фпПоискЗаявок.Controls!фпПоискМИЦОВИВ.Form.RecordSource = strSQL 'ошибка 2455 - Введенное выражение содержит недопустимую ссылку на свойство "Form/Report"
' Me.фпПоискЗаявок.Parent!фпПоискМИЦОВИВ.Form.RecordSource = strSQL 'ошибка 2455
Else
Me.фпПоискЗаявок.Form.RecordSource = "SELECT DISTINCT * FROM звПоискЗаявок WHERE [КодЗаявки] Is Null"
End If
ElseIf Not strWHERE2 = "" Then
strWHERE = strWHERE2
strSQL = strSQL & " WHERE " & strWHERE
Set rst = CurrentDb.OpenRecordset(strSQL)
If rst.RecordCount <> 0 Then
rst.MoveFirst
strWHERE1 = "[КодЗаявки] = " & rst.Fields("КодЗаявки").Value
Do Until rst.EOF
strWHERE1 = strWHERE1 & " OR " & "[КодЗаявки] = " & rst.Fields("КодЗаявки").Value
rst.MoveNext
Loop
Me.фпПоискЗаявок.Form.RecordSource = "SELECT DISTINCT * FROM звПоискЗаявок WHERE " & strWHERE1
'???как обновить RecordSource "фпПоискМИЦОВИВ"
' Form_фпПоискМИЦОВИВ.RecordSource = strSQL '- не работает,т.е.обновление не происходит
' Me!фпПоискЗаявок.Controls!фпПоискМИЦОВИВ.Form.RecordSource = strSQL 'ошибка 2455 - Введенное выражение содержит недопустимую ссылку на свойство "Form/Report"
' Me.фпПоискЗаявок.Parent!фпПоискМИЦОВИВ.Form.RecordSource = strSQL 'ошибка 2455
Else
Me.фпПоискЗаявок.Form.RecordSource = "SELECT DISTINCT * FROM звПоискЗаявок WHERE [КодЗаявки] Is Null"
End If
End If
rst.Close
' Call Form_фпПоискЗаявок.ПоискПоПолям(strSQL)
' Call Form_фпПоискМИЦОВИВ.ПоискПоПолям(strSQL)
' Me!фпПоискЗаявок.Controls!фпПоискМИЦОВИВ.Requery 'ошибка 2455 - Введенное выражение содержит недопустимую ссылку на свойство "Form/Report"
' Me.фпПоискЗаявок.Parent!фпПоискМИЦОВИВ.Requery 'ошибка 2455
' Form_фпПоискМИЦОВИВ.Requery '- не работает,т.е.обновление не происходит
Me.фпПоискЗаявок.Requery
ExitHeare:
Set rst = Nothing
Erase arrWHERE2
Erase arrWHERE1
Exit Sub
ErrNumber:
Select Case Err.Number
Case 2455 'Введенное выражение содержит недопустимую ссылку на свойство "Form/Report"
MsgBox "Процедура: ПоискПоПолям. Форма: " & Me.Name & vbCrLf & _
Err.Description, , "№ " & Err.Number
' Me.фпПоискЗаявок.Parent!фпПоискМИЦОВИВ.Form.RecordSource = strSQL
' Me.фпПоискЗаявок.Parent!фпПоискМИЦОВИВ.Requery
' Me.фпПоискЗаявок.Requery
Resume ExitHeare
Case Else
MsgBox "Процедура: ПоискПоПолям. Форма: " & Me.Name & vbCrLf & _
Err.Description, , "№ " & Err.Number
Resume ExitHeare
End Select
End Sub
|
А и еще такой момент, при открытии общей Формы1 по умолчанию присваиваю Форме2 RecordSource со значением «Is Null», чтобы изначально записи были скрыты.
Заранее признательна за помощь.
http://www.sql.ru/forum/1295117/recordsource-podchinennoy-formy
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-