-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4


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


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку