|
Помогите с макросом
|
|||
---|---|---|---|
#18+
Есть макрос запускающий запросы на удаление, обновление. Есть ли способ выполнить операции запросов в макросе не создавая запросов. Если можно визуально продемонстрируйте. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2016, 16:11 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
Не знаю, как называется макрос, но в VBA аналог называется DoCmd.RunSQL. Он выполняет указанное SQL выражение. И вообще - не теряйте время на макросы, осваивайте VBA. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2016, 16:43 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
nikolay_magagin, Если выложите БД в формате *.mdb и напишите чего Вы хотите (типа:при нажатии кнопки в форме такой-то удалить из таблицы такой-то записи по критерию поле такое-то в таблице = полю такому-то на форме) Многие на этом форуме используют ACCESS 2003 или максимум 2007,а они 2010 не читают. Имейте ввиду это на будущее ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2016, 18:47 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
Нужно сократить количество запросов за счет внесения их действий в макрос. Наверно, а может нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2016, 21:14 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
nikolay_magagin, Вы не пояснили ЧТО должно произойти при нажатии кнопки ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2016, 21:47 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
Макрос открывает запросы на удаление и обновление. Можно ли операции выполняемые запросами засунуть в макрос, а не прибегать к открытию запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2016, 21:55 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
nikolay_magagin, Я смутно подозреваю что все,чего Вы хотите,решается 2-3 строчками кода. В запросах я даже не пытался разобраться-просто ответьте ЧТО надо сделать (если Вас интересует только запуск макроса - DoCmd.RunMacro,если хотите все сделать без сохраненных запросов ответьте на мой вопрос) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2016, 23:50 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
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;" Обратите внимание: в конце первой "разбитой" строки ставятся кавычки и через пробел - знак символ нижнего подчёркивания. Начало перенесённой строки начинается на амперсанд и кавычки. Закрывается строка просто символом кавычек. Тут нюанс при переносе не потеряйте пробелы внутри кода. Как бы и всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 00:14 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
Я, в силу незнания языков программирования, работаю на Акцес через визуальное восприятие, т.е. через конструкторы, не связываясь с SQL и VBA. Ставлю для себя конечный набор данных, который хочу получить и посредством запросов, поэтапно получаю необходимое. Полученный набор данных, по связям, участвует с другим набором данных и т.д. Проверив такое, получил торможение системы, из-за увеличивающего количества выполняемых операций. В итоге не придумал ничего лучше, чем добавить итоговую таблицу, в которую, через запрос на добавление с условием, вносятся итоговые данные из запроса. Соответственно появляются запросы на удаления, при изменении данных. Конечно появляется дублирование данных в двух таблицах и лучше вносить изменения в первоначальную таблицу, которая требует более серьезных знаний. Но для меня пока важнее понять дальнейшую связь набора данных и определение необходимых компонентов данных в привычном для меня (неправильном) виде. В любом случае появляются запросы с условием на добавление и удаление, выполняемые в определенной последовательности, и увеличивается список объектов базы данных. Практически старт к выполнению операции осуществляется через кнопку формы. В условии кнопки можно создать через макрос или VBA (для меня честно темный лес, только начал, что-то видеть в SQL) для выполнения процедур. Но потенциально могут быть другие формы, не только повторяющие операции, но и добавляющие к ним другие. Поэтому производить запись данных операций в форме я думаю нецелесообразно. Так как набор данных и процедур законченный, на поверхности лежало создание макроса, в котором записано открыть запросы на добавление, удаление и запускать из формы этот макрос. Увеличение списка объектов плюс 1. Наличие макроса для меня необходимость, поэтому возможно ли, для уменьшения списка объектов, засунуть всю процедуру запросов на добавление, удаления в макрос. Если я правильно понял из комментариев в отношении макросов, другой вариант это создание модулей и запуск их из формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 12:16 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
nikolay_magaginЕсли я правильно понял из комментариев в отношении макросов, другой вариант это создание модулей и запуск их из формы. Вы совершенно правильно поняли. Изучайте VBA и вперед, вам правильно советуют. С уважением. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 12:20 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
nikolay_magagin, Без обид, но из ваших слов можно сделать вывод о вашем подходе: как бы мне дотянуться до той вот ветки, не слазя со своей. То есть выставив флажок "я мало чего умею", вы хотите и вопрос решить, и остаться на своём текущем уровне знаний. Опять же, не попробовав применить разные методы, вы много слов пишете в защиту своих пока только предположений (!) о том, что "Поэтому производить запись данных операций в форме я думаю нецелесообразно.". Отсюда предложение: Закругляйтесь с "теоретическим словоблудием", пробуйте новую для вас методику работы - и тогда уже с позиций хоть какого то практического опыта выносите свои суждения. А если вы этого не можете/не хотите - то просто закрывайте топик. Трудно помогать тому, кто ничего не хочет менять и что то делать. Удачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 16:30 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
nikolay_magagin....посредством запросов, поэтапно получаю необходимое...ROI....Изучайте VBA и вперед, вам правильно советуют... А теперь сравните VBA и "визуальное восприятие" Может это натолкнет Вас на путь истинный-изучение VBA ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 19:05 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
Я знаю что нужно изучать VBA, и пытаюсь. Перестроиться трудно. Поэтому отправляю как выглядит поэтапно через запросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 22:19 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
Tarasios Попробовал копированием SQL запроса с условием на добавление в модуль. Кажется то, что мне надо на данном этапе изучения. Но мелочей не понимаю. Создалась функция, которую я мог задействовать. Что-то сделал ее видно но она не задействуется. Номер на копирование не проходит. Может есть какие-то естественные приколы. Если не трудно напишите. А так спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 22:27 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
nikolay_magagin, ну так давайте попробуем вместе разобраться. Сформируйте правильное техзадание (кста, это поможет вам самому всё разложить по полочкам): вот пример вашей базы. Вот таблицы такие то. Вот запрос, который надо "перевести" в VBA. Или хотя бы точное описание, что он должен делать: что откуда берёт и во что превращает. И что должно отображаться в такой то форме в таких то полях (если должно). Чуть выше я видел вашу базу, но из неё непонятно, что и как. В общем - жду. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 22:35 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
Сегодня уже сил нет думать что писать. Завтра попытаюсь выложить. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 22:43 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
То, что я выложил это лишь относительно завершенный кусок БД. Не буду нагромождать экран своим подходом к созданию структуры хранения и обработки данных. Просто дозрел до вопроса, задал и получил ответ. А так, создал модуль в котором выполняются действия запросов на удаление и добавление. Количество списков объектов уменьшился с четырех на один. Но так и не разобрался, что надо дописать, чтобы модуль заработал при нажатии кнопки формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 12:26 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
Все прочитал поставил function. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 15:57 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
nikolay_magagin, а зачем вообще тут нужен модуль? Вот всё содержимое вашего модуля повесьте на кнопку, а сам модуль удалите за ненадобностью. Таким образом, у вас вообще ни одного лишнего объекта не останется в базе. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 19:12 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
Наверное потому, что думаю по аналогии с макросом. Теоритически это законченный набор действий с данными. Но вызываться он может из нескольких разных форм, а возможно в различных сочетаниях с другими. Как в этом случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 19:42 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
nikolay_magagin, А это зависит от задачи. Если задача - убрать объекты по максимуму, то в каждой из форм просто дублируется код VBA. И уже по факту корректируется. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 20:00 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
Все таки решил попробовать применять модуль. Теоретически должно быть несколько таблиц, для которых выполняются одинаковые операции. Например: таблица [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), которые проставлялись в выражении и выполнялась операция в отношении выбранной таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2016, 16:42 |
|
Помогите с макросом
|
|||
---|---|---|---|
#18+
nikolay_magagin, Имена таблиц можно использовать в качестве аргументов вашей функции,но здесь,скорей всего VBA "споткнется". Вот выдержка из HELPa: "При присвоении имен процедурам, константам, переменным, и аргументам в модуле Visual Basic используются следующие правила: · Имена должны начинаться с буквы....." ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2016, 17:07 |
|
|
start [/forum/topic.php?fid=45&msg=39317143&tid=1612568]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
25ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 141ms |
0 / 0 |