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

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.