Форум: "Базы";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
ВнизЗависание программы при редактировании таблицы базы Найти похожие ветки
← →
r9000 (2004-06-10 11:58) [0]Добрый день!
Можно спросить? Использую транзакции когда одна копия программы, редактирует данные таблицы скажем выбранные по одному полю и другая копия программы пытается отобразить эти данные то эта копия программы виснет. Из-за чего это возникает? Что делать, чтобы это устранить?
← →
asp © (2004-06-10 12:04) [1]Не стартовать транзакцию при редактировании записи. Сбрасывай данные на сервер после.
← →
sniknik © (2004-06-10 12:18) [2]изза транзакции естественно и изза того что используется "подтвержденное чтение".
устранять это лучше не надо(хотя и можно), логику программы лучше поменяй.
← →
r9000 (2004-06-10 12:18) [3]А как же тогда сохранять изменения в редактируемой таблице используя транзакции?
← →
sniknik © (2004-06-10 12:27) [4]по логике клиент должен - считать данные, отключится, долго долго их обрабатывать/редактировать, подключится и быстро быстро записать изменения вот это уже можно в транзакции, да и то если данные связаны и должны быть положены одним куском или не положены вообще а частичные приведут с сбою.
я бы к примеру предпочел чтобы у меня хоть часть накладной сохранилась (допустим 3 часа набивал) при сбое чем вообще ничего, только изза того что комуто захотелось поиграть в транзакции ничего в них не понимая.
← →
r9000 (2004-06-10 13:09) [5]А как <долго долго их обрабатывать/редактировать> данные не сбрасывая изменения в таблицу без использования транзакций или копонента TUpdateSQL(неужели для этого надо создавать локальные таблицы сбрасывать в них данные, редактировать, а потом обратно)? Мне необходимо положить данные одним куском, либо отменить изменения компонент TUpdateSQL использовать не хочется.
← →
Курдль © (2004-06-10 13:14) [6]
> Что делать, чтобы это устранить?
Выбрать другую СУБД :)
← →
asp © (2004-06-10 13:28) [7]r9000 (10.06.04 13:09) [5]>
> компонент TUpdateSQL использовать не хочется
Причины?
← →
Курдль © (2004-06-10 13:29) [8]Если не подойдет - почитайте мои прошлые посты про транзакции.
Используйте лучше это слово в досужих разговорах для повышения собственной значимости. В программах воздерживайтесь, пока не припечет!
Если Вы умеете использовать TUpdateSQL, то сам Бог велел включить CashedUpdates, а запись в базу утверждайть методом
DataBase.ApplyUpdates([DataSet]).
Он сам откроет транзакцию на короткий момент записи изменений в БД, утвердит ее в случае успеха или откатит в случае ошибки.
← →
bushmen © (2004-06-10 13:45) [9]> Курдль © (10.06.04 13:29) [8]
Тут речь идет совсем о другом. У него не проблема с сохранением цепочек данных.
← →
Курдль © (2004-06-10 14:19) [10]Ok!
DataBase.ApplyUpdates([DataSet1, DataSet2, DataSet3]);
или
try DataBase.BeginTransaction;
Ouery1.ExecSQL; //с запросом на INSERT, UPDATE или DELETE
Ouery2.ExecSQL; //с запросом на INSERT, UPDATE или DELETE
Ouery3.ExecSQL; //с запросом на INSERT, UPDATE или DELETE
DataBase.CommitTransaction;
except
DataBase.RollbackTransaction;
end;
← →
bushmen © (2004-06-10 14:41) [11]>DataBase.ApplyUpdates([DataSet1, DataSet2, DataSet3]);
Да нету там DataSet2, DataSet3. Читай вопрос. У него имеется один DataSet.
← →
Курдль © (2004-06-10 14:49) [12]Тогда я в растерянности, как сделать для MS SQL программу, где можно открыть транзакцию с утра, весь день, ковыряясь в носу, править данные в режиме прямых изменений, закрыть транзакцию вечером и при этом чтобы другие пользователи не висли.
← →
r9000 (2004-06-10 14:52) [13]И я тоже в растерянности
← →
Курдль © (2004-06-10 14:54) [14]Так чем не нравятся кэшированные изменения? (Уверяю, что это ничуть не хуже временных таблиц).
← →
r9000 (2004-06-14 07:19) [15]Почему не совсем хочется использовать компонент TUpdateSQL?Потому что если он настроен для работы через ODBC-драйвера в BDE, а не через драйвера SQL Servera в BDE, то если в таблицу с
компонентом TUpdateSQL при редактировании вставляются не все в строку редактирования данные потом сохраняются, и при попытке довставить в эту строку данные и сохранить не хотят сохранятся данные,при использовании драйверов SQL Servera в BDE этого не происходит, т.е. все нормально(это проверено на практике).Полбзователи частенько не вписывают все данные. А так как не я выбираю, какие драйвера использовать, то поэтому не очень хочется использовать компонент TUpdateSQL.
← →
sniknik © (2004-06-14 09:41) [16]UpdateSQL это всего лиш механизм для облегчения изменений кешированных данных, не нравится этот используй другой. можеш сам придумать.
Курдль © (10.06.04 14:49) [12]
> Тогда я в растерянности, как сделать для MS SQL программу, где можно открыть транзакцию с утра, весь день, ковыряясь в носу,
> править данные в режиме прямых изменений, закрыть транзакцию вечером и при этом чтобы другие пользователи не висли.
надеюсь ты этого делать не будеш, или хотябы чтобы мне с твоими творениями сталкиватся не придется. ;о)
а сделать можно, ставить уровень изоляции транзакции "грязное чтение" или обращатся запросами с with(nolock) на случай если попадеш на открытую транзакцию.
но это мало того что неправильно но добавит тебе еще много проблем решив всего одну сомнительную. тем более тут мне кажется транзакция не нужна вовсе (датасет один(??) какие связки тогда боимся потерять?).
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.031 c