Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Копирование данных из временной таблицы [D6, FireBird 1.5]


Koala ©   (2004-07-03 15:52:00) 

Собственно нужно разгрузить клиентское приложение и сделать средствами сервера копирование данных из временной таблицы в постоянную и при удачном переносе очистить временную. Как сделать не знаю. (я еще новичок в базах). Как сделать програмно из клиентского приложения я знаю, а вот как средствами сервера...? Подскажите где почитать или кто подскажет пример процедуры....


Koala   (2004-07-05 16:10:00) [1]


> Johnmen ©   (05.07.04 15:59) [14]


> либо кеширование набора данных,
> либо TClientDataSet.

Надо пересмотреть подход, ИМХО может Вы и правы ...


Johnmen   (2004-07-05 15:59:00) [2]

Если я правильно понял суть вопроса, то никаких временных реальных таблиц не надо. Надо использовать
либо кеширование набора данных,
либо TClientDataSet.
Т.е. все изменения/добавления/удаления лежат в памяти. А потом, если надо, отображаютя в реальную таблицу...


Курдль   (2004-07-05 15:48:00) [3]


> вот я прошу пояснить что наз. не упадочным....

А я вообще перестал понимать, что в Вашем понимании есть "Временная таблица".
Я думал, что это таблица, создаваемая в БД на короткое время для производства каких-либо подсчетов или других действий над данными, применяемая, когда другими способами (запросами, курсорами) решить задачу не удается.

А у Вас какойй-то непонятный мне бизнес-процесс.
Т.е. определенные данные в какой-то момент времени становятся Вам не нужными и Вы их удаляете безвозвратно?


Koala   (2004-07-05 15:37:00) [4]

На серваке хранятся все таблицы, журналы и временные таблицы. Чтобы не гонять по сетке эти данные, необходимо разгрузить клиента. Вы утверждаете что создание и использование временных таблиц упадочный стиль, вот я прошу пояснить что наз. не упадочным....


Курдль   (2004-07-05 15:32:00) [5]


> Koala   (05.07.04 15:29) [10]

Я что-то не заметил никакой роли сервера в этом пояснении?
Что, все таблицы - временные?


Koala   (2004-07-05 15:29:00) [6]


> Курдль ©   (05.07.04 09:34) [8]



> Я считаю, что создание временных таблиц - исключительно
> упадочный стиль программирования!

Что Вы предлагаете для хранения временных данных?
Например диспетчер в свободное время вдо обеда, создает список автомобилей на которые необходимо выписать путевой лист, меняет водителей если закрепленный водитель уходит в отпуск или заболел, т.е. делает некоторые изменения, затем после 16.00 когда пройдет распределение командировок, кто куда и с кем едет, открывает временную таблицу и вносит изменеия, даты выезда и возврата из командировки, какие города, с каким клиентом выезжает, а затем печатает путевые и маршрутные листы. ИМХО без временных таблиц не обойтись или я ошибаюсь??? Если да поясните плиззз....


Ильш   (2004-07-05 09:39:00) [7]


> исключительно упадочный стиль программирования

но иногда так и тянет так и тянет УПАСТЬ :))))


Курдль   (2004-07-05 09:34:00) [8]


> Koala   (03.07.04 17:54) [3]
> может у кого нить есте еще мнения????

У меня есть. Но вряд ли оно Вам понравится.
Я считаю, что создание временных таблиц - исключительно упадочный стиль программирования!


stud   (2004-07-05 09:30:00) [9]

try
transaction.starttransaction;
ibsql.sql.text:='insert into MainTable(<список полей>) select <список полей> from TmpTable';
transaction.commit;
ibsql.sql.text:='delete from tmptable';
except
transaction1.rollback;
end;
примерно такая конструкция. в случае удачного переноса данных очищаеш временную таблицу, в противном случае возвращаешся к первоначальному состоянию


}{ander   (2004-07-04 01:15:00) [10]


> Собственно нужно разгрузить клиентское приложение и сделать
> средствами сервера копирование данных из временной таблицы
> в постоянную и при удачном переносе очистить временную


> удалять TMPTable необходимо когда все данные перенесены
> из временной таблицы


Определись, что нужно: очистить таблицу или удалить (?) ее!


DrPass   (2004-07-03 19:23:00) [11]

В ХП нельзя делать ни commit, ни rollback. Но клиентское приложение не надорвется, если добавить в него обработку исключений от сервера. Точно также, кстати, оно не надорвется, если отправит на сервер запрос
insert into MainTable(<список полей>) select <список полей> from TmpTable;
без всяких хранимых процедур


GanibalLector   (2004-07-03 18:04:00) [12]

в ХП вставить что-то типа :
WHEN ANY DO  
BEGIN  
/*действия при любой нестандартной операции ошибке
или исключении */  
END

и в зависимости от ЭТОГО делать COMMIT либо ROLLBACK


Koala   (2004-07-03 17:54:00) [13]

может у кого нить есте еще мнения????


Koala   (2004-07-03 16:22:00) [14]


> 3APA3A   (03.07.04 16:16) [1]



> create procedure Proc
>  as
>  begin
>    insert into MainTable(<список полей>) select <список
> полей> from TmpTable;
>   delete from TmpTable;
>  end
>  

Приблизительно такую процедуру в начале и планировалось делать, но факт в том, что удалять TMPTable необходимо когда все данные перенесены из временной таблицы, в случае ошибки должно вызватся Rollback перед delete from TMPTable


3APA3A   (2004-07-03 16:16:00) [15]

create procedure Proc
 as
 begin
   insert into MainTable(<список полей>) select <список полей> from TmpTable;
  delete from TmpTable;
 end

 Это примерный набросок.  Соответствующие поля должны иметь одинаковый тип.


Наверх

Титульная страница Поиск, карта сайта Написать письмо