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

Что скажет стая?
...
Рейтинг: 0 / 0
21.01.2004, 16:26
    #32383480
Как лучше сделать откат списания накладной?
1.
...
Рейтинг: 0 / 0
21.01.2004, 16:29
    #32383493
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше сделать откат списания накладной?
Хвоста зовут Виктор. :^)
...
Рейтинг: 0 / 0
21.01.2004, 16:30
    #32383495
Как лучше сделать откат списания накладной?
...
Рейтинг: 0 / 0
21.01.2004, 16:33
    #32383502
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше сделать откат списания накладной?
А дополнения, замечания и напутствия?!?!
...
Рейтинг: 0 / 0
21.01.2004, 16:50
    #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
21.01.2004, 16:51
    #32383545
Артем1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше сделать откат списания накладной?
Делай SP. в ней начиная транзакицю и откатывай, если что.
Что делать при откате и в скольких таблицах - уже сервер будет думать.
...
Рейтинг: 0 / 0
21.01.2004, 17:06
    #32383562
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше сделать откат списания накладной?
2 Viktor: да в се ясно. Теперь стало еще яснее, спасибо...
Может просто есть какие-нить подводные камни, рифы, отмели и т.д.
Короче говоря, лоцман может идти пить пиво?

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

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

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

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

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


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

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


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

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

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

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


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