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

Вниз

Временные таблицы в MSSql Server 2000   Найти похожие ветки 

 
gsvserg ©   (2004-01-20 13:40) [0]

Всем привет! Вопрос такой. Нужно сделать так, чтобы у пользователя была возможность отменить внесенные изменения в таблице. Т.е. все изменения производить во временной таблице, а при сохранении заменять данные. Пытался создавать временные таблицы на сервере
select * into #table_name1 from table_name
select * from #table_name

, но при добавлении новой записи с помощью
insert into #table_name...
выдается сообщение об ошибке "Invalid object name #table_name".
Кто-нибудь может объяснить как это делается. Или есть друе решения?


 
Delirium ©   (2004-01-20 13:45) [1]

Надо insert делать на том-же Connection-е, на котором таблицы создавал.


 
gsvserg ©   (2004-01-20 13:46) [2]

Delirium © (20.01.04 13:45) [1]
У меня один Connect на всю программу.


 
Delirium ©   (2004-01-20 13:48) [3]

Если у тебя один и тот-же Connection, а таблицы пропадают, значит ты его где-то прерываешь, ничего друго-го быть не может.


 
Ega23 ©   (2004-01-20 13:56) [4]

Делай тогда не #table_name1, а ##table_name1.
Только дропнуть не забудь.


 
gsvserg ©   (2004-01-20 13:58) [5]

Перед инсертом ставлю breakpoint и смотрю process info в SQLSERVER - connect присутствует.


 
sniknik ©   (2004-01-20 14:03) [6]

смотри в TADOConnection.Active, и самое главное чтобы оно ни разу от первой команды до второй в false не вставало (при трассировке смотри).


 
ZrenBy ©   (2004-01-20 14:15) [7]

>>Т.е. все изменения производить во временной таблице

А ты на клиенте меняй, отменяй, меняй, отменяй,
добавляй, удаляй, добавляй, удаляй, ...

А потом на сервак скопом лей.


 
gsvserg ©   (2004-01-20 14:16) [8]

Ega23 © (20.01.04 13:56) [4]
Спасибо, проходит. Так и буду делать.
sniknik © (20.01.04 14:03) [6]
Ты имеешь ввиду TAdoconnection.connected=true?
Проверял, всегда true.


 
gsvserg ©   (2004-01-20 14:17) [9]

ZrenBy © (20.01.04 14:15) [7]
Я бы с удовольствием, только как?


 
sniknik ©   (2004-01-20 14:30) [10]

всетаки гдето у тебя конект обрывается, может обрашения есть к другой базе, к master к примеру, тогда это на уровне сервера происходит (можно посмотреть в профайлере), а так как временная таблица локальная то смена базы равна разрыву коннекта.
вот проверь так (всю пачку в один ADODataSet) сработает, нет других комманд между, действий никаких и следовательно сработает

SELECT * into #table_name FROM table_name
INSERT INTO #table_name (Name) VALUES ("jkhj1234khlhjkhkj")
select * from #table_name


 
stone ©   (2004-01-20 14:30) [11]


> gsvserg ©

А разве управление транзакциями не дает возможности отмены изменений?

имхо, временные таблицы тут явно лишние...


 
ZrenBy ©   (2004-01-20 14:38) [12]

>>Я бы с удовольствием, только как?

TClientDataSet

или

TADODataSet с ltBatchOptimistic

потом набор данных в виде XML посылается на сервер
и в одной транзакции удаленные удаляются, добавленные добавляются,
измененные изменяются.


 
gsvserg ©   (2004-01-20 16:55) [13]

ZrenBy © (20.01.04 14:38) [12]
Оказывается все просто UpdateBatch() и CancelBatch().

sniknik © (20.01.04 14:30) [10]
Извени, не проверял. То что подсказал ZrenBy мне подходит.

ВСЕМ СПАСИБО!!!


 
Delirium ©   (2004-01-20 18:29) [14]

> "Делай тогда не #table_name1, а ##table_name1"
- если действительно один Connection, то и сессия на MSSQL - одна и взаимодействующий пользователь - один, а следовательно нет никакой необходимости предостовлять временные таблицы на всеобщее обозрение, да ещё и заботиться об уникальности названий таблиц. Куда как грамотнее всё-таки найти ошибку у себя в коде.



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

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

Наверх




Память: 0.49 MB
Время: 0.024 c
6-29501
Samael6
2003-11-19 13:53
2004.02.10
Настройки TCP/IP


7-29643
Mr.Bean
2003-11-25 23:02
2004.02.10
Как программно установить источник записи?


4-29652
romeo
2003-12-06 12:42
2004.02.10
Быстрое изменение свойств шрифта


14-29580
1385
2004-01-19 17:32
2004.02.10
Реально ли на дельфи написать форум? Если да то как?


7-29642
Mr.Nobody
2003-11-25 22:17
2004.02.10
Чтение из com-порта...