powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запросы в Транзакции в Access
6 сообщений из 6, страница 1 из 1
Запросы в Транзакции в Access
    #34929837
Nimua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте,

у меня дурацкий вопрос, но не могу найти где это.

Мне нужно написать что то вроде ХП в Access, в помощи нашла Create Procedure но у меня не сработало. Создаю запрос, но там нет опции Сохраненная процедура (цитата из он-лайн хелпа)

Мне нужно примерно следующее

BEGIN TRANSACTION

UPDATE payment SET id_state = 209 WHERE id_state = 9;
UPDATE payment SET id_state = 210 WHERE id_state = 10;
UPDATE payment SET id_state = 211 WHERE id_state = 11;
UPDATE payment SET id_state = 212 WHERE id_state = 12;

CREATE TABLE update_state (OK INT );

COMMIT TRANSACTION

Где это можно написать? в запросах ругается на Begin transaction : (

Заранее спасибо.
...
Рейтинг: 0 / 0
Запросы в Транзакции в Access
    #34929856
im_vooov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в этой ветке есть про синтаксис
...
Рейтинг: 0 / 0
Запросы в Транзакции в Access
    #34929858
Фотография %?*?%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Запросы в Транзакции в Access
    #34929884
Nimua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо,

А BEGIN TRANSACTION Инструкция SQL, мне бы желательно им обойтись...
Или это в MS Access есть, но не используется? обязательно Basic?
...
Рейтинг: 0 / 0
Запросы в Транзакции в Access
    #34929948
%%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
%%
Гость
Этого (T-SQL) в Access нету.
...
Рейтинг: 0 / 0
Запросы в Транзакции в Access
    #34930314
Бабай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Numia
1)
Хранимые sql объекты в jet могут содержать не более одного sql-выражения.
хранимая процедура должна содержать единственное sql-выражение. Допускается его произвольная параметризация.

в вашем случае запрос может выглядеть так:
Код: plaintext
Update payment Set id_state = id_state +  200  WHERE id_state between  9  and  12 

параметризовать его можно по разному. Например так:

PARAMETERS p1 Long, p2 Long,p3 Long;
Код: plaintext
Update payment Set id_state = id_state + [p1] WHERE id_state between [p2] and [p3]
получится запрос с 3мя параметрами.
это можно оформить как обычный запрос на изменение. По умолчанию в свойствах запроса
свойство "использовать транзакцию" установлено в "Да". Это полностью ренит вашу задачу.

команды create Procedure, Begin Transaction, Commit ([Transaction]|[Work]) в Jet присутствуют.
Но в акцессе как правило ими не пользуются.
1я причина указана - их нельзя непосредственно поместить в "один пакет выполнения", воспринимаемый как одно sql-задание.
Вторая причина в том, что полный набор команд jet доступен только через адо,
(хотя часть из них доступна и из dao), а интерфейс акцесса по умолчанию использует dao для обеспечения выполнения запросов. начиная с 2002й версии есть опция в параметрах, которая управляет тем, доступно ли в интерфейсе акцесса полное множество команд jet итли только "dao-совместимое". в 2007й возможности dao существенно расширены, но это я не смотрел.

2 %%
есть-то оно есть, но съесть это разумным образом можно через адо только и там оно не есть жизненно необходимое.
см. jetsql.chm
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запросы в Транзакции в Access
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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