powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Обращение к запросу через VBA
12 сообщений из 37, страница 2 из 2
Обращение к запросу через VBA
    #39957376
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PavelPK,

https://www.sql.ru/faq/faq_topic.aspx?fid=410 Если все параметры являются ссылками на контролы форм (Forms![ИмяФормы]![ИмяКонтрола]), тогда самое простое (и красивое) решение:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim q As DAO.QueryDef, p As DAO.Parameter
dim rst as DAO.Recordset
  Set q = CurrentDb.QueryDefs("ИмяЗапроса") 'как обычного запроса Select,
  'так и INSERT/UPDATE; в запросах на удаление это не помогает
  For Each p In q.Parameters
    p.Value = Eval(p.Name)
  Next
  Set rst = q.OpenRecordset()'поправил под ситуацию
  q.close: Set q=Nothing
...
...
Рейтинг: 0 / 0
Обращение к запросу через VBA
    #39957383
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PavelPK
Как на духу.

не уверена , что отбор по дате сработает
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
SELECT Опекуны.Фамилия,
 Опекуны.Имя,
 Опекуны.Отчество,
 Опекуны.[Дата рождения],
 Опекуны.СНИЛС,
 Опекуны.серия,
 Опекуны.номер,
 Опекуны.[кем выдан],
 Опекуны.[Дата выдачи],
 Опекуны.ГородРег,
 Опекуны.[Населенный пунктРег],
 Опекуны.УлицаРег,
 Опекуны.домРег,
 Опекуны.корпРег,
 Опекуны.квРег,
 Опекуны.Акт_назначения,
 Опекуны.Дата_распоряжения,
 Опекуны.Дата_распоряжения,
 Недееспособные.Фамилия,
 Недееспособные.Имя,
 Недееспособные.Отчество,
 Недееспособные.[Дата рождения],
 Недееспособные.серия,
 Недееспособные.номер,
 Недееспособные.[кем выдан],
 Недееспособные.[дата выдачи],
 Недееспособные.СНИЛС,
 Опекуны.[Статус опекуна],
 Недееспособные.ДатаПоступления
FROM Недееспособные
 INNER JOIN Опекуны
 ON Недееспособные.Код_недееспособного = Опекуны.Код_недееспосоного
WHERE (((Опекуны.[Статус опекуна])=[Forms]![Администрирование]![ПолеСоСписком108])
 AND ((Недееспособные.ДатаПоступления) Between [Forms]![Администрирование]![Поле112]
 And [Forms]![Администрирование]![Поле114]));
...
Рейтинг: 0 / 0
Обращение к запросу через VBA
    #39957449
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
Set RS=CurrentDB.OpenRecordset("select * from tbl where ctl=" & полеФормы) ' если число
Set RS=CurrentDB.OpenRecordset("select * from tbl where ctl='" & полеФормы & "'") ' если текст
...
Рейтинг: 0 / 0
Обращение к запросу через VBA
    #39957524
PavelPK, у вас два затыка: "выпулить в Эксель" и "столбцы объединить в один."
1. выпулить в Эксель
Самый простой для вас способ - экспорт сохраненного запроса командой
DoCmd.TransferSpreadsheet
Эта команда понимает ссылки на элементы форм.
Если, всё же, хотите одолеть Recordset, то пробуйте пример от Панунг.
Но он для сохраненного запроса. Если SQL выражение создается на лету, то вместо
Set q = CurrentDb.QueryDefs("ИмяЗапроса")
надо
Set q = CurrentDb.CreateQueryDef("", sql)

2. столбцы объединить в один
А в чем проблема?
Код: sql
1.
Опекуны.ГородРег & " " + Опекуны.[Населенный пунктРег] & " " &  Опекуны.УлицаРег & " д." &  Опекуны.домРег & " корп." +  Опекуны.корпРег & " кв." +  Опекуны.квРег As Опекуны_Адрес

В этом примере в одну кучу собирается адрес, причем, если поля "Населенный пунктРег", "корпРег" или "квРег" пустые, то в итоге нет лишних вставок типа " корп.", " кв.".
Но учтите, что если в результате конкатенации длина строки не должна превышать 255 символов, иначе с лишними символами начнутся чудеса.
...
Рейтинг: 0 / 0
Обращение к запросу через VBA
    #39957821
PavelPK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолий,
Как то никогда не приходилось сохранять запросы.
Подскажите как это сделать.
...
Рейтинг: 0 / 0
Обращение к запросу через VBA
    #39957822
PavelPK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург,
Судя по всему из-за того что запрос не сохранен пишет "Не возможен запуск запроса на выборку"
...
Рейтинг: 0 / 0
Обращение к запросу через VBA
    #39957829
PavelPK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос на создание таблицы тоже не выполняет. Ругается на то, что в этих таблицах есть одинаковые имена.
Блин, как все сложно то.......
...
Рейтинг: 0 / 0
Обращение к запросу через VBA
    #39957832
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PavelPK
Панург,
Судя по всему из-за того что запрос не сохранен пишет "Не возможен запуск запроса на выборку"
Так сохрани.

PavelPK, ты свой вопрос сделай в QBE (графический редактор запросов), убедись что всё правильно работает. Потом пользуйся кодом.
Не понимаю, зачем тащить текст запроса в код VBA, тем более если плохо соображаешь что к чему. Да потом ещё приходится проделывать ту же самую операцию, что я указал выше, при отладке строки запроса формируемой в коде.
...
Рейтинг: 0 / 0
Обращение к запросу через VBA
    #39957834
Geizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PavelPK
Кривцов Анатолий,
Как то никогда не приходилось сохранять запросы.
Подскажите как это сделать.

Имели ввиду что сохранён сам запрос, как объект, а не его содержимое (не данные).
Сохранённый запрос появится там же где и таблицы и формы в левой части окна Access. У сохранённого запроса будет Имя - это и значит что он сохранённый.
...
Рейтинг: 0 / 0
Обращение к запросу через VBA
    #39957838
PavelPK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да уж, натупил я здесь.....
В общем работает код Панурга. Спасибо всем, ребята.
Дело в том что при создании запроса с самого начала, он присваивает имена таблицы с указанием собственно имени самой таблицы, а вот уже при добавлении полей в режиме конструктора в запрос, имя таблицы уже не выводит.
Тоесть с самого начала допустим имя "Недееспособные_Фамилия: Фамилия", а при добавлении в конструкторе уже пишет просто фамилия.
...
Рейтинг: 0 / 0
Обращение к запросу через VBA
    #39957902
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PavelPK
....а вот уже при добавлении полей в режиме конструктора в запрос, имя таблицы уже не выводит.
Тоесть с самого начала допустим имя "Недееспособные_Фамилия: Фамилия", а при добавлении в конструкторе уже пишет просто фамилия.
Не правда
...
Рейтинг: 0 / 0
Обращение к запросу через VBA
    #39957912
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конструктор "пишет" такой код:
Код: vbnet
1.
2.
SELECT контрагенты.контрагент, перечень.Контрагент
FROM контрагенты INNER JOIN перечень ON контрагенты.КодК = перечень.Контрагент;
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Обращение к запросу через VBA
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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