powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как лучше сделать откат списания накладной?
24 сообщений из 24, страница 1 из 1
Как лучше сделать откат списания накладной?
    #32383471
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
База на Access XP -> ODBC -> MSSQL 2K
Главное требование - чтобы эту процедуру можно было считать транзакцией. Т.е. если где-то в середине процесса произошел сбой, то полный Rollback...
Сложность в том, что вносятся изменения сразу в 4 таблицы.
Мои варианты:
1) Сделать SP на серваке //направление не совсем изведанное, но интересное
2) Все сделать в VBA на Recordset'ах. //изведано и неинтересно + откат заколебусь делать

Что скажет стая?
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32383480
1.
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32383493
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Хвоста зовут Виктор. :^)
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32383495
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32383502
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А дополнения, замечания и напутствия?!?!
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32383543
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А дополнения, замечания и напутствия?!?!

А что не ясно?
Создал ХП с нужными выходными параметрами, не забыл про Begin Tran/Commit Tran/Rollback tran
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
СCREATE PROCEDURE dbo.StoredProcedure1

	(
		@parameter1 int,
		@parameter2 money
	)

AS
	SET NOCOUNT ON 
BEGIN TRAN
	UPDATE...
	INSERT...
	UPDATE...
	INSERT...
	
	IF @@ERROR<> 0  
		BEGIN 
			ROLLBACK TRAN
			RAISERROR ('Остатки не обновлены из-за...', 16 , 1 )
		END
	ELSE
                          BEGIN
	             	COMMIT TRAN
		END
	
	RETURN 


Блок проверки вообще-то надо размножить после каждой операции по изменении данных - я для простоты сократил.

Вызвал ХП с помощью DAO/ADO.
Убедился в отсутствии ошибок - пошел пить пиво.
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32383545
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делай SP. в ней начиная транзакицю и откатывай, если что.
Что делать при откате и в скольких таблицах - уже сервер будет думать.
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32383562
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Viktor: да в се ясно. Теперь стало еще яснее, спасибо...
Может просто есть какие-нить подводные камни, рифы, отмели и т.д.
Короче говоря, лоцман может идти пить пиво?

2 Артем1: Угу. Пасиб.

2 Всем:
Т.е. ХП - самый оптимальный вариант решения?
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32383632
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А сам как думаешь - где надежнее делать Rollback: в Аксессе или в SQL'e?
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32383666
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
где надежнее делать Rollback: в Аксессе или в SQL'e?
Монопенисуально
Все равно Rollback будет делаться на MS SQL
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32383680
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
транзакции лучше делать на сервере ибо в случае зависания клиентского приложения все остальные юзеры могут начать курить ожидая снятия блокировки
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32383694
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спрашивалось "где надежнее"
А зависнуть и ХП может :))
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32383714
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох Позорный Все равно Rollback будет делаться на MS SQL
Не-а, он будет делаться на VBA
А дойдет ли до него - вот это вопрос...
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32383734
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох Позорный Спрашивалось "где надежнее"
А зависнуть и ХП может :))

Есть такой анекдот про динозавра и женскую логику.
В приложении к текущей теме это будет звучать примерно так:

- Что скорее зависнет - клиент или сервер?
- А монопенисуально!
- Почему?
- В обоих случаях вероятность 50% - или зависнет, или не зависнет
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32383756
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senin VictorБлок проверки вообще-то надо размножить после каждой операции по изменении данных - я для простоты сократил.
Я бы сделал так:
Код: plaintext
if @@error<> 0  goto MYLABEL

А уж там
Код: plaintext
1.
ROLLBACK TRAN
RAISERROR ('Остатки не обновлены из-за...', 16 , 1 )


Да и в Else при одной инструкции не нужны Begin / End (но это я уже так, придираюсь попусту)
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32383764
Odess
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, что поздно - но откат лучше давать деньгами - больше вероятность что клиент придет снова :-)
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32383769
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Odess:
Шутник. Мы и так в кредит даем.
Если еще и дженьги отдавать, то ...
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32383771
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лады, я решился. О ходе операции буду сообщать
Сяду на мель, подам SOS.
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32383817
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не-а, он будет делаться на VBA
А дойдет ли до него - вот это вопрос...
Не смешите мои тапки.
В VBA даже слова такого нет
И пусть не дойдет до Rollback в VBA (ну умер клиент совсем) - что с того? Commit что-ли случится? Или до второго пришествия блокировки будут висеть?
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32384050
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если конекшен оборвется то с транзакцией случится автоматом ролбак

по второму пришествию - новое соединение и соответственно - запущенная другим процессом транзакция будет не видна


гораздо хуже если есть "долгие" транзакции или приложение зависло во время начатой транзакции а конкшен не оборвался. будут отдыхать все пользователи в чьи запросы нужно отбирать записи из блокированных таблиц(если это особо не оговорено в хинтах что разрешается грязное считывание) пока не оборвется коннект или будет подтверждена или откачена транзакция....
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32385653
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох Позорный Не смешите мои тапки.
В VBA даже слова такого нет
Мои тапки тоже смешить не надо
Dim wsp As DAO.Workspace
wsp.BeginTrans
wsp.Rollback

К VBA это отношения не имеет, что ли?
(Хотя выразить Rollback можно и другими словами
что я и имел в виду)
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32389895
Фотография _ChaiNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 AlexJuice

>Мои тапки тоже смешить не надо
>Dim wsp As DAO.Workspace
>wsp.BeginTrans
>wsp.Rollback
>
>К VBA это отношения не имеет, что ли?
>(Хотя выразить Rollback можно и другими словами
>что я и имел в виду)

Я, конечно, дико извиняюсь, но сии манипуляции относяться к ядру Jet и могут быть исполнены из любой среды поддерживающей COM.
(дружный смех тапок)
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32389905
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять чего-то накурились... Прям-таки беда... Тапки смеются...
...
Рейтинг: 0 / 0
Как лучше сделать откат списания накладной?
    #32390046
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я, конечно, дико извиняюсь, но сии манипуляции относяться к ядру Jet
Я дико извиняюсь перед чайником и смеющимися тапками, но сии манипуляции относятся не к Jet, а к DAO, и мало того, что могут быть исполнены из любого языка, так еще и применительно к любым базам (не только к аксесу или MS SQL).
тапки уже катаются по полу от смеха
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как лучше сделать откат списания накладной?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]