powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с макросом
25 сообщений из 59, страница 1 из 3
Помогите с макросом
    #39317098
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть макрос запускающий запросы на удаление, обновление. Есть ли способ выполнить операции запросов в макросе не создавая запросов. Если можно визуально продемонстрируйте.
...
Рейтинг: 0 / 0
Помогите с макросом
    #39317143
Не знаю, как называется макрос, но в VBA аналог называется DoCmd.RunSQL. Он выполняет указанное SQL выражение.
И вообще - не теряйте время на макросы, осваивайте VBA.
...
Рейтинг: 0 / 0
Помогите с макросом
    #39317252
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolay_magagin,
Если выложите БД в формате *.mdb и напишите чего Вы хотите (типа:при нажатии кнопки в форме такой-то удалить из таблицы такой-то записи по критерию поле такое-то в таблице = полю такому-то на форме)
Многие на этом форуме используют ACCESS 2003 или максимум 2007,а они 2010 не читают. Имейте ввиду это на будущее
...
Рейтинг: 0 / 0
Помогите с макросом
    #39317334
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно сократить количество запросов за счет внесения их действий в макрос. Наверно, а может нет.
...
Рейтинг: 0 / 0
Помогите с макросом
    #39317345
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolay_magagin,
Вы не пояснили ЧТО должно произойти при нажатии кнопки
...
Рейтинг: 0 / 0
Помогите с макросом
    #39317346
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Макрос открывает запросы на удаление и обновление. Можно ли операции выполняемые запросами засунуть в макрос, а не прибегать к открытию запроса.
...
Рейтинг: 0 / 0
Помогите с макросом
    #39317365
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolay_magagin,
Я смутно подозреваю что все,чего Вы хотите,решается 2-3 строчками кода. В запросах я даже не пытался разобраться-просто ответьте ЧТО надо сделать (если Вас интересует только запуск макроса - DoCmd.RunMacro,если хотите все сделать без сохраненных запросов ответьте на мой вопрос)
...
Рейтинг: 0 / 0
Помогите с макросом
    #39317378
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolay_magagin,
чего вы прицепились к макросам? Во многих случаях макросы - это такие неудобные "контейнеры" для перечня команд. И ни разу не "волшебная палочка". В любом случае - захламляет список объектов базы. Вам надо "выполнить операции запросов в макросе не создавая запросов"? "Запросы на удаление, обновление", так? Правда, вы не уточнили: запрос на удаление таблицы, записи, значения или ещё чего.
Теперь смотрите, вам тут уже "откровенно намекали", как это сделать.
В простейшем случае, делаете на форме кнопочку, и на её событие нажать цепляете нужную вам процедуру.
Например.
' Удалить в текущей базе таблицу ТАгент:
DoCmd.DeleteObject acTable, "ТАгент"
или
' Очистить таблицу
CurrentProject.Connection.Execute "DELETE * FROM [Имя Таблицы]"
Всё, нажимаете кнопочку - получаете результат.

Если надо выполнить более сложный запрос, не создавая ни запроса, ни макроса, то делаете так:
Создаёте нужный вам запрос в конструкторе. Далее просматриваете его в "режиме SQL".
Например, у вас такое содержимое запроса на обновление:
UPDATE ТТовар SET ТТовар.Штрихкод = "0"
WHERE (((ТТовар.КодТовара)=[Forms]![FTovarEdit]![КодТовара]))
WITH OWNERACCESS OPTION;
Копируете весь этот код, и вставляете его в код события нажатия кнопочки. Но надо правильно его запустить. Потому в самом начале вставленного кода пишете DoCmd.RunSQL ". И так как код слишком длинный и нечитабельный, сразу разбиваем его правильно на строки, с переносом:
DoCmd.RunSQL "UPDATE ТТовар SET ТТовар.Штрихкод = "0" WHERE (((ТТовар.КодТовара)=[Forms]![FTovarEdit]![КодТовара])) " _
& "WITH OWNERACCESS OPTION;"
Обратите внимание: в конце первой "разбитой" строки ставятся кавычки и через пробел - знак символ нижнего подчёркивания.
Начало перенесённой строки начинается на амперсанд и кавычки. Закрывается строка просто символом кавычек. Тут нюанс при переносе не потеряйте пробелы внутри кода.
Как бы и всё.
...
Рейтинг: 0 / 0
Помогите с макросом
    #39317709
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я, в силу незнания языков программирования, работаю на Акцес через визуальное восприятие, т.е. через конструкторы, не связываясь с SQL и VBA. Ставлю для себя конечный набор данных, который хочу получить и посредством запросов, поэтапно получаю необходимое. Полученный набор данных, по связям, участвует с другим набором данных и т.д.
Проверив такое, получил торможение системы, из-за увеличивающего количества выполняемых операций. В итоге не придумал ничего лучше, чем добавить итоговую таблицу, в которую, через запрос на добавление с условием, вносятся итоговые данные из запроса. Соответственно появляются запросы на удаления, при изменении данных. Конечно появляется дублирование данных в двух таблицах и лучше вносить изменения в первоначальную таблицу, которая требует более серьезных знаний. Но для меня пока важнее понять дальнейшую связь набора данных и определение необходимых компонентов данных в привычном для меня (неправильном) виде. В любом случае появляются запросы с условием на добавление и удаление, выполняемые в определенной последовательности, и увеличивается список объектов базы данных.
Практически старт к выполнению операции осуществляется через кнопку формы. В условии кнопки можно создать через макрос или VBA (для меня честно темный лес, только начал, что-то видеть в SQL) для выполнения процедур. Но потенциально могут быть другие формы, не только повторяющие операции, но и добавляющие к ним другие. Поэтому производить запись данных операций в форме я думаю нецелесообразно.
Так как набор данных и процедур законченный, на поверхности лежало создание макроса, в котором записано открыть запросы на добавление, удаление и запускать из формы этот макрос. Увеличение списка объектов плюс 1.
Наличие макроса для меня необходимость, поэтому возможно ли, для уменьшения списка объектов, засунуть всю процедуру запросов на добавление, удаления в макрос.
Если я правильно понял из комментариев в отношении макросов, другой вариант это создание модулей и запуск их из формы.
...
Рейтинг: 0 / 0
Помогите с макросом
    #39317716
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolay_magaginЕсли я правильно понял из комментариев в отношении макросов, другой вариант это создание модулей и запуск их из формы.
Вы совершенно правильно поняли.
Изучайте VBA и вперед, вам правильно советуют.
С уважением.
...
Рейтинг: 0 / 0
Помогите с макросом
    #39318007
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolay_magagin,
Без обид, но из ваших слов можно сделать вывод о вашем подходе: как бы мне дотянуться до той вот ветки, не слазя со своей. То есть выставив флажок "я мало чего умею", вы хотите и вопрос решить, и остаться на своём текущем уровне знаний.
Опять же, не попробовав применить разные методы, вы много слов пишете в защиту своих пока только предположений (!) о том, что "Поэтому производить запись данных операций в форме я думаю нецелесообразно.".
Отсюда предложение:
Закругляйтесь с "теоретическим словоблудием", пробуйте новую для вас методику работы - и тогда уже с позиций хоть какого то практического опыта выносите свои суждения.
А если вы этого не можете/не хотите - то просто закрывайте топик. Трудно помогать тому, кто ничего не хочет менять и что то делать.
Удачи.
...
Рейтинг: 0 / 0
Помогите с макросом
    #39318109
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolay_magagin....посредством запросов, поэтапно получаю необходимое...ROI....Изучайте VBA и вперед, вам правильно советуют...
А теперь сравните VBA и "визуальное восприятие"
Может это натолкнет Вас на путь истинный-изучение VBA
...
Рейтинг: 0 / 0
Помогите с макросом
    #39318198
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я знаю что нужно изучать VBA, и пытаюсь. Перестроиться трудно. Поэтому отправляю как выглядит поэтапно через запросы.
...
Рейтинг: 0 / 0
Помогите с макросом
    #39318202
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tarasios
Попробовал копированием SQL запроса с условием на добавление в модуль. Кажется то, что мне надо на данном этапе изучения. Но мелочей не понимаю. Создалась функция, которую я мог задействовать. Что-то сделал ее видно но она не задействуется. Номер на копирование не проходит. Может есть какие-то естественные приколы. Если не трудно напишите. А так спасибо.
...
Рейтинг: 0 / 0
Помогите с макросом
    #39318205
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolay_magagin,
ну так давайте попробуем вместе разобраться.
Сформируйте правильное техзадание (кста, это поможет вам самому всё разложить по полочкам):
вот пример вашей базы.
Вот таблицы такие то.
Вот запрос, который надо "перевести" в VBA. Или хотя бы точное описание, что он должен делать: что откуда берёт и во что превращает. И что должно отображаться в такой то форме в таких то полях (если должно).
Чуть выше я видел вашу базу, но из неё непонятно, что и как. В общем - жду.
...
Рейтинг: 0 / 0
Помогите с макросом
    #39318210
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сегодня уже сил нет думать что писать. Завтра попытаюсь выложить.
...
Рейтинг: 0 / 0
Помогите с макросом
    #39318528
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То, что я выложил это лишь относительно завершенный кусок БД. Не буду нагромождать экран своим подходом к созданию структуры хранения и обработки данных. Просто дозрел до вопроса, задал и получил ответ.
А так, создал модуль в котором выполняются действия запросов на удаление и добавление. Количество списков объектов уменьшился с четырех на один. Но так и не разобрался, что надо дописать, чтобы модуль заработал при нажатии кнопки формы.
...
Рейтинг: 0 / 0
Помогите с макросом
    #39318792
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все прочитал поставил function. Спасибо.
...
Рейтинг: 0 / 0
Помогите с макросом
    #39318923
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolay_magagin, а зачем вообще тут нужен модуль? Вот всё содержимое вашего модуля повесьте на кнопку, а сам модуль удалите за ненадобностью. Таким образом, у вас вообще ни одного лишнего объекта не останется в базе.
...
Рейтинг: 0 / 0
Помогите с макросом
    #39318931
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наверное потому, что думаю по аналогии с макросом. Теоритически это законченный набор действий с данными. Но вызываться он может из нескольких разных форм, а возможно в различных сочетаниях с другими. Как в этом случае.
...
Рейтинг: 0 / 0
Помогите с макросом
    #39318937
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolay_magagin,
А это зависит от задачи. Если задача - убрать объекты по максимуму, то в каждой из форм просто дублируется код VBA. И уже по факту корректируется.
...
Рейтинг: 0 / 0
Помогите с макросом
    #39318951
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да наверное.
...
Рейтинг: 0 / 0
Помогите с макросом
    #39319249
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все таки решил попробовать применять модуль. Теоретически должно быть несколько таблиц, для которых выполняются одинаковые операции. Например:

таблица [1-AAK-2]
Function XXX1()
DoCmd.RunSQL "DELETE [1-AAK-2].*" _
& "FROM [1-AAK-2] LEFT JOIN [AAK-2] ON [1-AAK-2].[AAK-KS] = [AAK-2].[AAK-K]" _
& "WHERE (((IIf([AAK-SDS] Like [AAK-SDSS],2,1))=1));"
End Function

таблица [1-AAL-2]
Function XXX2()
DoCmd.RunSQL "DELETE [1-AAL-2].*" _
& "FROM [1-AAL-2] LEFT JOIN [AAL-2] ON [1-AAL-2].[AAL-KS] = [AAL-2].[AAL-K]" _
& "WHERE (((IIf([AAL-SDS] Like [AAL-SDSS],2,1))=1));"
End Function

Разница между двумя записями в буквенных обозначениях "AAK" и "AAL". Можно ли создать модуль при вызове которого вводились соответствующие буквы ХХХ(AAL), которые проставлялись в выражении и выполнялась операция в отношении выбранной таблицы.
...
Рейтинг: 0 / 0
Помогите с макросом
    #39319252
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikolay_magagin,
Имена таблиц можно использовать в качестве аргументов вашей функции,но здесь,скорей всего VBA "споткнется".
Вот выдержка из HELPa:

"При присвоении имен процедурам, константам, переменным, и аргументам в модуле Visual Basic используются следующие правила:
· Имена должны начинаться с буквы....."
...
Рейтинг: 0 / 0
Помогите с макросом
    #39319256
nikolay_magagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если чисто теоретически.
...
Рейтинг: 0 / 0
25 сообщений из 59, страница 1 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с макросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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