Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.14;
Скачать: CL | DM;

Вниз

Можно ли работать с временной таблицей (напр. #tmp_tab_name ) через Ttable?   Найти похожие ветки 

 
Nest   (2001-11-29 12:32) [0]

Когда в св-ве Table1.TableName значение,начинающееся с #(т.е. временная таблица), при попытке table1.Createtable ругается "Инвалид табле наим", а при Table1.open -
"table does not exist,
Ivalid object name "#view1""
. Хотя в этом сеансе таблица точно создана через Query(кстати с его помощью выбирается)

Несудьба ?


 
sudiv   (2001-11-29 13:29) [1]

Похоже на то.


 
Nest   (2001-11-29 14:21) [2]

Как бы узнать по-точнее?
Уж если здесь люди не знают...


 
asafr   (2001-11-29 14:50) [3]

Брось TTable - пользуйся TQuery. Все получится.


 
sudiv   (2001-11-29 15:06) [4]

Пробовал,
действительно TTable не "берет" таблицы названия которых c #.
Ничего уж не поделаешь.
А поменять название таблицы нельзя ?
Например tmp3222~.<что-то>.


 
Nest   (2001-11-29 15:27) [5]

2sudiv ©
Видишь ли, временные таблицы - это не просто таблицы,которые ты создаёшь,юзаешь а потом мочишь.
В МССКЛ это отдельный вид и они серьёзно отличаются.
1.Они создаются для сеанса,и когда подключение к базе разрывается(штатно ИЛ НЕ ШТАТНО) то не надо заботиться об их уничтожении- за это отвечает сервер.

2.Мне временные таблицы необходимы для формирования НД,отображаемого
пользователю при просмотре-
А теперь представь, что пользователь не сможет просмотреть данные из базы если у него есть только права на просмотр (врем.таблицу та нельзя будет создать)!!!!!!!!!!!!!!!!
А таблицу с # создать можно всегда- они по-моему создаются даже в отдельной базе "TeMP"

3.Оператор
SELECT * INTO temp_table_name FROM source_table_name
Обычно не срабатывает, если не открыты специфические права(опции базы),которые обычно закрыты.
однако
SELECT * INTO #temp_table_name FROM source_table_name
сработает всегда.

может где соврал-не спец я по МССКЛ.

Ну, в общем, поменять название таблицы нельзя.


 
sudiv   (2001-11-29 15:33) [6]

М-да, я тем более не спец.
Тогда я поднимаю руки.
Не знаю.


 
Nest   (2001-11-29 15:36) [7]

Буду пытаться заменить Ттабле на Ткьюери.
%(


 
Ега   (2001-11-30 09:36) [8]

Nest, а временные таблицы точно автоматически удаляются при закрытии сеанса? По-моему нет, т.к. я сколько раз уже натыкался: делаешь Select into, а тебе Object exists


 
Nest   (2001-12-10 11:24) [9]

ДАДАДА!!!
Но сеанс действительно должен быть завершён.
Если ты работаешь в интерактиве- то например перезапустить клиента, а если через дельфи - то недостаточно просто закрыть таблицу. Надо делать connection:=false толи у Database толи у Session.
Но удаляются точно!


 
Roma   (2001-12-10 11:56) [10]

> Ега (30.11.01 09:36)

Если select into - это в плане временная будет таблица или нет еще ничего не значит. Чтобы создаваемая таблица была временной, необходимо при создании ( select into - тоже создание таблицы) указывать имя таблицы, начинающееся на #.

Временная таблица создается в tempdb с именем не совсем тем, что вы укажете при ее создании; например, если укажете #mytemptable, создастся таблица с именем #mytemptable плюс длиннючее идентифицирующее окончание. И доступна она будет только для того пользователя и того сеанса, при котором была создана.

2Nest>

Может, стоит перенести часть работы в хранимую процедуру... И еще: правильно делаешь, что прислушиваешься к asafr и переходишь на TQuery, юзать MSSQL с помощью TTable - "это же не наш метод"...


 
NewComer   (2001-12-10 12:54) [11]

Попробуй так.
у TDataBase есть метод Execute....
DataBase1.Execute("Create table #tblTemp(a int, b varchar(30))"); и потом по имени обращайся к этой табличке.. вообще то временыые таблички видны сессии, которая их создала.
У меня все заработало когда юзал TAdoConnection.Execute... вроде и сча должно...


 
Nest   (2001-12-10 16:21) [12]

2Roma
Всё верно.

2Nest
За совета конечно спасибо, но:
1.В Д3 DataBase1.Execute работать не хочет
2.Проблема не в том чтоб создать врем. таблицу - это можно и запросом сделать.
Проблема потом эту таблицу открыть с пом. Ттабле.
Но, видать, вправду такие попытки обречены...


 
Nest   (2001-12-10 16:23) [13]

Да блин, второй абзац адресован NewComer ©.


 
NewComer   (2001-12-10 17:05) [14]

Я конечно не специалист, но Несколько мыслей:
Вообще через БДЕ работать с серваком.. енто как то ракообразно.
DataBase.Execute должен сработать(ежели ты запросом создашь временную табличку.. то точно ее потом не увидишь), поковыряйся что ли.. DataBase.FlushSchemaCache - посмотри.. мож сработает после него...
вообще.. поныкайся с глобальными временными табличками.. посмотри, их то видно? И вообше, локальную временную табличку должна создать сессия. т.е. коннект(в данном случае TDataBase).. если например создать ее в SP то только эта SP ее и видит.. и потом уничтожит... не знаю как получше то выразиться.. :-( Ну и конечно лучше отказаться от TTable в пользу TQuery..



Страницы: 1 вся ветка

Текущий архив: 2002.01.14;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.011 c
3-42368
andey
2001-12-11 19:49
2002.01.14
Изменение записей таблицы исходя из другой


1-42451
avr555
2001-12-23 18:05
2002.01.14
Вопрос про линии


3-42351
psv
2001-12-07 15:27
2002.01.14
Как отделить копейки в Grid


4-42613
Karan
2001-11-14 14:19
2002.01.14
DLL<->Variant


1-42401
ev
2001-12-22 19:38
2002.01.14
помогите разобраться!