|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
Привет всем. Я почти уверен, что сам знаю ответ на этот вопрос. Нет нельзя создать!!! Но всё-таки надеюсь, что я не прав. Итак проблема. Есть проект «А» в нём находятся все Таблицы, Запросы, Формы, Отчёты и Макросы. Есть проект «Б» в нем находятся только Модули (стандартные и модули классов). Проект «Б», подключен к проекту «А», как «библиотечная» база. В проекте «Б» есть стандартный модуль mdlForms: В нём есть две процедуры. Процедура Код: vbnet 1. 2. 3.
работает, и без проблем запускает формы из проекта «А». А вот процедура Код: vbnet 1. 2. 3. 4. 5. 6.
работать не хочет…. Ругается что «Пользовательский тип (Form_frmTest) не определен». Но это и понятно, так как в проекте «Б» нет такой формы. На всякий случай модуль формы "frmTest" в проекте "А" Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Может кто-нибудь знает, какой-нибудь трюк, который позволит именно в такой модели из прилинкованного проекта «Б», создавать экземпляры форм в проекте «А». Очень нужны идеи. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 21:20 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
kvn75, - вынести из А таблицы в отдельное хранилище - прилинковать к А таблицы из хранилища - импортировать в А все модули из Б - работать с А без садомазо ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 21:35 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
vmag kvn75, - вынести из А таблицы в отдельное хранилище - прилинковать к А таблицы из хранилища - импортировать в А все модули из Б - работать с А без садомазо Спасибо за совет. Ho! Это садомазо не от хорошей жизни. Проекту «А» более 20 лет. Количество форм с модулями 588 шт. и отчётов с модулями 256. Плюс 74 модуля. Итого 918 шт. А как мы все знаем, ограничение на количество объектов с модулями в Access 1000 шт. Спецификации базы данных MS Access Файл всего размером 105 МБ. Почти все таблицы на SQL Server перенесены, в самом проекте только несколько локальных. В начале лето начались всякие непонятные глюки… Например, после редактирования нескольких объектов подряд, сообщает о нехватки свободного места… Хотя свободного диского пространства на диске более 200 гб. При попытки компилировать также сообщает о нехватки свободного места и "коверкает" код … Например стирает часть кода. Часто в местах определения переменых. При добавлении новых форм и отчётов с модулями, также сообщает о нехватки свободного места и рушиться. Во время выполнения, не регулярно, но достаточно часто возникает сообщения уже о нехватки оперативной памяти, хотя на машине 64 гб. Данные ошибки воспроизводяться везде, ни только на конкретной машине. Как минимум на 6 локальных PS и трех терминальных серверах. Импорт всех объектов в новый файл а также сжатие и востановления а также режим декомпилирования не помогает. После трех месяцев чистки кода, ничего не оставалось, как попробовать разделить на два проекта, в идеале собирался разделить на три: «Локальные таблицы» «Запросы, Формы, Отчёты и Макросы» «Модули» После разделения на «А» и «Б» проблема с нехваткой свободного места ушла! Ура победа!!! Но не могу заставить в этой модели работать создания экземпляров форм. Может это и принципиально невозможно. Я прям уже в этом уверен. Просто понадеялся, вдруг я просто этого не умею. И кто-то что-нибудь посоветует. P.S. На всякий случай!!! К количеству объектов в базе, к архитектуре решения, к выбору MS Access как платформы и т.д. Я не имею отношения. Никто переходить на другую платформу не собирается. Я работаю в этой Фирме только год, и мне приходиться со всем этим разбираться. Если есть идеи, буду очень рад их услышать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 00:53 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
kvn75 А вот процедура Код: vbnet 1. 2. 3. 4. 5. 6.
попробуй так: Код: vbnet 1.
то есть уточни полное имя в пространстве имен но Form_frmTest это не форма это модуль класса имей ввиду ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 06:53 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
kvn75 Количество форм с модулями 588 шт. и отчётов с модулями 256. Плюс 74 модуля. Итого 918 шт. А как мы все знаем, ограничение на количество объектов с модулями в Access 1000 шт. это явно проблема в проектировании базы. Вам бы сюда копать (588 форм) это что то ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 06:59 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
kvn75 Проекту «А» более 20 лет. Количество форм с модулями 588 шт. и отчётов с модулями 256. Плюс 74 модуля. Итого 918 шт. А как мы все знаем, ограничение на количество объектов с модулями в Access 1000 шт. За 20 лет сменилось 200 программистов и каждый не имея желания разбираться в сделанном, тупо ваял своё (тоже самое в очередной раз)... - возьмите лист А4 и карандаш - в течение месяца пишите на него кто какие использовал формы и отчеты - через месяц импортируйте в пустую БД, то что есть на А4 и то, что на это завязано (без чего не запускается) - ещё месяц импортируйте то, чего не будет хватать Через два месяца (максимум), но я думаю что через неделю у вас будет нормальная рабочая БД... Особое внимание уделяйте на те же яйца с разных боков - нужно оставлять только одну проекцию... то что есть сейчас - это тупик, можно менять стойки, прыгать на месте, но лоб всё равно уперт в стену... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 07:29 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
kvn75, разбирался с этой проблемой так - наверняка как минимум сотня форм (думаю, штук 500) - однотипные - соберите их вместе (у меня максимум было 52 штуки в таблице). формы,отчеты можно сгруппировать в модули классов, в зависимости от функционала, конечно. мне кажется копать лучше в этом направлении. также лучше будет перейти на MSO x64, но там нужно учитывать нюансы. ещё можно переходить из одной базы в другую, а не запускать модули одной базы из другой переход из одной базы в другую у меня таким легаси открывается сервисная база данных по обслуживанию основной Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
возврат практически аналогичен, +можно использовать коллекцию глобальных переменных tempvars (для передачи пути к основной базе, например) - как это сделано в примере) и возможность запуска макроса из внешней базы - для скажем раскрытия на весь экран после запуска. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 07:40 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
ROI, я так уже пробовал. К сожалению, так тоже не хочет работать. Сообщает «Пользовательский тип не определен» ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 12:57 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
ROI,я это прекрасно понимаю, с этого и начал. После интервью со «старожилами» удалось удалить из базы объектов 7. Это результат не принесло. Никто толком, ничего сказать не может. Как всегда утверждают, что сейчас этим всем не пользуется, но может понадобится и т.д. Конечно, мы будем долго и кропотливо всё вычищать, переносить в другие файлы. В результате будет «Новое приложение» с актуальными объектами и «Старое приложение» с о всем этим барахлом. Но сейчас я попробовал разделить два файла, и увидел, что это решает мою проблему (почти решает) сразу. Пока столкнулся только с этой проблемой (создания экземпляров) и жутко не удобно вести разработку, нужно постоянно переключаться между двумя файлами. Постоянно закрывать и открывать их это бесит и очень мешает! Ну всё-таки, мне уже просто для себя очень интересно, вообще это возможно реализовать или нет. Возможно ли создать экземпляр формы в проекте «А» если модуль с функцией находится в проекте «Б»? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 12:59 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
vmag, я с тобой абсолютно согласен. Так в итоге и буду делать. Но вопрос был про экземпляры форм в другом проекте. А историю про 20 лет проекту, пришлось озвучить, так как начались сообщения про садомазо. Решил немного прояснить ситуацию зачем мне это всё… ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 13:00 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
alecko, спасибо за ответ! Заинтриговал! Обязательно более детально посмотрю твой пример. Пока не успел, может вечером доберусь. Про 64 бита тоже задумывался, но пока руки не дошли. Фишка с переключением между базами мне известна, в другой фирме так и справлялись с похожей проблемой. Просто сейчас хотел попытаться сделать по-другому. Но вот пока застрял. Надеялся, что всё-таки есть способ обойти эту проблему. Подожду ещё, может кто–нибудь такой же дорогой проходил. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 13:13 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
При определенных ограничениях (коих я в постановке задачи не узрел), вопрос решается довольно просто. Подсказка: CommandBars. Если подсказки будет не достаточно, распишу подробнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 13:18 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
kvn75 ROI, я так уже пробовал. К сожалению, так тоже не хочет работать. Сообщает «Пользовательский тип не определен» а как вы пробывали? а интелектуальная подсказкаи чё-нибудь подсовывает ну и переменной объявленной как Form нельзя присвоить класс (присваивайте форму frmTest) покажите код ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 14:11 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
kvn75 Может кто-нибудь знает, какой-нибудь трюк, который позволит именно в такой модели из прилинкованного проекта «Б», создавать экземпляры форм в проекте «А». Очень нужны идеи. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 14:12 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
kvn75 Про 64 бита тоже задумывался, но пока руки не дошли. забей. пользы ни какой, акромя гемора. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 14:13 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
к ссылке... автор1 - Private : Экземпляры этого класса не могут быть созданны извне.Более того они извне не видны Вы можете создавать и использовать такие обьекты только изнутри проекта, в которм "сидит" этот класс модуль. 2 - PublicNotCreatable : Экземпляры этого класса тоже не могут быть созданны извне , однако они могут быть использованы если уже созданы "изнутри". 3 - SingleUse : Вы можете использовать CreateObject function или ключевое слово New для создания экземпляров этого класса. При этом каждый новый элемент класса будет стартовать в отдельном "рабочем пространстве" Это свойство не появляется, если вы создаете ActiveX DLL. Обратите внимание вы таки можете насоздавать хоть сотню экземпляров этого класса. 4 -GlobalSingleUse : Префикс Global означает , что использовать этот тип класса можно без дополнительный обьявлений. В остальном это то же самое что и 3 5 - MultiUse : Да, именно, вы можете создавать и использовать экземпляры этого класса отовсюду, при этом допустимо, что одна физическая копия обьекта в памяти будет обслуживать все созданные экземпляры. Некоторые проблемы, связанные с использованием этого свойства(отказ в корректной работе при определенных настройках DCOM ) я расcматривал в статье о настройке DCOM компонентов 6 - GlobalMultiUse : Префикс Global означает , что использовать этот тип класса можно без дополнительный обьявлений, т.е класс создается автоматически, вы можете сразу использовать его свойства и методы как глобальные функции. . В остальном это то же самое что и 5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 14:24 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
kvn75, откройте браузер объектов и увидите подключенную базу за одно и доступные объекты имя подключенной базы будет корневым пространством имен от него и стройте путь до формы или до модуля (через точку) имя приатаченой базы.имя модуля или класса панург про видимость вам правильно говорит ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 14:27 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
ROI, До кучи (модули класса из библиотеки) https://www.sql.ru/forum/423804/moduli-klassa-v-nadstroyki# ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 15:02 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
ROI, И есче полезное https://www.sql.ru/forum/156857-2/kak-ispolzovat-moduli-klassa-iz-drugih-proektov-vba ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 15:25 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
ROI kvn75 ROI, я так уже пробовал. К сожалению, так тоже не хочет работать. Сообщает «Пользовательский тип не определен» а как вы пробывали? а интелектуальная подсказкаи чё-нибудь подсовывает ну и переменной объявленной как Form нельзя присвоить класс (присваивайте форму frmTest) покажите код Ой! Извини, забыл процитировать твой вопрос. Я пробовал писать имя проекта. Это не работает в конструкции с NEW Form_ Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
И на сколько я понимаю, находясь в модули проекта А можно вызвать функцию проекта «Б», хоть с указанием имени, Код: vbnet 1. 2. 3.
хоть без него, Код: vbnet 1. 2. 3.
Оба варианта работают. А вот указать в модули из Проекте «Б» вызов функции в проекте «А» нельзя. Или я не прав? А с обращением к классу в проекте «Б» и созданием из него экземпляров у меня проблем нет. Использую трюк с функций в стандартном модуле. Код: vbnet 1. 2. 3. 4.
Как и советует Microsoft ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2021, 19:27 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
Predeclared При определенных ограничениях (коих я в постановке задачи не узрел), вопрос решается довольно просто. Подсказка: CommandBars. Если подсказки будет не достаточно, распишу подробнее. К сожалению, недостаточно. Если не сложно, по подробней пожалуйста. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2021, 19:29 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
Панург к ссылке... автор1 - Private : Экземпляры этого класса не могут быть созданны извне.Более того они извне не видны Вы можете создавать и использовать такие обьекты только изнутри проекта, в которм "сидит" этот класс модуль. 2 - PublicNotCreatable : Экземпляры этого класса тоже не могут быть созданны извне , однако они могут быть использованы если уже созданы "изнутри". 3 - SingleUse : Вы можете использовать CreateObject function или ключевое слово New для создания экземпляров этого класса. При этом каждый новый элемент класса будет стартовать в отдельном "рабочем пространстве" Это свойство не появляется, если вы создаете ActiveX DLL. Обратите внимание вы таки можете насоздавать хоть сотню экземпляров этого класса. 4 -GlobalSingleUse : Префикс Global означает , что использовать этот тип класса можно без дополнительный обьявлений. В остальном это то же самое что и 3 5 - MultiUse : Да, именно, вы можете создавать и использовать экземпляры этого класса отовсюду, при этом допустимо, что одна физическая копия обьекта в памяти будет обслуживать все созданные экземпляры. Некоторые проблемы, связанные с использованием этого свойства(отказ в корректной работе при определенных настройках DCOM ) я расcматривал в статье о настройке DCOM компонентов 6 - GlobalMultiUse : Префикс Global означает , что использовать этот тип класса можно без дополнительный обьявлений, т.е класс создается автоматически, вы можете сразу использовать его свойства и методы как глобальные функции. . В остальном это то же самое что и 5 Спасибо за информацию! Я знал только про: 1 – Private, 2 – PublicNotCreatable Если я правильно понимаю, всё это касается использования обычных классов. Но как это можно использовать в моей задаче, что-то я не пойму… То-ли невнимательно прочитал тему по ссылки то-ли это немного не то. Разве возможно изменить данное свойство у модуля формы? Такой код, например вызывает ошибку. Код: vbnet 1.
А у модуля класса такое свойство есть, по этому данный код Код: vbnet 1.
не вызывает ошибки возвращает значение 2 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2021, 19:42 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
ROI kvn75, откройте браузер объектов и увидите подключенную базу за одно и доступные объекты имя подключенной базы будет корневым пространством имен от него и стройте путь до формы или до модуля (через точку) имя приатаченой базы.имя модуля или класса панург про видимость вам правильно говорит Спасибо большое, что пытаешься помочь. Про указания имя Проекта я в курсе. Но в этом случае Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
оно не работает. Работоет только в таком варианте Код: vbnet 1. 2. 3.
Модуль в проекте "Б" Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
За дополнительные ссылки на схожие темы, также большое спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2021, 20:01 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
kvn75 ... К сожалению, недостаточно. Если не сложно, по подробней пожалуйста. :) Прошу прощения, я вчера, видимо, отведал не тех грибочков, и "воевал с ветряными мельницами". :) В проект А совсем-совсем "залезать" нельзя? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2021, 21:48 |
|
Возможно ли создать экземпляр формы, находящийся в другом проекте?
|
|||
---|---|---|---|
#18+
Predeclared kvn75 ... К сожалению, недостаточно. Если не сложно, по подробней пожалуйста. :) Прошу прощения, я вчера, видимо, отведал не тех грибочков, и "воевал с ветряными мельницами". :) В проект А совсем-совсем "залезать" нельзя? Смотря на сколько... Я только в начале этого пути. Пока разделил так: Таблицы, запросы , макросы, формы и отчёты в одном. Модули в другом. Вроде всё фурычит. Кроме этого New Form_... Я надеялся так всё и оставить. Но если есть идеи как из функций в проекте Б, что-то дёргать в А, и это что-то вернёт мне ссылку на инстанс формы из проекта А, буду рад услышать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2021, 23:08 |
|
|
start [/forum/topic.php?fid=45&msg=40104885&tid=1609571]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
others: | 251ms |
total: | 426ms |
0 / 0 |