|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.RunSQL или CurrentDb.Execute? 1. Вопросы. 1.1. Как отключить подтверждения? 1.2. CurrentDb.Execute выдаёт ошибку, что делать? 1.3. Как правильно использовать DoCmd.RunSQL? 1.4. Почему нельзя использовать конструкцию Application.SetOption? 2. Ответы. Ответы перечислены в порядке применимости. 2.1. Подтверждения отключаються следующими способами: Перейти на использование конструкции CurrentDb.Execute. Использовать вместе с DoCmd.RunSQL, DoCmd.SetWarnings False Изменить глобальные настройки с помощью кострукций Код: plaintext 1. 2.
2.2 Устранение ошибок в CurrentDb.Execute. Ошибка как правило со следуещим текстом "Too few parameters. Expected Число" ("Слишком мало парметров. Ожидалось Число"). Эта ошибка возникает, если команда или один из нижележащих запросов содержит обращения к формам или собственные парметры, - все эти обращения будут восприняты как параметры, которым не передано значение. Почему так происходит? - Вот вольный перевод из MSDN ( ms-help://MS.MSDNQTR.2003APR.1033/enu_kbacc2000kb/acc2000kb/209203.htm ): MSDN писал: NOTE : В DAO Вы должны явно начить параметр; При использовании DoCmd.OpenQuery Вы этого делать не должны, т.к. DAO использует операции низкого уровня, что даёт Вам большую гибкость в использовании параметров (т.е. Вы можете сами назначить пременную в параметр, а не использовать ссылку на форму), но Вы должны выполнить служебные действия, которые Access делает негласно с действиями DoCmd. С другой стороны, DoCmd работает на более высоком уровне чем DAO. Выполняя DoCmd, Microsoft Access делает некоторые предположения о том, что сделать с параметрами - Вы не имеете никакой гибкости по использованию различных значений параметра. Если все параметры являються сслыками на контролы форм (Forms![ИмяФормы]![ИмяКонтрола]), тогда самое простое (и красивое) решение: Код: plaintext 1. 2. 3. 4. 5. 6.
Если вместо обращений к формам Вы используете собственные парметры (например [Введите первый параметр:]), тогда вам нужно задать параметры вручную: Код: plaintext 1. 2. 3. 4. 5.
Узнать какие параметры от вас хочет Access можно с помощью следующего кода: Код: plaintext 1. 2. 3. 4. 5.
2.3. Использование DoCmd.RunSQL. Иногда советуют поставить DoCmd.SetWarnings False перед DoCmd.RunSQL, но это крайне опасно. Это требует добавить DoCmd.SetWarnings True где только можно, особенно в обработчиках ошибок. В противном случае Аксесс в какой-нибудь момент вообще перестанет выдавать сообщения об ошибках до конца работы программы. Также есть возможность, что в отладочный период Вы можете остановить выполнение кода ДО включения сообщений, что тоже повлечёт за собой выше описанный результат. Но если Вы решили использовать данную конструкцию, то используйте её следующим образом. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
2.4. Противопоказания использования конструкции Application.SetOption Подтверждения исчезнут во всей аппликации насквозь, в том числе там, где это не планировалось. Это можно делать только в том случае, если соблюдены два условия: Пользователь лишен права на удаление тех объектов, которые нужны для нормальной работы программы, и данных через экран. Подтверждения не отключаются, если в аппликации работает сам разработчик. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2003, 17:08 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Не вытерпела душа поэта, кинул раньше Как говориться - пожалуйте, терзайте... да ещё меня смущает название FAQ'a и строчка в п.2.2. (первый блок кода) Код: plaintext
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2003, 17:12 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Да ещё очень хотелось бы услышать мнение, и несколько строчек в ФАК от ЛП и SV ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2003, 17:15 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Насчет Eval была моя реплика в том топике, откуда ты копировал. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2003, 17:49 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Маленькая просьба - я бы хотел, чтобы этот фак не публиковался до моего возвращения из армии 3 числа. (На правах просьбы, исполнять не обязательно.) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2003, 18:02 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
маленькая ремарка на >NB! При использовании DoCmd.RunSQL следует учесть, что транзакция не >производиться. читаем хелп и видим DoCmd.RunSQL инструкцияSQL[, использоватьТранзакцию] причем по умолчанию второй параметр True. так что мелочь, но приятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2003, 18:27 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Драсте... 1) Сдается мне, что на вопрос надо смотреть несколько шире, например так: "FAQ: Запуск SQL-запросов из VBA-кода"; 2) Возможно стоит упомянуть, что выполнять запрос будет непосредственно Jet, и что DoCmd.RunSQL (Access), DB.Execute (DAO), Connection.Execute (ADO) являются не более чем интерфейсами к Jet. Это, конечно, элементарно, но где-то натыкался на мнение, что запросы запущенные из ADO выполняются быстрее чем запросы, запущенные из DAO, что полная ерунда! Время, занимаемое в библиотеках при предварительной обработке команды, конечно, разное, но запрос в итоге будет передан ядру Jet, которое и его выполнит; 3) Ну и коль скоро я коснулся скорости выполнения, то думаю, что стоит упомянуть и об асинхронном выполнении запроса. Что это такое, в чем плюсы и минусы, какие проблемы могут возникнуть и как их избежать... Но все это, конечно, ИМХО... //в смысле, сорри, если чё не так... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2003, 20:51 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Нуф, рад тебя видеть. Согласен со всем сказанным на все сто. А про п.3 - может, ты сам и расскажешь? :^) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2003, 21:02 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Саныч, тоже рад! :) Правда, получается вас (всех) только "читать", да и то с перерывами :( На счет третьего пункта я могу попробовать что-нить родить, но тока в течении следующей недельки... Не быстро, тобишь... Удачи! //уехал к лубимой дэвушке, которая, зараза :), жмет ее рабочий ноутбук - толи из-за того, что я за ним перестаю замечать, собстна, дэвушку, толи из-за "топ сикрет информэйшен" на нем Не... Попробую, сётаки, выкляньчить доступ к "железу" на выходные :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2003, 21:27 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Нуф, не торопись. Во-первых, девушка важнее. И во-вторых тоже. А в-третьих, я все равно только 3 числа из армии вернусь. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2003, 21:59 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
У меня тож просьба - не публиковать до моего окончательного выхода из отпуска (ближайший понедельник) По поводу первого замечания Нуф-Нуфа (привет кстати!) "Как избавиться от подтверждений..." все-таки более фрикуентли аскед, чем "Как запускать запросы...". Так что в названии оставить надо. Можно совместить - "Как избавиться от подтверждений ... трататушки-тратату... (как запускать запросы из VBA)" 2 Мох (который Sfagnum) QueryDef.Execute dbFailOnError Прочитай в хелпе в расскажи другим ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2003, 23:03 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
NB! При использовании DoCmd.RunSQL следует учесть, что транзакция не производиться. Не есть правильно Используется ли транзакция - устанавливается в св-вах запроса. И даже если используется - она своя собственная, никак не зависящая от внешней (сделанной через BeginTrans/Commit). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2003, 23:12 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Убрать Код: plaintext
тогда не нужно будет Пользователь лишен права на удаление тех объектов, которые нужны для нормальной работы программы, и данных через экран. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2003, 23:14 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
В противном случае Аксесс в какой-нибудь момент вообще перестанет выдавать сообщения об ошибках до конца работы программы Не сообщения об ошибках, а перестанет выдавать подтверждения на удаление и т.п. Все Ушел пить вотку ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2003, 23:16 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Лох, с приехалом. "Данных через экран" - все равно придется оставить. ...А теперь я сочувствую тому человеку, который будет все эти комментарии собирать по крохам и вносить все эти заплатки. Видимо, этим человеком буду я (как бывший корректор). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2003, 23:20 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Нет, именно сообщения об ошибках. Это же речь об SetWarnings. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2003, 23:21 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Мне что ли попросить не публиковать данный фак пока из отпуска не вернусь Правда я там еще не был, но скоро Скоро СКоро СКОро СКОРо СКОРО ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2003, 23:44 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Вернулся с выходных...\r \r Народ никто и не собирался публиковать FAQ без вашего одобрения, я же в выступаю в качества канала доводящего ИСТИНУ до простых смертных :)\r \r Насчёт транзакции, наверное не правильно понял фразу ЛП эдесь Дата: 18 июн 03, 15:24\r \r Всё остальное посмотрю откоментирую-оформлю пойзже ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2003, 09:16 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Владимир Саныч писал:Насчет Eval была моя реплика в том топике, откуда ты копировал. Нашёл буду исправить... Лох Позорный писал:2 Мох (который Sfagnum) QueryDef.Execute dbFailOnError Прочитай в хелпе в расскажи другим Прочитал, но пока ещё не придумал куда впихнуть и к чему сделать смысловую привязку... Лох Позорный писал:Убрать Код: plaintext
Пользователь лишен права на удаление тех объектов, которые нужны для нормальной работы программы, и данных через экран. А если человек хочет избавиться от подтверждения на удаление таблицы/запроса Оставляю... Лох Позорный писал:В противном случае Аксесс в какой-нибудь момент вообще перестанет выдавать сообщения об ошибках до конца работы программы Не сообщения об ошибках, а перестанет выдавать подтверждения на удаление и т.п. Согласен - SetWarnings - это всё таки, что то типа "установить предупреждения" Поменяю... То All Я прочёл всё очень внимательно... но ещё не сформировал своё видиние проблемы... Предлагаю добавить п.3. Дополнительная информация и туда всё, что вы хотите добавить... Одна просьба выкладывать более оформленные мысли и не много о том в каком разделе вы хотели бы их видеть.. ЗЫ Строку: NB! При использовании DoCmd.RunSQL следует учесть, что транзакция не производиться. Уберу ввиду её не корректности. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2003, 10:24 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Чо то все забыли про эту тему... Нуф-Нуф обещал что то родить в течении недели, видно всё акушерку ищет... "Хорошо переносящего обрезку" прсил высказаться насчёт почему лучше юзать CurrentDb.Execute, а не DoCmd.RunSQL более подробно... и SV тоже не откликнулся... Саныч обещался посодействовать... Моя в печали... иех... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2003, 16:21 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
прсил высказаться насчёт почему лучше юзать CurrentDb.Execute Вай мая твая не панимай Как почему лучше? Патамушта! Хотя бы патамушта от подтверждений не надо избавляться. А потом их обратно включать. И хотя бы патамушта можно заключить во внешнюю транзакцию. И хотя бы патамушта ну не люблю я объект DoCmd ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2003, 17:11 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
про внешнию транзакцию по подробнее ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2003, 17:23 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
Вижу-вижу упоминание меня. :^) Я совсем зашитый на работе. Может, в выходные что-нибудь смогу... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2003, 17:30 |
|
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
|
|||
---|---|---|---|
#18+
про внешнию транзакцию по подробнее Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Если при выполнении любого запроса (1, 2 или 3) возникнет ошибка (нарушение уникальности, ссылочной целостности, да вообще любая ошибка) - откатятся все запросы. Если же исполняем запросы через DoCmd.RunSQL - нсмотря на вызов метода Rollback результаты выполнения запросов не откатываются. Т.е. возможно, что будет исполнен Запрос1, Запрос2, а Запрос3 не будет исполнен. Кстати, это надо бы проверить на всякий случай. У запроса есть св-во "Использовать транзакцию", но оно отвечает только за то, будет ли запрос выполнен целиком (или целиком откачен), или же возможно частичное выполнение запроса. К внешней транзакции транзакция запроса не имеет никакого отношения, они принимаются или откатываются независимо друг от друга. Тьфу, как то оно все сложно получилось. Косноязычием начинаю страдать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2003, 17:55 |
|
|
start [/forum/topic.php?fid=45&tid=1668945]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 166ms |
0 / 0 |