|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
Приветствую всех. Пытаюсь сделать общий вид поисковой формы с полями для выборки данных для обеих форм – Формы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.
А и еще такой момент, при открытии общей Формы1 по умолчанию присваиваю Форме2 RecordSource со значением «Is Null», чтобы изначально записи были скрыты. Заранее признательна за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 20:31 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
nataxa23, Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 22:05 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2018, 17:24 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
Озверин Код: vbnet 1.
__Michelle Код: vbnet 1.
Выдает ошибку: 2465 - Application-defined or object-defined error К сожалению выложить пример бд не получается, весит больше 150кб, исключила все по максимуму. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2018, 23:11 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
nataxa23, базу надо сжать и заархивировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 12:17 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
nataxa23, если правильно понял, то описываемый код расположен в форме 1. Форма 2- подчиненная формы 1, форма 3 - подчиненная формы 2. рекордсорс формы 3 из формы 1 будет выглядеть так: Код: vbnet 1.
' здесь "фпПоискЗаявок" и "фпПоискМИЦОВИВ" - названия тех контролов в которых расположены формы 2 и 3. т.е. Me.controls("фпПоискЗаявок").sourceObject = "Форма2" ' это в общем случае форма2 присвоена контролу на форме1 2. лучше всего в форме 1 создать 2 переменные в которых описать формы 2 и 3 и работать с ними из формы 1. т.е. это Код: vbnet 1. 2. 3.
очевидно это 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 14:07 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2018, 22:49 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
nataxa23, у меня не удалось распаковать ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2018, 11:06 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
Озверинnataxa23, у меня не удалось распаковать хм..., странно у меня архив распаковывается. Выкладываю повторно. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 19:26 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
nataxa23Озверинnataxa23, у меня не удалось распаковать хм..., странно у меня архив распаковывается. Выкладываю повторно. http://www.sql.ru/forum/actualfile.aspx?id=21482698] Приложенный файл (Database1.rar - 148Kb) лучше зазипуйте RAR у многих не распаковывается(версия новомодная) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 20:07 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
Если делать стандартным способом от винды, то тогда вес превышает 150кб. Выкладываю еще раз. в настройках винрара выбрала др.формат, может это поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 22:39 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
nataxa23, все равно не открывается прилагаю zip ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2018, 11:24 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
Всем привет , хочу снова поднять свою тему, т.к. до конца так и не удалось решить ее. Остались такого рода вопросы, правда с последнего раза код я несколько переделала. Выкладывать его здесь пока не стану, надеюсь приложенный пример не вызовет проблем с распаковкой, как в прошлый раз, хотя для меня это так и осталось загадкой, 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) непонятно какой код отвечает за выполнение действия нажатие кн.мыши на непосредственно сам «+», т.е. "скрыть"\"раскрыть" строку одного рекордсета, чтобы отобразить связанные с ним данные в подтаблице. Буду очень признательна, если кто откликнется, поможет с вопросами, а так же поможет добить тему и решить проблему в целом, и все же реализовать задуманное. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2018, 15:25 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
nataxa23, архив поврежден. можно кинуть файл в облако (типа Ядиск), а сюда ссылку выложить. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2018, 15:53 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
Ваш файл посмотреть не удалось (наверно новее 2007) Может как-то так: ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2018, 17:26 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
sdkuВаш файл посмотреть не удалось (наверно новее 2007) блин, да. Прошу меня извинить, с самого начало все время как то ускользает из памяти указать, что у меня Access 2010, поэтому 2007 к сожалению его не откроет. aleckoархив поврежден. можно кинуть файл в облако (типа Ядиск), а сюда ссылку выложить. Ядиск не использую, пришлось залить на файлообменник, ссылка: zip-файл ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2018, 18:31 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
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 то выводится, то нет, но чаще всего она выводится. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2018, 19:09 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
архив открылся, но ... мой Акс2007 непрочитал. (бывает читает 10-е) - ждем в .mdb . ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2018, 19:46 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
aleckoархив открылся, но ... мой Акс2007 непрочитал. (бывает читает 10-е) - ждем в .mdb . В одном архиве zip-файла сохранила на всякий пожарный случай в 2-х вариантах: 2000 и 2002-2003 Блин, чета раньше мне такого делать не приходилось как то, я прям даже для себя щас америку открыла, когда пересохраняешь в более позднюю версию, акс ругается на то, что такие формы не поддерживаются и своих форм я не вижу в боковой панели навигации, но при этом, если открываешь пересохраненный файл, то он формы то грузит, только интерфейс немного отличается. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2018, 20:31 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
nataxa23У меня не так, моя форма1 к запросу не привязана и поля на ней свободные, в этом случае это дает возможность подчиненной форме2: - выводить либо все записи сразу;(А они поместятся на экран-не знаю Вашу базу-но ведь их может быть довольно много и очень спорна необходимость их вывода-ведь придется прокручивать записи,что неудобно и требует внимательности, или применять,таки поиск) - записи, сделанные через выборку по полям на форме1;(на форме2 выводятся записи по выборке на форме1,на форме3 выводятся записи по выборке на форме2-щелчке на "+") - либо все записи скрыть.(какие именно и где?) Но моя проблема заключена в том, что у подчиненной формы2 есть своя подчиненная форма3. Поля на форме1 выведены как для выборки подчиненной формы2, так и для подчиненной формы3.(выборка на Ф3 соответствует записи на Ф2(иначе быть не может)- одновременно подчиняться и Ф1 и Ф2-так быть не может и какой в этом смысл?) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2018, 20:41 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
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 (она у меня отлавливается моим сообщением с выводом названия процедуры, в которой она произошла) и повторно нажать кнопку поиск, то он формирует согласно сделанной выборке. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2018, 21:56 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
Открыл! nataxa23, подподформой управлять из формы не получится, т.е. recordsource должен быть неизменный, (для примера попробуйте создать переменную form для неё - не получится). (Гетц рекомендует делать синхронизированные подформы 1-го уровня) SubdatasheetExpanded для того чтобы использовать нужно его создать кажется примерно так Код: vbnet 1. 2. 3. 4.
подобные задачи помоему проще и нагляднее решаются при помощи списков ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2018, 00:40 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
Люди помогите с кодом добить вопрос: Ошибка 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2018, 17:16 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
nataxa23, была у меня ситуация, вот так вот тоже вложенности глубиной 3. Все было сделано на табличных формах. Так вот я заметил, что событие Open самой глубокой формы срабатывало только при первом обращении к этой форме. Т.е. пока не кликнешь плюсик для раскрытия подчиненных - подчиненной как бы и не существует. После первого раскрытия потом уже все как обычно. Может и здесь попытка присвоить глубокой подчиненной источник влоб. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2018, 18:27 |
|
RecordSource подчиненной формы
|
|||
---|---|---|---|
#18+
ИгортанМожет и здесь попытка присвоить глубокой подчиненной источник влоб. Возможно, только я не пойму, как тогда правильно это реализовать? Сложно сказать при каком действии она срабатывает, после которого в коде процедуры " RefreshRecordSourse " происходит эта ошибка в указанной мной строке. Пытаюсь уловить этот момент. Возможно, скорее всего, похоже она происходит, если перед этим применялась моя процедура " HideAll " - для скрытия всех записей на ф2 " фпПоискЗаявок ". ИгортанТак вот я заметил, что событие Open самой глубокой формы срабатывало только при первом обращении к этой форме. Не знаю на ск-ко правильным можно считать код в моей процедуре " ShowAll ", но в ней он каждый раз заходит в процедуру " Form_Load " ф3 " фпПоискМИЦОВИВ ", когда таблица ф2 " фпПоискЗаявок " не пустая, а содержит какие-либо записи: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Т.е. в ней он отрабатывает как надо, сбрасывая примененную ранее выборку и выводит весь источник данных. А вот как быть здесь, я ума не приложу? Ясно только одно, что ссылку надо каким то образом делать доступной. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2018, 20:15 |
|
|
start [/forum/topic.php?fid=45&fpage=46&tid=1611241]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
100ms |
get tp. blocked users: |
1ms |
others: | 302ms |
total: | 490ms |
0 / 0 |