Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 RecordSource подчиненной формы  [new]
nataxa23
Member

Откуда:
Сообщений: 165
Приветствую всех.
Пытаюсь сделать общий вид поисковой формы с полями для выборки данных для обеих форм – Формы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», чтобы изначально записи были скрыты.

Заранее признательна за помощь.
4 июн 18, 20:31    [21467815]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 4785
nataxa23,

 Me.фпПоискЗаявок.Parent.Form.фпПоискМИЦОВИВ.Form.RecordSource
4 июн 18, 22:05    [21467948]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
__Michelle
Member

Откуда:
Сообщений: 3009
Parent.фпПоискМИЦОВИВ.Form.RecordSource
5 июн 18, 17:24    [21470642]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
nataxa23
Member

Откуда:
Сообщений: 165
Озверин
 Me.фпПоискЗаявок.Parent.Form.фпПоискМИЦОВИВ.Form.RecordSource

__Michelle
Parent.фпПоискМИЦОВИВ.Form.RecordSource

Выдает ошибку: 2465 - Application-defined or object-defined error
К сожалению выложить пример бд не получается, весит больше 150кб, исключила все по максимуму.
6 июн 18, 23:11    [21474191]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 4785
nataxa23, базу надо сжать и заархивировать.
7 июн 18, 12:17    [21475438]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 424
nataxa23, если правильно понял, то описываемый код расположен в форме 1.
Форма 2- подчиненная формы 1, форма 3 - подчиненная формы 2.
рекордсорс формы 3 из формы 1 будет выглядеть так:
Me.controls("фпПоискЗаявок").form.controls("фпПоискМИЦОВИВ").form.RecordSource =strSQL 

' здесь "фпПоискЗаявок" и "фпПоискМИЦОВИВ" - названия тех контролов в которых расположены формы 2 и 3.
т.е.
Me.controls("фпПоискЗаявок").sourceObject = "Форма2" ' это в общем случае форма2 присвоена контролу на форме1
2. лучше всего в форме 1 создать 2 переменные в которых описать формы 2 и 3 и работать с ними из формы 1.
+
т.е. это
Dim forms2 as form, forma3 as form ' если у этих форм есть события типа  Load и пр. то добавить withevents
Set forma2=Me.controls("фпПоискЗаявок").form
set forma3=Me.controls("фпПоискЗаявок").form.controls("фпПоискМИЦОВИВ").form'  (можно и set forma3=forma2.controls("фпПоискМИЦОВИВ").form)

очевидно это forma3.RecordSource =strSQL


forma2.RecordSource ="" ' красивее forma2.RecordSource =vbnullstring

+
Свойство Parent используется если Ваш код будет в Форме3, тогда,для того чтобы из формы 3 изменить рекордсорс формы 2 применяете Parent (поднимаетесь выше по иерархии в оношении предок/потомок
Код из формы3
Me.Parent.RecordSource =strsql2
чтобы изменить что то в форме1 из формы3
Me.parent.Parent.recordsource=strsql3
7 июн 18, 14:07    [21476030]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
nataxa23
Member

Откуда:
Сообщений: 165
alecko
nataxa23, если правильно понял, то описываемый код расположен в форме 1.
Форма 2- подчиненная формы 1, форма 3 - подчиненная формы 2.

Да, все верно. Единственное чего не поняла, это куда и где и для чего использовать:
alecko
forma2.RecordSource ="" ' красивее forma2.RecordSource =vbnullstring

спасибо за наводку:
alecko
Свойство Parent используется если Ваш код будет в Форме3, тогда,для того чтобы из формы 3 изменить рекордсорс формы 2 применяете Parent (поднимаетесь выше по иерархии в оношении предок/потомок
Код из формы3
Me.Parent.RecordSource =strsql2
чтобы изменить что то в форме1 из формы3
Me.parent.Parent.recordsource=strsql3

Озверин
базу надо сжать и заархивировать.

Да я в курсе, когда отписывалась, что бд весит больше 150кб. Просто я взяла копию и исключила из нее все лишнее по максимуму. Этого оказалось не достаточно.

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

Заметила такую вещь, я применяю для формы2 в Load: «Me.SubdatasheetExpanded = False», чтобы изначально все «+» были свернутыми, и это влияет на РекордСурс подчиненной формы3 – вызывает ошибку: 2455 Введенное выражение содержит недопустимую ссылку на свойство "Form/Report".

Пробовала так же через переменную присваивать объект формы по совету alecko, срабатывает та же ошибка, если таблица не развернута на форме2. Т.е. ему не нравится, что все записи находятся в свернутом состоянии, ему надо их разворачивать – видимо он закрывает форму3 как объект, если на форме2 подчиненная форма3 имеет свернутое состояние, соответственно и ссылка на форму3 становится недопустимой. Но это мои догадки.

И еще чего я не пойму теперь, это допустим, если подтаблица на форме2 развернута и делать выборку по полям, которые влияют на РекордСурс формы3, то я наблюдаю, что записи на форме3 обновляются только для первой строки из 3-х найденных записей на форме2. Т.е. такое ощущение, что аксесу не хватает можахи для остальных записей.

Выкладываю свой пример. В моем примере 3-й столбец выборки по полям и комбобокс – это та часть, которая делает выборку для формы3.

К сообщению приложен файл (Database1.rar - 148Kb) cкачать
7 июн 18, 22:49    [21477565]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 4785
nataxa23, у меня не удалось распаковать
8 июн 18, 11:06    [21478371]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
nataxa23
Member

Откуда:
Сообщений: 165
Озверин
nataxa23, у меня не удалось распаковать

хм..., странно у меня архив распаковывается.
Выкладываю повторно.

К сообщению приложен файл (Database1.rar - 148Kb) cкачать
9 июн 18, 19:26    [21482698]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4403
nataxa23
Озверин
nataxa23, у меня не удалось распаковать

хм..., странно у меня архив распаковывается.
Выкладываю повторно.

Приложенный файл (Database1.rar - 148Kb)

лучше зазипуйте RAR у многих не распаковывается(версия новомодная)
9 июн 18, 20:07    [21482743]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
nataxa23
Member

Откуда:
Сообщений: 165
Если делать стандартным способом от винды, то тогда вес превышает 150кб.
Выкладываю еще раз. в настройках винрара выбрала др.формат, может это поможет.

К сообщению приложен файл (Database.rar - 149Kb) cкачать
9 июн 18, 22:39    [21482952]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4403
nataxa23,

все равно не открывается

прилагаю zip

К сообщению приложен файл (Database1.zip - 137Kb) cкачать
10 июн 18, 11:24    [21483292]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
nataxa23
Member

Откуда:
Сообщений: 165
Всем привет, хочу снова поднять свою тему, т.к. до конца так и не удалось решить ее.
Остались такого рода вопросы, правда с последнего раза код я несколько переделала. Выкладывать его здесь пока не стану, надеюсь приложенный пример не вызовет проблем с распаковкой, как в прошлый раз, хотя для меня это так и осталось загадкой, WinRAR использую v.5.50 (64-разрядная).

1) на точке останова возникает непонятное сообщение Access в процедуре "RefreshRecordSourse" на строке:
frm.SubdatasheetExpanded = True
при этом видно, что св-во frm.SubdatasheetExpanded = "False" все же меняется на "True", код продолжает выполнятся дальше, где в последствии в той же процедуре отслеживается ошибка 2455.
-----------------
2) ошика 2455: «Введенное выражение содержит недопустимую ссылку на свойство "Form/Report".»
Методом проб и ошибок подозрения падают на то, что приходится менять св-во «Развернутая подтаблица» = "НЕТ" на "ДА", т.е. «+» влияют на объект - подчиненную форму3 (фпПоискМИЦОВИВ) в форме2 (фпПоискЗаявок), которая в свою очередь находится в форме1 (фПоиск).
-----------------
3) напрягает мерцание экрана. Application.Echo "False"\"True" - не помогает.
-----------------
4) непонятно какой код отвечает за выполнение действия нажатие кн.мыши на непосредственно сам «+», т.е. "скрыть"\"раскрыть" строку одного рекордсета, чтобы отобразить связанные с ним данные в подтаблице.

Буду очень признательна, если кто откликнется, поможет с вопросами, а так же поможет добить тему и решить проблему в целом, и все же реализовать задуманное.

К сообщению приложен файл (Database.rar - 146Kb) cкачать
7 июл 18, 15:25    [21552082]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 424
nataxa23, архив поврежден. можно кинуть файл в облако (типа Ядиск), а сюда ссылку выложить.
7 июл 18, 15:53    [21552141]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5511
Ваш файл посмотреть не удалось (наверно новее 2007)
Может как-то так:

К сообщению приложен файл (tmp1.rar - 20Kb) cкачать
7 июл 18, 17:26    [21552285]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
nataxa23
Member

Откуда:
Сообщений: 165
sdku
Ваш файл посмотреть не удалось (наверно новее 2007)

блин, да. Прошу меня извинить, с самого начало все время как то ускользает из памяти указать, что у меня Access 2010, поэтому 2007 к сожалению его не откроет.
alecko
архив поврежден. можно кинуть файл в облако (типа Ядиск), а сюда ссылку выложить.

Ядиск не использую, пришлось залить на файлообменник, ссылка: zip-файл
7 июл 18, 18:31    [21552366]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
nataxa23
Member

Откуда:
Сообщений: 165
sdku
Может как-то так:
Приложенный файл (tmp1.rar - 20Kb)

Похожий вариант, но есть разница. У вас форма (получатель), через которую делается выборка по полю фамилия привязан к запросу. В этом случае, когда форма открывается то она встает на 1 имеющуюся запись. Т.е. форма не будет выводить по несколько записей главной таблицы, а только лишь 1.
У меня не так, моя форма1 к запросу не привязана и поля на ней свободные, в этом случае это дает возможность подчиненной форме2:
- выводить либо все записи сразу;
- записи, сделанные через выборку по полям на форме1;
- либо все записи скрыть.
Но моя проблема заключена в том, что у подчиненной формы2 есть своя подчиненная форма3. Поля на форме1 выведены как для выборки подчиненной формы2, так и для подчиненной формы3. И соответственно, если делать выборку по полям для подчиненной формы3, вот здесь то и возникает вся трудность, а главное ошибка 2455.
Методом проб и ошибок я прихожу к такой мысли, что «+» влияют на подчиненную форму3, ссылка на объект формы вроде бы есть, но при закрытых «+» обновлять RecordSours подчиненной формы3 не получается. Однако, если я применяю .SubdatasheetExpanded = "False" меняю на "True", то ошибка 2455 то выводится, то нет, но чаще всего она выводится.
7 июл 18, 19:09    [21552401]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 424
архив открылся, но ... мой Акс2007 непрочитал. (бывает читает 10-е) - ждем в .mdb .
7 июл 18, 19:46    [21552439]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
nataxa23
Member

Откуда:
Сообщений: 165
alecko
архив открылся, но ... мой Акс2007 непрочитал. (бывает читает 10-е) - ждем в .mdb .

В одном архиве zip-файла сохранила на всякий пожарный случай в 2-х вариантах: 2000 и 2002-2003
Блин, чета раньше мне такого делать не приходилось как то, я прям даже для себя щас америку открыла, когда пересохраняешь в более позднюю версию, акс ругается на то, что такие формы не поддерживаются и своих форм я не вижу в боковой панели навигации, но при этом, если открываешь пересохраненный файл, то он формы то грузит, только интерфейс немного отличается.
7 июл 18, 20:31    [21552509]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5511
nataxa23
У меня не так, моя форма1 к запросу не привязана и поля на ней свободные, в этом случае это дает возможность подчиненной форме2:
- выводить либо все записи сразу;(А они поместятся на экран-не знаю Вашу базу-но ведь их может быть довольно много и очень спорна необходимость их вывода-ведь придется прокручивать записи,что неудобно и требует внимательности, или применять,таки поиск)
- записи, сделанные через выборку по полям на форме1;(на форме2 выводятся записи по выборке на форме1,на форме3 выводятся записи по выборке на форме2-щелчке на "+")
- либо все записи скрыть.(какие именно и где?)
Но моя проблема заключена в том, что у подчиненной формы2 есть своя подчиненная форма3. Поля на форме1 выведены как для выборки подчиненной формы2, так и для подчиненной формы3.(выборка на Ф3 соответствует записи на Ф2(иначе быть не может)- одновременно подчиняться и Ф1 и Ф2-так быть не может и какой в этом смысл?)
7 июл 18, 20:41    [21552524]     Ответить | Цитировать Сообщить модератору
 Re: RecordSource подчиненной формы  [new]
nataxa23
Member

Откуда:
Сообщений: 165
sdku
nataxa23
У меня не так, моя форма1 к запросу не привязана и поля на ней свободные, в этом случае это дает возможность подчиненной форме2:
- выводить либо все записи сразу;(А они поместятся на экран-не знаю Вашу базу-но ведь их может быть довольно много и очень спорна необходимость их вывода-ведь придется прокручивать записи,что неудобно и требует внимательности, или применять,таки поиск)
- записи, сделанные через выборку по полям на форме1;(на форме2 выводятся записи по выборке на форме1,на форме3 выводятся записи по выборке на форме2-щелчке на "+")
- либо все записи скрыть.(какие именно и где?)
Но моя проблема заключена в том, что у подчиненной формы2 есть своя подчиненная форма3. Поля на форме1 выведены как для выборки подчиненной формы2, так и для подчиненной формы3.(выборка на Ф3 соответствует записи на Ф2(иначе быть не может)- одновременно подчиняться и Ф1 и Ф2-так быть не может и какой в этом смысл?)

  • 1) если пользователю нужно вывести на распечатку все записи
  • 2) форма1 формирует вывод записей для формы2 и формы3 по связанному ключевому полю у каждой формы свой запрос, я описала об этом в своем первом посте, чтобы не повторяться. А выборка делается так. Вначале формируется запрос формы3, затем по ключевому полю формируется запрос для формы2. Это нужно для того:
    а) если юзер делает выборку по полям, которые относятся только к форме2;
    б) если юзер делает выборку по полям, которые относятся только к форме3;
    в) если юзер делает выборку по полям формы2 и формы3.
  • 3) под скрытием всех записей я имею ввиду форму2, типа отобразить пользователю пустую таблицу.

    Да выборка на Ф3 соответствует, чтобы сформировать запрос по полям, которые относятся к Ф2, а как же иначе то тогда? Я тогда не смогу сформировать запрос Ф3, если юзер будет делать выборку по полям к Ф2. А так я получаю вначале общий запрос для Ф3, а потом получаю запрос для Ф2.

    Если у Вас все же получится просмотреть мой выложенный пример, то при тестировании вы сможете увидеть такую штуку, что если не обращать внимания на ошибку 2455 (она у меня отлавливается моим сообщением с выводом названия процедуры, в которой она произошла) и повторно нажать кнопку поиск, то он формирует согласно сделанной выборке.
  • 7 июл 18, 21:56    [21552649]     Ответить | Цитировать Сообщить модератору
     Re: RecordSource подчиненной формы  [new]
    alecko
    Member

    Откуда: Башкирия
    Сообщений: 424
    Открыл!
    nataxa23, подподформой управлять из формы не получится, т.е. recordsource должен быть неизменный, (для примера попробуйте создать переменную form для неё - не получится). (Гетц рекомендует делать синхронизированные подформы 1-го уровня)
    SubdatasheetExpanded для того чтобы использовать нужно его создать
    кажется примерно так
    Dim db As DAO.Database
    Dim prp As DAO.Property
    Set prp = db.CreateProperty("SubdatasheetExpanded", dbBoolean, blnAllDisabled(?))
            db.Properties.Append prp
    

    подобные задачи помоему проще и нагляднее решаются при помощи списков
    8 июл 18, 00:40    [21553102]     Ответить | Цитировать Сообщить модератору
     Re: RecordSource подчиненной формы  [new]
    nataxa23
    Member

    Откуда:
    Сообщений: 165
    Люди помогите с кодом добить вопрос:
    Ошибка 2455: «Введенное выражение содержит недопустимую ссылку на св-во "Form/Report".»
    Неужели никто не сталкивался с такой задачей?
    +

    Private Sub RefreshRecordSourse(SQL As String, Query As String)
    On Error GoTo ErrNumber
      Application.Echo False 'отключить обновление экрана Access
    
      Me.фпПоискЗаявок.Form.RecordSource = Query
      With Me.фпПоискЗаявок.Form.Recordset
        .MoveFirst
        Do Until .EOF
          Me.Controls("фпПоискЗаявок").Form.Controls("фпПоискМИЦОВИВ").Form.RecordSource = SQL 'Ошибка 2455
          .MoveNext
        Loop
        .MoveFirst
      End With
      Me.фпПоискЗаявок.Requery
      Me.НадписьКоличествоЗаявок.Caption = Me.фпПоискЗаявок.Form.Recordset.RecordCount
      DoCmd.GoToControl "фпПоискЗаявок"
    ExitHeare:
      Application.Echo True 'включить обновление экрана Access
    Exit Sub
    
    ErrNumber:
      If Error <> 0 Then
        MsgBox "Процедура: RefreshRecordSourse. Форма: " & Me.Name & vbCrLf & _
          Err.Description, , "№ " & Err.Number
        Resume ExitHeare
      End If
    End Sub
    ________________________
    'SQLзапрос Скрыть все
    Private Sub HideAll()
    On Error GoTo ErrNumber
      Me.фпПоискЗаявок.Form.RecordSource = "SELECT DISTINCT * FROM звПоискЗаявок WHERE [КодЗаявки] Is Null"
      Me.НадписьКоличествоЗаявок.Caption = Me.фпПоискЗаявок.Form.Recordset.RecordCount
    ExitHeare:
      Exit Sub
    
    ErrNumber:
      If Error <> 0 Then
        MsgBox "Процедура: HideAll. Форма: " & Me.Name & vbCrLf & _
          Err.Description, , "№ " & Err.Number
        Resume ExitHeare
      End If
    End Sub
    ________________________
    'SQLзапрос Показать все
    Private Sub ShowAll()
      Dim strSQL As String
    On Error GoTo ErrNumber
      Application.Echo False 'отключить обновление экрана Access
    
      Me.Controls("фпПоискЗаявок").Form.Controls("фпПоискМИЦОВИВ").LinkMasterFields = ""
      Me.Controls("фпПоискЗаявок").Form.Controls("фпПоискМИЦОВИВ").LinkChildFields = ""
    
      strSQL = "SELECT DISTINCT * FROM звПоискЗаявок"
      Me.фпПоискЗаявок.Form.RecordSource = strSQL
    
      Call OpenQuery(strSQL) 'получим данные в глобальную переменную "strКодЗаявки" - для отчетов и диаграмм
    
      strWHERE = strКодЗаявки
      Me.Controls("фпПоискЗаявок").Form.Controls("фпПоискМИЦОВИВ").LinkMasterFields = "КодЗаявки"
      Me.Controls("фпПоискЗаявок").Form.Controls("фпПоискМИЦОВИВ").LinkChildFields = "КодЗаявки"
    
      Me.НадписьКоличествоЗаявок.Caption = Me.фпПоискЗаявок.Form.Recordset.RecordCount
      DoCmd.GoToControl "фпПоискЗаявок"
    ExitHeare:
      Application.Echo True 'включить обновление экрана Access
    Exit Sub
    
    ErrNumber:
      If Error <> 0 Then
        MsgBox "Процедура: ShowAll. Форма: " & Me.Name & vbCrLf & _
          Err.Description, , "№ " & Err.Number
        Resume ExitHeare
      End If
    End Sub
    

    15 авг 18, 17:16    [21643437]     Ответить | Цитировать Сообщить модератору
     Re: RecordSource подчиненной формы  [new]
    Игортан
    Member

    Откуда: Беларусь
    Сообщений: 873
    nataxa23,

    была у меня ситуация, вот так вот тоже вложенности глубиной 3.
    Все было сделано на табличных формах.
    Так вот я заметил, что событие Open самой глубокой формы срабатывало только при первом обращении к этой форме.
    Т.е. пока не кликнешь плюсик для раскрытия подчиненных - подчиненной как бы и не существует.
    После первого раскрытия потом уже все как обычно.
    Может и здесь попытка присвоить глубокой подчиненной источник влоб.
    15 авг 18, 18:27    [21643522]     Ответить | Цитировать Сообщить модератору
     Re: RecordSource подчиненной формы  [new]
    nataxa23
    Member

    Откуда:
    Сообщений: 165
    Игортан
    Может и здесь попытка присвоить глубокой подчиненной источник влоб.

    Возможно, только я не пойму, как тогда правильно это реализовать?
    Сложно сказать при каком действии она срабатывает, после которого в коде процедуры "RefreshRecordSourse" происходит эта ошибка в указанной мной строке. Пытаюсь уловить этот момент.
    Возможно, скорее всего, похоже она происходит, если перед этим применялась моя процедура "HideAll" - для скрытия всех записей на ф2 "фпПоискЗаявок".
    Игортан
    Так вот я заметил, что событие Open самой глубокой формы срабатывало только при первом обращении к этой форме.

    Не знаю на ск-ко правильным можно считать код в моей процедуре "ShowAll", но в ней он каждый раз заходит в процедуру "Form_Load" ф3 "фпПоискМИЦОВИВ", когда таблица ф2 "фпПоискЗаявок" не пустая, а содержит какие-либо записи:
    +
    Private Sub Form_Load()
    
    On Error GoTo ErrNumber
      Me.RecordSource = "SELECT * FROM звПоиск"
    ExitHeare:
      Exit Sub
    
    ErrNumber:
      If Error <> 0 Then
        MsgBox "Процедура: Form_Load. Форма: " & Me.Name & vbCrLf & _
          Err.Description, , "№ " & Err.Number
        Resume ExitHeare
      End If
    End Sub
    

    Т.е. в ней он отрабатывает как надо, сбрасывая примененную ранее выборку и выводит весь источник данных.
    А вот как быть здесь, я ума не приложу?
    Ясно только одно, что ссылку надо каким то образом делать доступной.
    15 авг 18, 20:15    [21643632]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
    Все форумы / Microsoft Access Ответить