[ОТВЕТИТЬ]
Опции темы
30.03.2007 10:42  
Alexndr
Для доступа к таблицам супермага использую Delphi, через компоненты odac. Пользуюсь в течении 2 недель и пока только делал выборку данных для отчетов и статистики. Но хотелось бы вносить изменения не только через интерфейс программы супермаг, но и с помощью дополнительных модулей. Есть ситуации когда необходимо сделать пакетно какую-нибудь операцию на которую потребуется много времени если делать это в программе (например: проставить страну производителя для товара в счете - так как менеджерам приходится для каждой позиции ставить ее ручками - даже в случае если в справочнике товара она присутствует). Так вот.. вопрос следующий: изменения при помощи odac делаются простой командой SQl: update tablename set column1= '111' where ... ? и все.. или необходими делать что то большее. Потому что в разных системах по разному. Где то транзакция, а где то и просто команды хватает......
 
30.03.2007 10:52  
Alexndr
Хотя... в счете то храниться только ссылка на товар, а товар и его свойства хранятся в других таблицах. Почему же тогда слетает страна-производитель то? Но вопрос по поводу odac остается актуальным.
 
30.03.2007 11:00  
Alexndr
Вообщем посмотрел повнимательнее. Заполнение страны необходимо в накладных, а не в счете, а там то есть эта табличка куда все и пишится (SMSpecIO).
 
30.03.2007 11:20  
OlegON
Ты не вали все в кучу и соблюдай тему. Насколько я помню в ODAC есть свойство Autocommit у TOraSession, вот если его нет, то надо делать
TOraSession.Commit;
commit надо делать по любому. Либо ты это сделаешь, либо автоматом, но он должен быть.
Что у тебя с накладными - не понятно. Сначала делай накладную, потом апдейть необходимые строки, в чем вопрос?
 
30.03.2007 11:33  
Alexndr
То что сначала делать накладную, а потом апдейтить надо - я понимаю. Вопрос был именно про сохранение изменений командой update. Просто думал мож там еще что надо выполнить. То есть тут можно работать, как например с InterBase ? А спрашиваю потому что проверить не на чем, только рабочая база.
 
30.03.2007 11:44  
OlegON
Озверел? Железной линейкой по пальцам.... С такими знаниями отойди от рабочей базы и не трогай! По сути - можно, как в Interbase, но мой тебе совет - сделай копию себе на машину и изгаляйся, как хочешь. А к рабочей ближайшие месяцы не подходи. Концов не найдешь...
 
31.03.2007 22:03  
mighty
Прежде чем что - то делать с БД надо все отработать на тестовой БД и обязательно иметь бекап боевой БД. Но вообще, если скрипт уже отработан, то через ODAC, ADO или DOA я всегда делаю так (отключаю автокоммиты у сессии или у компонента обрабатывающиего скрипт), а уже потом сам скрипт:

alter table Имя_ таблицы_которую_ апдейтишь disable all triggers;
твои апдейты UPDATE...
commit;
alter table Имя_ таблицы_которую_ апдейтишь enable all triggers;

Вообще довольно удобно в таблицу которую апдейтишь в какое - нить служебное поле заносить свой флаг изменения записи, чтобы даже при коммите знать какие записи ты проапдейтил - чисто страховка..
Перед этим конечно надо быть уверенным что это поле не использует супермаг в ствоей БД..
 
25.03.2008 08:28  
саша
create or replace procedure ...
is
begin
SAVEPOINT START_;
Update ...
COMMIT;
EXCEPTION
WHEN OTHERS
THEN ...
ROLLBACK TO START_;
end

А в Делфи использовать соответствующий компонент...
 
 
Опции темы



Часовой пояс GMT +3, время: 07:33.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.