|
|
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
Господа подскажите как написать аналогичное только чтобы работало. declare @st nvarchar(1000) select @st=" select * into #table from ##table1"+user_name() exec (@st) select * from #table - error Create - insert сделать немогу т к точно не знаю структуру ##table1+user_name() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 10:10:52 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
На мой взгляд это невозможно. И мне кажется что и Вам это не нужно - ну и что Вы будете делать с таблицей с незнакомой структрой? Ну и по-моему делать такие таблицы "##table1"+user_name() - ну мягко говоря ненормально. Можно найти более красивые решения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 10:35:31 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
Насчет области видимости временных таблиц на этом форуме было сказано много, так что повторяться на эту тему не буду. А для конкретного случая есть два пути решения: 1. select @st=' select * into #table from ##table1'+user_name() + ' GO select * from #table' exec (@st) 2. select @st=' select * into tmp_table from ##table1'+user_name()' exec (@st) select * from tmp_table DROP tmp_table ...правда во втором случае прийдется дать пользователю права на создание таблиц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 10:40:26 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
Помоему гдето так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 10:40:29 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
а какое можно найти решение, если мне нужно чтобы разные пользователи работали со своими временными таблицами и при этом не пересекались. Структуру не знаю потому что переменное число столбцов. ее мне просто надо чуть-чуть поизменять. Ничего в голову подходящего не лезет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 10:44:19 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
дык они и так разные ... для каждого конекта... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 10:50:29 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
Вот именно они разные а мне их нужно видеть из разных процедур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 10:53:48 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
Maxx а что делает твоя процедура? У Nickolay работает но 1 вариант отпадает т к таблицу из процедуры всеравно невидно. а писать все в ' ' негодится. 2 -й вариан с раздачей доступа тоже некатит. Получается что никак нормально сделать нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 11:16:27 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
ну если уж очень надо, то можешь скомбинировать типа: select @st=' select * into tmp_table from ##table1'+user_name()' exec (@st) select * into #table from tmp_table DROP tmp_table -тогда все и увидишь из своей процдуры. Правда получается все это через одно место, но раз надо, так надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 11:33:51 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
Просто сшивает значения из ##t1 c suser+name() и заносит в #t. Я просто не конца понял вопрос поетому родилось ето:))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 11:44:48 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
Я бы например сделал постоянную таблицу со всеми возможными полями и полем-идентификатором пользователя(или процесса). Но если знать задачу наверное можно и еще что-то придумать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 11:48:44 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
задача например может быть такой: есть таблица СКЛАДЫ пользователю нужно выполнить отчет приход на склады. склады он выбирает через таблицу ##склады + system_user() , которая формируется как таблица СКЛАДЫ + altre table поле "выбрано" например declare @St nvarchar(1000) set nocount on select @st=" IF EXISTS (SELECT name FROM tempdb..sysobjects WHERE name = '##склады"+user_name()+"' AND xtype = 'U') DROP Table ##склады"+user_name() exec(@st) select @st=" SELECT * into ##склады"+user_name()+" FROM dbo.[склад] ORDER BY Наименование_склада" exec(@st) select @st=" ALTER TABLE [##продажи"+user_name()+"] ADD CONSTRAINT [PK_##склады"+user_name()+"] PRIMARY KEY ( [Код_Склад])" exec(@st) select @st=" ALTER TABLE [##склады"+user_name()+"] ADD [Выбрано] bit not null CONSTRAINT продажи_склады"+user_name()+" DEFAULT 0" exec(@st) Далее пользователь в ACCESS выбирает склады и в отчете проверяется in select from ##склады"+user_name()+" какие выбраны, и создается отчет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 12:10:32 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
Тут у меня было две проблемы 1. Инициализационный скрипт каждому коннекту /его нельзя делать из exec или процедуры - таблицы не видятся/ 2. Для процедур - обработчиков передается имя таблицы как параметр И с тем и другим натрахались достаточно, но все работает ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 12:38:50 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
2 Anton_Snitko А почему бы сразу в процедуру не передавать какие по каким складам нужно делать отчет? Это к тому же могло бы ускорить выполнение отчета. Но даже если и делать через глобальные ВТ(чего я бы делать не стал) - всё равно структура таблицы известна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 13:08:49 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
И как мне передать в процедуру какие склады выбраны?? (как текстовую переменную, а потом ее проверять , выдирать по кускам и тд...?) Можете пример какой - нибуть скинуть, или как-то по другому? я взял упрощенный пример, где структура известна чесно говоря я задолбался с этими table + system_user() и сплошными динамичискими запросами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 13:23:35 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
А такой вариант решения проблемы чем не устраивает? Этот способ уже не раз обсуждался на форуме. Для каждого коннекта будет создана своя временная таблица, пересекаться они не будут, видимость в хранимых процедурах тоже обеспечена... Вот в такую временную таблицу вы и запихнете список идентификаторов выбранных складов... Создайте хранимую процедуру: Код: plaintext 1. 2. 3. 4. И исполните ее: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Это подходит для вашей ситуации? С уважением, Александр Степанов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 13:37:39 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
Александр я попробовал Ваш вариант, при изменении таблицы ИЗ ACCESS выдается ошибка database name '' ignored,referencing object in tempdb , или может таблицу #XXX из клиента вообще напрямую изменять нельзя, как быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 14:03:41 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
Не знал, что Вы работаете через Access. Ну, не страшно. В любом случае Вы можете сделать отбор складов в таблицу Access, а затем с помощью кода "запихнуть" в готовый объект "запрос к серверу" SQL код следующего вида: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. с результатами которого Вы и сможете в дальнейшем работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 14:18:45 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
В adp проектах ACCESS таблицы только на сервере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 14:28:14 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
И как мне передать в процедуру какие склады выбраны?? 1. В виде строки ("1,5,18"), а в процедуре написать нечто вроде Код: plaintext 1. 2. 3. но могут быть и другие варианты 2.Сделать таблицу для передачи параметров Код: plaintext 1. 2. 3. 4. 5. Заполнять таблицу отдельно, а в процедуру передавать id Наверное могут быть и еще варианты, но эти два всяко проще того с чем Вы бьётесь. В любом случае глобальные ВТ и динамические запросы - это последнее к чему нужно обращаться(нет, пожалуй предпоследнее; последнее - курсоры) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 15:10:19 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
все равно приходится создавать таблицу в которой пользователь будет ставить галочки, и чтобы данные таблицы не пересекались. Наверное в ACCESS ничего кроме как я написал придумать нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 15:31:12 |
|
||
|
Создание #таблицы
|
|||
|---|---|---|---|
|
#18+
Да можно. Одну таблу на всех. И spid указывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2002, 16:17:39 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32047762&tid=1820637]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 355ms |

| 0 / 0 |
