|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Victosha авторCurrentDb.Execute в отличие от DoCmd.RunSQL - участвует во внешней транзакции. Саныч, - как бы просто не вполне корректное некорректное высказывание. Дешевле удалить... Зачем удалить? Вот новая версия: CurrentDb.Execute в отличие от DoCmd.RunSQL может быть включен во внешнюю транзакцию. Victosha авторЕсли вместо CurrentDb.Execute использовать DoCmd.RunSQL, то не выполнятся только запросы с ошибками Саныч, они "не выполнятся" если Предупреждения НЕ отключены, И пользователь отказался от завершения выполнения запроса (при этом не важно - произошли ошибки ли нет). Новая версия: Если вместо CurrentDb.Execute использовать DoCmd.RunSQL, то при возникновении ошибок удастся откатить только запросы с ошибками, тогда как CurrentDb.Execute в таких случаях позволяет откатить всю транзакцию, в которую включено то, что посчитает нужным программист. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2005, 01:42 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Alexander GОпечатки: 1. сслыками -2 раза 2.Если вместо обращений к формам Вы используете собственные парметры , тогда Вам нужно задать параметры вручную: Пункт 2.5 - использованы оба термина - аппликация и приложение, стилистически лучше бы один. Мелочь, конечно, прошу извинить за занудность :) ОК, исправляю сразу в тексте. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2005, 01:42 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Аппликацию и приложение решил не править. Меня учили, что повторения одинаковых слов можно избегать путем замены на синонимы. А "парметров" оказалось аж 5 штук. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2005, 01:45 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
авторНовая версия: Если вместо CurrentDb.Execute использовать DoCmd.RunSQL, то при возникновении ошибок удастся откатить только запросы с ошибками... ну, это просто обман. Либо удастся откатить, вне зависимости от возникновения ошибок. Либо не удастся откатить, даже если ошибки произошли. А так как написано - это не оно... ЗЫ авторАппликацию и приложение решил не править. умеешь же ты сказать двумя словами то, на что другому два тома не хватит. Нет вижу границ собственному восхищению. Пошел захлебываться в дыму и пиве... (с выражением лица) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2005, 02:50 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Владимир СанычАппликацию и приложение решил не править. Меня учили, что повторения одинаковых слов можно избегать путем замены на синонимы. Честно говоря, мне резанул глаз термин аппликация, но подумал о себе - значит, аппликация тебе не нравится, а контрол устраивает? - тогда помалкивай :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2005, 03:13 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
2 Саныч По поводу DoCmd.RunSql SqlStatement, [UseTransaction] Сей параметр не определяет атомарность выполнения запроса (т.е. или изменить/добавить/удалить все нужные записи, или не изменить ничего). Как уже было сказано, аксес при ручном* запуске запроса изменит все что можно, а что нельзя - на то отругается. И способ отключить сиё паскудное поведение не известен науке. -------- * ручной запус - запуск запроса непостредственно из окна базы данных либо программно с использованием DoCmd.RunSql Однако этот параметр влияет на изолированность результатов выполнения запроса (до его полного завершения) от других сессий. Если запрос изменяет большое количество данных, то в случае DoCmd.RunSql "трампампамп", False из другой сессии мы будем наблюдать "постепенное" изменение данных, а в случае DoCmd.RunSql "трампампамп", True - все изменения "появятся" сразу. Для простоты можно считать, что использование UseTransaction := True работает эквивалентно следующему куску кода: Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2005, 12:12 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
2 Цветик 4) Возможно, поведение по умолчанию для DoCmd.RunSQL может быть изменено. Намеком на это является наличие параметра соединения Jet OLEDB:Global Bulk Transactions Однако, как им воспользоваться непосредственно при открытии mdb проекта - я не знаю Global Bulk Transaction - это немного не то. Если мы хотим выпонять запрос через DAO.QueryDef или ADODB.Command, и при этом желаем иметь такую же "неизолированность", как в случае DoCmd.RunSql [UseTransaction] := False, то надо установить какие-то проперти для QueryDef или Command (какие точно проперти - не помню) Для ADODB можно также установить пропертю "Jet OLEDB:Global Bulk Transaction" для конекшена - тогда оно будет автоматом использоваться для всех Command'ов ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2005, 12:28 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
ЛП2 Цветик 4) Возможно, поведение по умолчанию для DoCmd.RunSQL может быть изменено. Намеком на это является наличие параметра соединения Jet OLEDB:Global Bulk Transactions Однако, как им воспользоваться непосредственно при открытии mdb проекта - я не знаю Global Bulk Transaction - это немного не то. про не то - согласен. тем должно бы быть Jet OLEDB:Partial Bulk Ops несмотря на вот это описание автор Jet OLEDB:Partial Bulk Ops A Long value (read/write) that determines the behavior of the Jet database engine when SQL DML bulk operations fail. When set to allow partial completion of bulk operations, inconsistent changes can occur, because operations on some records could succeed and others could fail. When set to allow no partial completion of bulk operations, all changes are rolled back if a single error occurs. The Jet OLEDB:Global Partial Bulk Ops property setting can be overridden for the current Recordset object by setting the Jet OLEDB:Partial Bulk Ops property. The Jet OLEDB:Global Partial Bulk Ops and Jet OLEDB:Partial Bulk Ops properties can be set to any of the following values: Default 0 Partial 1 No Partial 2 я не увидел, что no partial работает. хотя, наверно, плохо смотрел. поэтому подумал, а может оно в паре с Global Bulk Transaction должно работать? Хотя, скорее всего, слепенький - вот и не увидел... ЛП Если мы хотим выпонять запрос через DAO.QueryDef или ADODB.Command, и при этом желаем иметь такую же "неизолированность", как в случае DoCmd.RunSql [UseTransaction] := False, то надо установить какие-то проперти для QueryDef или Command (какие точно проперти - не помню) Для ADODB можно также установить пропертю "Jet OLEDB:Global Bulk Transaction" для конекшена - тогда оно будет автоматом использоваться для всех Command'ов для комманда это должно быть Jet OLEDB:Bulk Transactions для кверидефа UseTransaction (Тёмный выше), но ее надо добавлять к свойствам. и неясно - будет ли работать с несохраненными запросами... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2005, 13:09 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Цветикнеясно - будет ли работать с несохраненными запросами... Наверное будет (DoCmd ведь работает) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2005, 13:21 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Victosha авторЕсли вместо CurrentDb.Execute использовать DoCmd.RunSQL, то при возникновении ошибок удастся откатить только запросы с ошибками... ну, это просто обман. Либо удастся откатить, вне зависимости от возникновения ошибок. Либо не удастся откатить, даже если ошибки произошли. А так как написано - это не оно... Понял. Тогда так: Нередко возникает необходимость при возникновении ошибок отменить результат исполнения целого ряда запросов. DoCmd.RunSQL такой возможности не дает. CurrentDb.Execute, в отличие от него, позволяет откатить транзакцию, в которую включено то, что посчитает нужным программист. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2005, 20:20 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
ЛПОднако этот параметр влияет на изолированность результатов выполнения запроса (до его полного завершения) от других сессий. Если запрос изменяет большое количество данных, то в случае DoCmd.RunSql "трампампамп", False из другой сессии мы будем наблюдать "постепенное" изменение данных, а в случае DoCmd.RunSql "трампампамп", True - все изменения "появятся" сразу. Понял, спасибо. Я все равно сомневаюсь, имеет ли отношение этот параметр к теме этого фака. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2005, 20:21 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Саныч, оставляй в этом факе. С подрробным жевом ЛП идр. з.ы. Блин, без инета на работе все самое интересное пропустил з.з.ы. Саныч - спамер. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2005, 22:07 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
ТемныйСаныч, оставляй в этом факе. С подрробным жевом ЛП идр. OK. Темныйз.з.ы. Саныч - спамер. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2005, 22:20 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
ТемныйСаныч, оставляй в этом факе. С подрробным жевом ЛП идр. Не, Баба Яга против. Не место всяким там транзакциям и прочим глобал бульк инсёртам - в факе "как избавиться от подтверждений на удаление". Это разве что на отдельный фак тянет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2005, 00:57 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Не... Тады это перекрестные факи. Поскольку именно в этом зтрагиается и RunSQL и Execute c их опциями. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2005, 00:59 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
ТемныйНе... Тады это перекрестные факи. Поскольку именно в этом зтрагиается и RunSQL и Execute c их опциями. мэй би. никто не запрещает факам быть перекрестными. тема с транзакциями, воркспейсами, коннекшенами и т.п. - достаточно большая тут и скрытый аксесовский воркспейс, и отличия DAO-шных и ADO-шных Execute'ов, и отличия аксесовских транзакций от общепринятых, и т.д., и т.п. тока (имхо) не настолько это часто задаваемые вопросы :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2005, 01:05 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Лох Позорныйтока (имхо) не настолько это часто задаваемые вопросы :) О! Я долго искал, за что ухватиться. Вот за это и ухвачусь. Не буду в этом факе про Use Transaction. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2005, 01:18 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Хорошо, давайте новый долгострой. AdvancedFAQ :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2005, 01:37 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Саныч, может я его выложу? А ты потом подправишь, как время появится? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2005, 12:23 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Лох ПозорныйСаныч, может я его выложу? А ты потом подправишь, как время появится? Я очень надеюсь, что смогу все сделать в ближайшие выходные. "Вы ждали 3000 лет, подождите еще полчаса". (Надпись в аэропорту им.Д.Бен-Гуриона в зале для прибывших репатриантов.) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2005, 14:24 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2005, 14:01 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
2 Саныч - как всегда, ОЧ.КАРАШО!! одно замечание только сходу - 1) приведенный код - рабочий, автор Узнать, какие параметры от Вас хочет Аксесс, можно с помощью следующего кода: Dim cmd As ADODB.Command Dim cnn As ADODB.Connection Dim p As ADODB.Parameter Set cnn = CurrentProject.Connection Set cmd = New ADODB.Command With cmd .ActiveConnection = cnn .CommandText = "ИмяПроцедуры" .CommandType = adCmdStoredProc For Each p In .Parameters Debug.Print p.Name Next Set cmd = Nothing cnn.Close: Set cnn = Nothing но "лучше" бы его переписать так With cmd .CommandText = "ИмяПроцедуры" .CommandType = adCmdStoredProc .ActiveConnection = cnn .Parameters.Refresh For Each p In .Parameters ... первоначальный вариант полагается на встроенный рефреш, возникающий после задания имени процедуры на уже сформированном соединении. второй вариант вызывает рефреш явно, поскольку встроенного не происходит - соединение задается после формирования текста и типа команды ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2005, 14:40 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
да, и каких нибудь слов про .ActiveConnection = cnn и Set .ActiveConnection = cnn (с выражением лица) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2005, 14:42 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2005, 14:51 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
2ы спасибо. а мораль-то какова? работает в 2000аксе код авторWith cmd .ActiveConnection = cnn .CommandText = "ИмяПроцедуры" .CommandType = adCmdStoredProc For Each p In .Parameters Debug.Print p.Name Next ? (с выражением лица) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2005, 15:01 |
|
|
start [/forum/topic.php?fid=45&msg=32871234&tid=1668945]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 166ms |
0 / 0 |