powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / RecordSource подчиненной формы
9 сообщений из 34, страница 2 из 2
RecordSource подчиненной формы
    #39688407
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nataxa23,

сейчас посмотрел как у меня сделано.
Каждая форма имеет свой источник, уже прописанный в конструкторе.
Ну, связи соответственно.
Перепроверил.
- Пока не кликнешь на плюсик для открытия самой глубокой формы - она вообще не загружается.
Form_Open только после "плюсика".
Ваш лоад срабатывает, потому что вы переписываете все время источник форм.
Переосмыслите. Может можно сделать как я писал в своем варианте.
Или на событии открытия формы - присваивать источник, строку sql, которую будет дергать из главной формы.
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39688422
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ИгортанПереосмыслите. Может можно сделать как я писал в своем варианте.
т.е. повесить код вместо процедуры " Form_Load " на процедуру " Form_Open "?
Что вы имеете в виду под "я писал в своем варианте"??
ИгортанИли на событии открытия формы - присваивать источник, строку sql, которую будет дергать из главной формы.
каким образом дергать из главной формы?
Если честно я ни разу не поняла вашего совета.
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39688434
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nataxa23,

nataxa23т.е. повесить код вместо процедуры " Form_Load " на процедуру " Form_Open "?
да, ноя сейчас не про код. А про присваивание строки источника в целом.

nataxa23каким образом дергать из главной формы?
Сделайте скрытое поле на главной форме. По какому то действию (сильно в код не вникал)
в это поле записывайте sql строку источник
потом на событие Form_Open подчиненной
me.form.RecordSource = me.Parent.ПолеГдеСохранилиSQLСтроку
если связи нужны, желательно прописать в самих свойствах форм
тогда не нужно будет чистить и устанавливать связи.
Если у вас источник не меняется прям по наборам таблиц, а только набором полей.
nataxa23Что вы имеете в виду под "я писал в своем варианте"??
имел ввиду, что прописать источники форм прямо в свойство.
Если это для ваших условий допустимо.
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39688602
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что то не складывается у меня в голове предложенный вариант плана реализации.
Игортанnataxa23каким образом дергать из главной формы?
Сделайте скрытое поле на главной форме. По какому то действию (сильно в код не вникал)
в это поле записывайте sql строку источник
потом на событие Form_Open подчиненной
me.form.RecordSource = me.Parent.ПолеГдеСохранилиSQLСтроку
если связи нужны, желательно прописать в самих свойствах форм
тогда не нужно будет чистить и устанавливать связи.
Если у вас источник не меняется прям по наборам таблиц, а только набором полей.
Перефразирую свой вопрос. Зачем прописывать источник в главной форме, если она - гл.форма, не имеет своего источника? Все поля на гл.форме для выборки данных свободные.
Между собой связаны только подчиненная ф2 и подчиненная ф3 по ключевому полю, каждая из которых (ф2 и ф3) имеет свой источник данных.
Непонятно к какой форме применять:
Игортанпотом на событие Form_Open подчиненной
me.form.RecordSource = me.Parent.ПолеГдеСохранилиSQLСтроку
Если честно я не понимаю какой смысл, в моей ситуации, хранить в скрытом поле строку sql-запроса?
Работать должны обе подчиненные формы, т.к. на гл.форме есть поля, которые относятся к выборке на ф2 и есть поля, кот.относятся к выборке на ф3.

Вы же сами обратили внимание на:
ИгортанВаш лоад срабатывает, потому что вы переписываете все время источник форм.
А здесь пишете:
ИгортанЕсли у вас источник не меняется прям по наборам таблиц, а только набором полей.
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39688749
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИгортанЕсли у вас источник не меняется прям по наборам таблиц, а только набором полей.

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

Как я понял проблему,
не удается присваивать источник для ф3 лежит в ф2

ф3 присваивать источник ДО момента открытия (клика по плюсику) не удастся. По крайней мере первый раз. Ибо ф3 до первого обращения к ней, как бы не существует, не загружена.
На мой взгляд 2 решения вопроса
1. Прописать источники в свойствах форм + связи + ссылки на поля фильтры: Forms!ГлФ!ПолеФильтра. При изменении параметра - тупо обновлять нужную подчиненную
2. В момент первого обращения (клика по плюсику) в событии Form_Open присваивать источник.
Что то вроде этого
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Form_Open(Cancel As Integer)
    Cancel = MySource
End Sub

Public Function MySource() as Boolean
    On Error Resume Next
    MySource=true
    me.form.recordsource = Ваша строка 'Статичная или собирается на ходу
    if err.Number=0 then MySource=false
end function


Далее, уже сможете обращаться к публичной функции и переписывать источник в любой момент
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39688958
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовала ваш вариант:
Игортан2. В момент первого обращения (клика по плюсику) в событии Form_Open присваивать источник.
Что то вроде этого
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Form_Open(Cancel As Integer)
    Cancel = MySource
End Sub

Public Function MySource() as Boolean
    On Error Resume Next
    MySource=true
    me.form.recordsource = Ваша строка 'Статичная или собирается на ходу
    if err.Number=0 then MySource=false
end function


Ошибка 2455 все равно появляется, как раз по причине, если не трогать «+». Т.е.в момент, когда таблица ф2 с выборкой по ключ.полю имеет значение Is Null для мгновенного скрытия всех записей на ф2.
1 вариант не даст мне скрывать записи не очищая поля на гл.ф1.
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39689070
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nataxa23,

если столько бодаетесь и никак не идет
Может стоит задуматься о принципиально другом решении задачи?
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39689125
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игортанесли столько бодаетесь и никак не идет
Может стоит задуматься о принципиально другом решении задачи?
Может и стоит, раз майкрософт не дает такой возможности. Это им, кстати, в минус.
Но я не знаю какой тогда сделать альтернативный подход, если моя процедура " RefreshRecordSourse " выдает ошибку 2455?
...
Рейтинг: 0 / 0
RecordSource подчиненной формы
    #39689133
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К слову о «+», поэкспериментировала с ними. Сделала глобальную переменную для св-ва развернутая подтаб. Меняю в процедуре " HideAll " св-во формы Me.фпПоискЗаявок.Form.SubdatasheetExpanded = True , ну т.е. когда выборка делается со значением " Is Null " по ключевому полю. Ошибка 2455 вроде бы не вылезает, работает стабильно. Но я не уверена, что это помогло, как пить дать, завтра она все равно вылезет.
Я не первый раз уже замечаю такую вещь, когда пытаешься что то доработать, например исправить ту или иную ошибку или что еще делать, смотришь, вроде бы все работает, косяк исправился, а на следующий день запускаешь бд, а ошибочка то хрясь - никуда и не девалась, вот она родимая.

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


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