powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Отчеты Access, SQL, Connections
21 сообщений из 21, страница 1 из 1
Отчеты Access, SQL, Connections
    #32886127
Tema_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с проблемой:
При формировании отчета в adp -проекте создается новое подключение.
С этим новым подключением возникают следующие проблемы:
1. Если источником отчета является хран. процедура в которой исползуется временная таблица, созданная под основным (первичным) соединением, то естественно в новом соединении она не видна.
2. Если пара adp-проект - MS-SQL использует механизм защиты через роль приложения, то соотвтственно ранее назначенная роль приложения не распространяется на новое соединение.

Если первую проблему мне удолось обойти, то вот со второй есть проблемы - как распространить роль приложения и на это соединение.
Может быть кто-нибудь сталкивался и решал подобные проблемы? Спасибо.
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32886143
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор1. Если источником отчета является хран. процедура в которой исползуется временная таблица, созданная под основным (первичным) соединением, то естественно в новом соединении она не видна.
Если источником является ХП, то зачем вам видеть временную таблу?
Ведь ХП и сама может rs вернуть
типа в конце ХП пишем: Select * From #tbm_table

PS: и не забыть в начале ХП написать: SET NOUCOUNT ON
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32886146
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SET NOCOUNT ON
Правильный вриант - в пред. посте опечатка
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32886190
Tema_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если источником является ХП, то зачем вам видеть временную таблу?
Ведь ХП и сама может rs вернуть
типа в конце ХП пишем: Select * From #tbm_table

PS: и не забыть в начале ХП написать: SET NOUCOUNT ON [/quot]

Временная таблица создается не в ХП, а кодом VBA
Codeproject.connection.execute "Create Table t#......"
соответственно, все ХП, вызываемые от имени этой коннекции
видят эту времянку, но в случае с отчетом Access создает новое (неуправляемое) соединение и соответственно все ХП вызываемые от этого соединения не могут видеть t# созданную кодом VB
по поводу no count - в курсе. Спасибо
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32886726
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению. в ADO (и аксессе заодно), коннекты плодятся как кролики, зачастую неконтролируемым образом. И с application ролями засада.

А потому вариантов остаётся немного - или учитывать сие похабное поведение Аксесса+ADO, либо менять клиентский инструмент
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32886920
Tema_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey ShК сожалению. в ADO (и аксессе заодно), коннекты плодятся как кролики, зачастую неконтролируемым образом. И с application ролями засада.

А потому вариантов остаётся немного - или учитывать сие похабное поведение Аксесса+ADO, либо менять клиентский инструмент

Поменять клиентский струмент - уже поздно. Есть еще один вариант - имитировать роль приложения, но тут возникла еще одна проблемка:
использование метода OpenConnection в закрытом по записи ADP-проекте (в VB коде это сделать не удается -ругается). Из меню Файл-Подключение... - я могу сменить пользователя, БД. Но как добиться этого эффекта в VB-Коде ?
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32887009
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поищи по форуму, недавно обсуждалась борьба с подключением ADP
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32887170
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Alexey Sh
Они не плодятся как кролики - с чего бы это?:)

2 Tema_a
Использовать глобальную временную табличку ##TableName - видна нормально. Создавать свою, потом её убивать после открытия отчёта, ещё можно создавать её в ХП, которая является источником данных для отчёта.

Вообще странно, сейчас лень проверять просто, есть отчёт на базе ХП, которая смотри на таблицу #TableName - всё прекрасно работает.
Таблица создаётся заранее перед печатью отчёта, т.е. берут меня сомнения, что Аксесе для КАЖДОГО отчёта делает отдельный конекшн - он их и так постоянно 2-3 держит... Мне кажется, проблема в другом, как вы обращаетесь к этой табличке и под каким пользователем она создаётся.



авториспользование метода OpenConnection в закрытом по записи ADP-проекте

Не въёхал в то, что написано - сформировать строку подключения можно под каким-угодно пользователем, который в свою очередь принадлежит к опред. роли на сервере - или не про эти роли речь?
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32887230
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Hummer : Процесс размножения(клонирования) неконтролируем(количество коннектов в разумных пределах), достаточно одной таблетки.

глобальное временная таблица - конечно закрывает проблему, но криво это.
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32887252
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Hummer
На тему плодящихся кроликов
/topic/85650&pg=1#1148280
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32887485
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Лох Позорный
Да, если смотреть на currentProject.connection - то он не всегда возвращает именно тот коннект, я и написал поэтому, что либо глобальная временная табличка, либо свой коннект.

Про кроликов - Аксесе не ДЕРЖИТ в последствии эти коннекты открытыми - это и имелось в виду.
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32887581
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. своих кроликов Аксесс придушивает сам. Плохую аналогию подобрал, согласен.
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32887592
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Alexey Sh
Да я тоже не точно выразился:)

В любом случае, на Аксесе не всегда стоит полагаться в плане коннектов (вдруг не прибъёт и будет висеть), да и других средах потом писать проще станет, если сразу привыкнуть всё самому делать.
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32887602
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да и других средах потом писать проще станет, если сразу привыкнуть всё самому делать.
А смысл тогда писать на аксесе - если самому все делать...
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32887606
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ЛП
Не перегибай:)
В этом случае - лучше самому сделать, в других вернуть ссылку на коннект через текущий проект:)
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32887665
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смысл на аксессе писать есть - работающий макет приложения получается с минимальными затратами времени. А если учесть, что масса проектов так и остаются макетами и успешно эксплуатируютсю долгие годы - пущай живёт.
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32888344
Tema_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hummer2 Alexey Sh
В любом случае, на Аксесе не всегда стоит полагаться в плане коннектов (вдруг не прибъёт и будет висеть), да и других средах потом писать проще станет, если сразу привыкнуть всё самому делать.

А как сказать аксессу, чтобы он при открытии отчета использовал именно этот, конкретный, (пусть даже созданный мною лично) коннект???

Hummer
Использовать глобальную временную табличку ##TableName - видна нормально. Создавать свою, потом её убивать после открытия отчёта, ещё можно создавать её в ХП, которая является источником данных для отчёта.

Именно так и выкрутился, с небольшими дополнениями по обеспечению уникальности глобальной времянки.

Hummer
Вообще странно, сейчас лень проверять просто, есть отчёт на базе ХП, которая смотри на таблицу #TableName - всё прекрасно работает.
Таблица создаётся заранее перед печатью отчёта, т.е. берут меня сомнения, что Аксесе для КАЖДОГО отчёта делает отдельный конекшн - он их и так постоянно 2-3 держит... Мне кажется, проблема в другом, как вы обращаетесь к этой табличке и под каким пользователем она создаётся.


Здесь дело именно в области видимости. Разрешения, владельцы - есть ограничение вторичное :)

Hummer
автор
использование метода OpenConnection в закрытом по записи ADP-проекте

Не въёхал в то, что написано - сформировать строку подключения можно под каким-угодно пользователем, который в свою очередь принадлежит к опред. роли на сервере - или не про эти роли речь?

Речь о том, что если файл Project.Adp закрыт по записи (атрибут файловой системы - ReadOnly), то программно я не могу переконнектить проект. Хотя через меню файл-подключение... (вручную) я это могу сделать без проблем
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32888351
Tema_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лох Позорный2 Hummer
На тему плодящихся кроликов
/topic/85650&pg=1#1148280
По моему этот пример лишь показывает асинхронность выполнения процедур на сервере и на клиенте а причем тут плоды кроликов? :)
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32888818
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При открытии отчёта или формы может легко открыться новое соединение.
Также после откырия формы или отчёта соединение может быть занято и последующие Execute могут создать новое соединение.

Итого: в результате - асинхронное исполнение приводит к появлению дополнительных соединений, которые конечно закрываются по мере возможности, но препятствуют в ряде случаев работе с локальными временными таблицами и application role.
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32888853
Tema_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Sh
Итого: в результате - асинхронное исполнение приводит к появлению дополнительных соединений, которые конечно закрываются по мере возможности, но препятствуют в ряде случаев работе с локальными временными таблицами и application role.
Спасибо!
А как на счет перепривязки закрытому по записи АДП (закрытие на уровне файловой системы)? Походил по форуму, конкретно про этот случай ничего не нашел. И вообще как акцесс переинициирует коннект, когда я заставляю его делать это через меню. Шмонал профилером - ничего необычного не обнаружил.
...
Рейтинг: 0 / 0
Отчеты Access, SQL, Connections
    #32888951
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про "Connect" знаю. как вызвать соотв форму и получить строку соединения

форма к аксессу отношения не имеет. она из OLEDB растёт. Что дальше вытворяется - не копал
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Отчеты Access, SQL, Connections
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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