С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/20: Рейтинг темы: голосов - 20, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 15

Из формы открыть SQL запрос сформированный в VBA

31.05.2013, 11:23. Показов 4444. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, ув.-мые форумчанины

Имеется форма с полем ввода текста и с кнопкой
при нажатии на кнопку с поля ввода текста берется текст (извините за тавтологию) и согласно ему создается запрос. который требуется открыть (так скажем вывести на экран)

конечно можно было создать подчиненную форму и изменять его запрос, но проблема в том, что запрос формируется всегда разный и кол.-во выводимых столбцов всегда разное

Добавлено через 32 минуты
Нашел функцию DoCmd.RunSQL
но почему-то выводит ошибку, для примера

Visual Basic
1
2
3
Private Sub Кнопка4_Click()
  DoCmd.RunSQL "SELECT 1,2,3,4"
End Sub
выводит ошибку
Run-Time Error '2342'
Для маЗапускЗапросаSQL требуется аргумент,
состоящий из инструкции SQL.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2013, 11:23
Ответы с готовыми решениями:

SQL запрос для подчиненной формы черех vba
Добрый день! Есть Форма на ней лист бокс и подчиненная форма (см пример). Как сделать что бы при событии в лист боксе к примеру клик,...

Открыть запрос с параметром через vba
Добрый всем день! Подскажите, как вывести результаты запроса с параметром на экран? Единственный параметр должен задаваться переменной...

VBA открыть запрос в подчиненной форме
Есть форма f_seach , на ней расположены: множество полей и выпадающих списков, подчиненная форма pf_seach, кнопка button_seach . При...

13
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,932
Записей в блоге: 4
31.05.2013, 11:27
посмотрите вариант
Вложения
Тип файла: zip poisk0113E.zip (62.2 Кб, 133 просмотров)
0
 Аватар для OrestBerserker
2 / 1 / 0
Регистрация: 27.01.2015
Сообщений: 179
28.06.2022, 18:22
Не мог глянуть, что уважаемаяshanemac51 поместила в архиве (читаю и пишу с мобилы), обратился к иностранным ресурсам сюда, понял причину. Ее суть в том, что база не принимает, что делать с объектом, который возвращает команда RunSQL.
В указанном мной ресурсе предлагают 2 решения, в зависимости от того, что хочет разработчик:
1 если с результатом надо ещё что-то делать, то загонять в рекордсет через OperRecordset и обрабатывать
2 если показать результат пользователю (как мне надо) ещё 2 варианта:
2.1 поместить на форме listbox, а текст запроса в RowSource Listbox'a
2.2 динамически создать таблицу или сразу запрос и высветить пользователю
По мне в каждом из 2 есть недостатки:
2.1 плох, что надо сильно форму увеличивать из-за ещё одного контрола
А 2.2, что после закрытия формы ещё событие писать которое бы удаляло временно созданный запрос
....
Понимаю, что с момента создания темы 9 лет прошло, вдруг кому ещё кроме меня пригодится
А ещё надеюсь, вдруг, кто-то из местных корифеев увидит, предложит ещё более оптимальный вариант
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
28.06.2022, 18:53
А что тут понимать?

Во-первых, нужно использовать не RunSQL, а OpenQuery,
предварительно присвоив новое значение свойству SQL служебного запроса.

Во-вторых, у ТС вообще не запрос, а его клочок.
Даже FROM нету.
1
 Аватар для OrestBerserker
2 / 1 / 0
Регистрация: 27.01.2015
Сообщений: 179
28.06.2022, 19:04
Capi,
Даже FROM нету.
У меня то все было на месте :-) в конструкторе запросов проверял
Насколько я понял, для запроса на выборку из формы команда DoCmd.RunSQL вообще не подходит.
нужно использовать не RunSQL, а OpenQuery
Вот спасибо!
А то уж я городить начал...
0
598 / 404 / 51
Регистрация: 06.03.2022
Сообщений: 2,129
28.06.2022, 19:57
Есть такое свойство .SQL и в данном случае,по моему, надо использовать его:
создаете любой "запрос1" и что-то в таком духе:
Visual Basic
1
2
3
CurrentDb.QueryDefs("запрос1").SQL = "SELECT * FROM таблица1 WHERE ctl=" & Me.полеФормы
'любая инструкция SQL хоть с одним,хоть с 10 полями
DoCmd.OpenQuery "запрос1"
1
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
28.06.2022, 20:46
Цитата Сообщение от OrestBerserker Посмотреть сообщение
Вот спасибо!
А то уж я городить начал...
А как же "ресурс"?
Там про это тоже есть.
Не приметили?

А то столько слов написали про "решения", а главного, очень коротенького, и нет.
0
 Аватар для OrestBerserker
2 / 1 / 0
Регистрация: 27.01.2015
Сообщений: 179
28.06.2022, 21:06
SDKU,
создаете любой "запрос1" и что-то в таком духе:
Я так понял, что в базе "запрос1" уже должен существовать?
А дальнейшими действиями мы меняем его содержимое.
Я в своём случае его во время загрузки формы создаю, а при выгрузке убиваю.
Capi,
Не приметили?
Наверное, нет
Читал по диагонали, искал ответ на вопрос, что у ТС
А многословие - результат осмысления собственной ошибки.
Кстати, не зря огород городил: прежде чем DoCmd.OpenQuery применять, нужно Currentdb.CreateQuery (команду про памяти пишу) применить. Или, как SDKU сказал, сначала создать вручную.
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
28.06.2022, 21:51
OrestBerserker,

Оказывается, Вы и моё сообщение по диагонали читали.
Хотя там всего пара фраз.

Про смену значения свойства SQL у запроса там есть.

Стиль такой?
Много слов продуцировать, мало слов поглощать? )))
Не обижайтесь, шутка.
0
 Аватар для OrestBerserker
2 / 1 / 0
Регистрация: 27.01.2015
Сообщений: 179
29.06.2022, 09:01
Capi, в каждой шутке своя доля правды. Это профдеформация. Привык, что студенты как правило чушь говорят/пишут и сам многословить, чтобы, понять/объяснить. Вот и бывают такие проколы в нормальных сообществах.
Реально у Вас это пропустил, хотя без сообщения SDKU не понял бы.
Я все надеялся, что можно обойтись без создания запроса в базе. Ведь на обновление/добавление/удаление нормально работает с кода vba.
0
598 / 404 / 51
Регистрация: 06.03.2022
Сообщений: 2,129
29.06.2022, 10:58
Цитата Сообщение от OrestBerserker Посмотреть сообщение
что можно обойтись без создания запроса в базе.
Не понятное,от слова совсем, ничем не обоснованное стремление избавиться от запроса.Чем Вам мешает наличие временного (простенького-его можно скрыть)запроса. А чем лучше его при каждом "чихе" создавать-удалять (CreateQuery. Что одно,что другое для железяки РС практически без разницы и не ясно что лучше-поэтому решайте сами что выбрать)
2
Эксперт MS Access
 Аватар для Eugene-LS
12058 / 5843 / 1492
Регистрация: 05.10.2016
Сообщений: 16,432
29.06.2022, 11:11
Цитата Сообщение от SDKU Посмотреть сообщение
создавать-удалять (CreateQuery)
Кстати код по созданию запроса будет занимать больше места в базе чем сохранённый запрос ...
0
598 / 404 / 51
Регистрация: 06.03.2022
Сообщений: 2,129
29.06.2022, 11:21
Точно-еще один плюс за создание запроса-на 1 сроку кода меньше (а по хорошему еще и Resume надо добавить) и еще: Eugene-LS про код который удаляет забыл ....
0
 Аватар для OrestBerserker
2 / 1 / 0
Регистрация: 27.01.2015
Сообщений: 179
29.06.2022, 11:50
SDKU, благодаря Вам переосмысливаю методику работы. Я-то и впрямь каждый раз сдавал/удалял.
А теперь склоняюсь к тому, чтобы действительно создать один на все случаи жизни qwrTemp, скрыть его для полного счастья и обновлять SQL содержимое по мере надобности.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.06.2022, 11:50
Помогаю со студенческими работами здесь

SQL запрос на VBA
Здраствуйте, форумчане. Делал по Гурвицу приложение, добрался до формы смены пароля и всё: система пишет о "невидимой синтаксической...

Запрос SQL в VBA
Хочу сделать запрос в VBA. Но не получается. Вроде бы все правильно пишу. Но возникает ошибка 2342- "Для макрокоманды ЗапускЗапроса...

SQL запрос в VBA
Можно парочку примеров оформления запросов в коде VBA нужны: select и присвоение его результатов переменным например у меня ...

Как в VBA Из одной DB открыть вторую DB и выполнить в ней запрос
Подскажите как кодом из текущей базы данных Аксесс --открыть другую базу данных аксесс --во второй выполнить запрос --и вернуться к...

Запрос SQL на обновление из VBA
Всем привет! Помогите, пожалуйста.... Написал код (корявый но работает!) Set bst = mdb.OpenRecordset("Запрос1") ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru