|
|
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
Столкнулся с проблемой: При формировании отчета в adp -проекте создается новое подключение. С этим новым подключением возникают следующие проблемы: 1. Если источником отчета является хран. процедура в которой исползуется временная таблица, созданная под основным (первичным) соединением, то естественно в новом соединении она не видна. 2. Если пара adp-проект - MS-SQL использует механизм защиты через роль приложения, то соотвтственно ранее назначенная роль приложения не распространяется на новое соединение. Если первую проблему мне удолось обойти, то вот со второй есть проблемы - как распространить роль приложения и на это соединение. Может быть кто-нибудь сталкивался и решал подобные проблемы? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 09:11:43 |
|
||
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
автор1. Если источником отчета является хран. процедура в которой исползуется временная таблица, созданная под основным (первичным) соединением, то естественно в новом соединении она не видна. Если источником является ХП, то зачем вам видеть временную таблу? Ведь ХП и сама может rs вернуть типа в конце ХП пишем: Select * From #tbm_table PS: и не забыть в начале ХП написать: SET NOUCOUNT ON ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 09:18:13 |
|
||
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
SET NOCOUNT ON Правильный вриант - в пред. посте опечатка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 09:19:11 |
|
||
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
Если источником является ХП, то зачем вам видеть временную таблу? Ведь ХП и сама может rs вернуть типа в конце ХП пишем: Select * From #tbm_table PS: и не забыть в начале ХП написать: SET NOUCOUNT ON [/quot] Временная таблица создается не в ХП, а кодом VBA Codeproject.connection.execute "Create Table t#......" соответственно, все ХП, вызываемые от имени этой коннекции видят эту времянку, но в случае с отчетом Access создает новое (неуправляемое) соединение и соответственно все ХП вызываемые от этого соединения не могут видеть t# созданную кодом VB по поводу no count - в курсе. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 09:46:40 |
|
||
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
К сожалению. в ADO (и аксессе заодно), коннекты плодятся как кролики, зачастую неконтролируемым образом. И с application ролями засада. А потому вариантов остаётся немного - или учитывать сие похабное поведение Аксесса+ADO, либо менять клиентский инструмент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 12:33:47 |
|
||
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
Alexey ShК сожалению. в ADO (и аксессе заодно), коннекты плодятся как кролики, зачастую неконтролируемым образом. И с application ролями засада. А потому вариантов остаётся немного - или учитывать сие похабное поведение Аксесса+ADO, либо менять клиентский инструмент Поменять клиентский струмент - уже поздно. Есть еще один вариант - имитировать роль приложения, но тут возникла еще одна проблемка: использование метода OpenConnection в закрытом по записи ADP-проекте (в VB коде это сделать не удается -ругается). Из меню Файл-Подключение... - я могу сменить пользователя, БД. Но как добиться этого эффекта в VB-Коде ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 13:28:06 |
|
||
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
поищи по форуму, недавно обсуждалась борьба с подключением ADP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 13:49:29 |
|
||
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
2 Alexey Sh Они не плодятся как кролики - с чего бы это?:) 2 Tema_a Использовать глобальную временную табличку ##TableName - видна нормально. Создавать свою, потом её убивать после открытия отчёта, ещё можно создавать её в ХП, которая является источником данных для отчёта. Вообще странно, сейчас лень проверять просто, есть отчёт на базе ХП, которая смотри на таблицу #TableName - всё прекрасно работает. Таблица создаётся заранее перед печатью отчёта, т.е. берут меня сомнения, что Аксесе для КАЖДОГО отчёта делает отдельный конекшн - он их и так постоянно 2-3 держит... Мне кажется, проблема в другом, как вы обращаетесь к этой табличке и под каким пользователем она создаётся. авториспользование метода OpenConnection в закрытом по записи ADP-проекте Не въёхал в то, что написано - сформировать строку подключения можно под каким-угодно пользователем, который в свою очередь принадлежит к опред. роли на сервере - или не про эти роли речь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 14:34:15 |
|
||
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
2 Hummer : Процесс размножения(клонирования) неконтролируем(количество коннектов в разумных пределах), достаточно одной таблетки. глобальное временная таблица - конечно закрывает проблему, но криво это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 14:50:17 |
|
||
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
2 Hummer На тему плодящихся кроликов /topic/85650&pg=1#1148280 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 14:57:23 |
|
||
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
2 Лох Позорный Да, если смотреть на currentProject.connection - то он не всегда возвращает именно тот коннект, я и написал поэтому, что либо глобальная временная табличка, либо свой коннект. Про кроликов - Аксесе не ДЕРЖИТ в последствии эти коннекты открытыми - это и имелось в виду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 16:04:07 |
|
||
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
т.е. своих кроликов Аксесс придушивает сам. Плохую аналогию подобрал, согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 16:40:32 |
|
||
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
2 Alexey Sh Да я тоже не точно выразился:) В любом случае, на Аксесе не всегда стоит полагаться в плане коннектов (вдруг не прибъёт и будет висеть), да и других средах потом писать проще станет, если сразу привыкнуть всё самому делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 16:43:39 |
|
||
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
да и других средах потом писать проще станет, если сразу привыкнуть всё самому делать. А смысл тогда писать на аксесе - если самому все делать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 16:47:09 |
|
||
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
2 ЛП Не перегибай:) В этом случае - лучше самому сделать, в других вернуть ссылку на коннект через текущий проект:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 16:49:03 |
|
||
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
Смысл на аксессе писать есть - работающий макет приложения получается с минимальными затратами времени. А если учесть, что масса проектов так и остаются макетами и успешно эксплуатируютсю долгие годы - пущай живёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 17:08:21 |
|
||
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
Hummer2 Alexey Sh В любом случае, на Аксесе не всегда стоит полагаться в плане коннектов (вдруг не прибъёт и будет висеть), да и других средах потом писать проще станет, если сразу привыкнуть всё самому делать. А как сказать аксессу, чтобы он при открытии отчета использовал именно этот, конкретный, (пусть даже созданный мною лично) коннект??? Hummer Использовать глобальную временную табличку ##TableName - видна нормально. Создавать свою, потом её убивать после открытия отчёта, ещё можно создавать её в ХП, которая является источником данных для отчёта. Именно так и выкрутился, с небольшими дополнениями по обеспечению уникальности глобальной времянки. Hummer Вообще странно, сейчас лень проверять просто, есть отчёт на базе ХП, которая смотри на таблицу #TableName - всё прекрасно работает. Таблица создаётся заранее перед печатью отчёта, т.е. берут меня сомнения, что Аксесе для КАЖДОГО отчёта делает отдельный конекшн - он их и так постоянно 2-3 держит... Мне кажется, проблема в другом, как вы обращаетесь к этой табличке и под каким пользователем она создаётся. Здесь дело именно в области видимости. Разрешения, владельцы - есть ограничение вторичное :) Hummer автор использование метода OpenConnection в закрытом по записи ADP-проекте Не въёхал в то, что написано - сформировать строку подключения можно под каким-угодно пользователем, который в свою очередь принадлежит к опред. роли на сервере - или не про эти роли речь? Речь о том, что если файл Project.Adp закрыт по записи (атрибут файловой системы - ReadOnly), то программно я не могу переконнектить проект. Хотя через меню файл-подключение... (вручную) я это могу сделать без проблем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 07:40:12 |
|
||
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
Лох Позорный2 Hummer На тему плодящихся кроликов /topic/85650&pg=1#1148280 По моему этот пример лишь показывает асинхронность выполнения процедур на сервере и на клиенте а причем тут плоды кроликов? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 07:46:35 |
|
||
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
При открытии отчёта или формы может легко открыться новое соединение. Также после откырия формы или отчёта соединение может быть занято и последующие Execute могут создать новое соединение. Итого: в результате - асинхронное исполнение приводит к появлению дополнительных соединений, которые конечно закрываются по мере возможности, но препятствуют в ряде случаев работе с локальными временными таблицами и application role. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 11:52:38 |
|
||
|
Отчеты Access, SQL, Connections
|
|||
|---|---|---|---|
|
#18+
Alexey Sh Итого: в результате - асинхронное исполнение приводит к появлению дополнительных соединений, которые конечно закрываются по мере возможности, но препятствуют в ряде случаев работе с локальными временными таблицами и application role. Спасибо! А как на счет перепривязки закрытому по записи АДП (закрытие на уровне файловой системы)? Походил по форуму, конкретно про этот случай ничего не нашел. И вообще как акцесс переинициирует коннект, когда я заставляю его делать это через меню. Шмонал профилером - ничего необычного не обнаружил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 12:03:49 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32887602&tid=1668981]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 242ms |
| total: | 444ms |

| 0 / 0 |
