powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / RecordSource подчиненной формы
25 сообщений из 34, страница 1 из 2
RecordSource подчиненной формы
    #39655200
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую всех.
Пытаюсь сделать общий вид поисковой формы с полями для выборки данных для обеих форм – Формы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:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
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», чтобы изначально записи были скрыты.

Заранее признательна за помощь.
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39655234
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nataxa23,

Код: vbnet
1.
 Me.фпПоискЗаявок.Parent.Form.фпПоискМИЦОВИВ.Form.RecordSource
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39655832
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
Parent.фпПоискМИЦОВИВ.Form.RecordSource
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39656959
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Озверин
Код: vbnet
1.
 Me.фпПоискЗаявок.Parent.Form.фпПоискМИЦОВИВ.Form.RecordSource


__Michelle
Код: vbnet
1.
Parent.фпПоискМИЦОВИВ.Form.RecordSource


Выдает ошибку: 2465 - Application-defined or object-defined error
К сожалению выложить пример бд не получается, весит больше 150кб, исключила все по максимуму.
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39657263
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nataxa23, базу надо сжать и заархивировать.
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39657387
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nataxa23, если правильно понял, то описываемый код расположен в форме 1.
Форма 2- подчиненная формы 1, форма 3 - подчиненная формы 2.
рекордсорс формы 3 из формы 1 будет выглядеть так:
Код: vbnet
1.
Me.controls("фпПоискЗаявок").form.controls("фпПоискМИЦОВИВ").form.RecordSource =strSQL 


' здесь "фпПоискЗаявок" и "фпПоискМИЦОВИВ" - названия тех контролов в которых расположены формы 2 и 3.
т.е.
Me.controls("фпПоискЗаявок").sourceObject = "Форма2" ' это в общем случае форма2 присвоена контролу на форме1
2. лучше всего в форме 1 создать 2 переменные в которых описать формы 2 и 3 и работать с ними из формы 1.
т.е. это
Код: vbnet
1.
2.
3.
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
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39657949
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleckonataxa23, если правильно понял, то описываемый код расположен в форме 1.
Форма 2- подчиненная формы 1, форма 3 - подчиненная формы 2.
Да, все верно. Единственное чего не поняла, это куда и где и для чего использовать:
aleckoforma2.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.
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39658163
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nataxa23, у меня не удалось распаковать
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39659075
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Озверинnataxa23, у меня не удалось распаковать
хм..., странно у меня архив распаковывается.
Выкладываю повторно.
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39659092
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nataxa23Озверинnataxa23, у меня не удалось распаковать
хм..., странно у меня архив распаковывается.
Выкладываю повторно.

http://www.sql.ru/forum/actualfile.aspx?id=21482698] Приложенный файл (Database1.rar - 148Kb)
лучше зазипуйте RAR у многих не распаковывается(версия новомодная)
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39659126
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если делать стандартным способом от винды, то тогда вес превышает 150кб.
Выкладываю еще раз. в настройках винрара выбрала др.формат, может это поможет.
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39659204
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nataxa23,

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

прилагаю zip
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39671033
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет , хочу снова поднять свою тему, т.к. до конца так и не удалось решить ее.
Остались такого рода вопросы, правда с последнего раза код я несколько переделала. Выкладывать его здесь пока не стану, надеюсь приложенный пример не вызовет проблем с распаковкой, как в прошлый раз, хотя для меня это так и осталось загадкой, 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) непонятно какой код отвечает за выполнение действия нажатие кн.мыши на непосредственно сам «+», т.е. "скрыть"\"раскрыть" строку одного рекордсета, чтобы отобразить связанные с ним данные в подтаблице.

Буду очень признательна, если кто откликнется, поможет с вопросами, а так же поможет добить тему и решить проблему в целом, и все же реализовать задуманное.
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39671036
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nataxa23, архив поврежден. можно кинуть файл в облако (типа Ядиск), а сюда ссылку выложить.
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39671052
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваш файл посмотреть не удалось (наверно новее 2007)
Может как-то так:
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39671069
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuВаш файл посмотреть не удалось (наверно новее 2007)
блин, да. Прошу меня извинить, с самого начало все время как то ускользает из памяти указать, что у меня Access 2010, поэтому 2007 к сожалению его не откроет.
aleckoархив поврежден. можно кинуть файл в облако (типа Ядиск), а сюда ссылку выложить.
Ядиск не использую, пришлось залить на файлообменник, ссылка: zip-файл
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39671075
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuМожет как-то так:
http://www.sql.ru/forum/actualfile.aspx?id=21552285] Приложенный файл (tmp1.rar - 20Kb)
Похожий вариант, но есть разница. У вас форма (получатель), через которую делается выборка по полю фамилия привязан к запросу. В этом случае, когда форма открывается то она встает на 1 имеющуюся запись. Т.е. форма не будет выводить по несколько записей главной таблицы, а только лишь 1.
У меня не так, моя форма1 к запросу не привязана и поля на ней свободные, в этом случае это дает возможность подчиненной форме2:
- выводить либо все записи сразу;
- записи, сделанные через выборку по полям на форме1;
- либо все записи скрыть.
Но моя проблема заключена в том, что у подчиненной формы2 есть своя подчиненная форма3. Поля на форме1 выведены как для выборки подчиненной формы2, так и для подчиненной формы3. И соответственно, если делать выборку по полям для подчиненной формы3, вот здесь то и возникает вся трудность, а главное ошибка 2455.
Методом проб и ошибок я прихожу к такой мысли, что «+» влияют на подчиненную форму3, ссылка на объект формы вроде бы есть, но при закрытых «+» обновлять RecordSours подчиненной формы3 не получается. Однако, если я применяю .SubdatasheetExpanded = "False" меняю на "True", то ошибка 2455 то выводится, то нет, но чаще всего она выводится.
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39671085
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
архив открылся, но ... мой Акс2007 непрочитал. (бывает читает 10-е) - ждем в .mdb .
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39671091
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleckoархив открылся, но ... мой Акс2007 непрочитал. (бывает читает 10-е) - ждем в .mdb .
В одном архиве zip-файла сохранила на всякий пожарный случай в 2-х вариантах: 2000 и 2002-2003
Блин, чета раньше мне такого делать не приходилось как то, я прям даже для себя щас америку открыла, когда пересохраняешь в более позднюю версию, акс ругается на то, что такие формы не поддерживаются и своих форм я не вижу в боковой панели навигации, но при этом, если открываешь пересохраненный файл, то он формы то грузит, только интерфейс немного отличается.
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39671093
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nataxa23У меня не так, моя форма1 к запросу не привязана и поля на ней свободные, в этом случае это дает возможность подчиненной форме2:
- выводить либо все записи сразу;(А они поместятся на экран-не знаю Вашу базу-но ведь их может быть довольно много и очень спорна необходимость их вывода-ведь придется прокручивать записи,что неудобно и требует внимательности, или применять,таки поиск)
- записи, сделанные через выборку по полям на форме1;(на форме2 выводятся записи по выборке на форме1,на форме3 выводятся записи по выборке на форме2-щелчке на "+")
- либо все записи скрыть.(какие именно и где?)
Но моя проблема заключена в том, что у подчиненной формы2 есть своя подчиненная форма3. Поля на форме1 выведены как для выборки подчиненной формы2, так и для подчиненной формы3.(выборка на Ф3 соответствует записи на Ф2(иначе быть не может)- одновременно подчиняться и Ф1 и Ф2-так быть не может и какой в этом смысл?)
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39671107
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkunataxa23У меня не так, моя форма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 (она у меня отлавливается моим сообщением с выводом названия процедуры, в которой она произошла) и повторно нажать кнопку поиск, то он формирует согласно сделанной выборке.
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39671140
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открыл!
nataxa23, подподформой управлять из формы не получится, т.е. recordsource должен быть неизменный, (для примера попробуйте создать переменную form для неё - не получится). (Гетц рекомендует делать синхронизированные подформы 1-го уровня)
SubdatasheetExpanded для того чтобы использовать нужно его создать
кажется примерно так
Код: vbnet
1.
2.
3.
4.
Dim db As DAO.Database
Dim prp As DAO.Property
Set prp = db.CreateProperty("SubdatasheetExpanded", dbBoolean, blnAllDisabled(?))
        db.Properties.Append prp


подобные задачи помоему проще и нагляднее решаются при помощи списков
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39688293
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди помогите с кодом добить вопрос:
Ошибка 2455: «Введенное выражение содержит недопустимую ссылку на св-во "Form/Report".»
Неужели никто не сталкивался с такой задачей?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
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


...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39688334
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nataxa23,

была у меня ситуация, вот так вот тоже вложенности глубиной 3.
Все было сделано на табличных формах.
Так вот я заметил, что событие Open самой глубокой формы срабатывало только при первом обращении к этой форме.
Т.е. пока не кликнешь плюсик для раскрытия подчиненных - подчиненной как бы и не существует.
После первого раскрытия потом уже все как обычно.
Может и здесь попытка присвоить глубокой подчиненной источник влоб.
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39688365
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ИгортанМожет и здесь попытка присвоить глубокой подчиненной источник влоб.
Возможно, только я не пойму, как тогда правильно это реализовать?
Сложно сказать при каком действии она срабатывает, после которого в коде процедуры " RefreshRecordSourse " происходит эта ошибка в указанной мной строке. Пытаюсь уловить этот момент.
Возможно, скорее всего, похоже она происходит, если перед этим применялась моя процедура " HideAll " - для скрытия всех записей на ф2 " фпПоискЗаявок ".
ИгортанТак вот я заметил, что событие Open самой глубокой формы срабатывало только при первом обращении к этой форме.
Не знаю на ск-ко правильным можно считать код в моей процедуре " ShowAll ", но в ней он каждый раз заходит в процедуру " Form_Load " ф3 " фпПоискМИЦОВИВ ", когда таблица ф2 " фпПоискЗаявок " не пустая, а содержит какие-либо записи:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
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


Т.е. в ней он отрабатывает как надо, сбрасывая примененную ранее выборку и выводит весь источник данных.
А вот как быть здесь, я ума не приложу?
Ясно только одно, что ссылку надо каким то образом делать доступной.
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / RecordSource подчиненной формы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]