powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как вызвать из VBA готовый запрос ACCESS с параметром
17 сообщений из 17, страница 1 из 1
Как вызвать из VBA готовый запрос ACCESS с параметром
    #39873394
Jiura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1 Есть Access и в нем есть готовый запрос с названием «ZZZ2» и с параметром

авторSELECT *FROM Tabl1 WHERE QWE=Q;

Q – некоторый параметр.
И когда я в Access-е его запускаю этот запрос, то Access спрашивает меня чему равно Q…. Я ввожу, например, 3 и Access выдает мне строчку с таким названием. Столбец «QWE» имеет в Access тип «числовой, целое».

2 Есть вторая программа VBA, которая вызывает данный Запрос через ADO и пытается его выполнить…проблема - не могу передать в запрос значение параметра Q .

Вот мой код на VBA Excel:
'
авторSet c = CreateObject("ADODB.Command")
c.ActiveConnection = сonStrRead
c.CommandText = "ZZZ2"
c.Parameters.append c.CreateParameter("Q", adInteger, adParamInput, , 1)
'
Set objRecordset = c.Execute
tab_set = objRecordset.getRows()
Set objComm = Nothing

"Сыпется" вот на этой строке:

авторc.Parameters.append c.CreateParameter("Q", adInteger, adParamInput, , 1)

Пишет « аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт с друг-другом »…побороть не могу. Помогите!
...
Рейтинг: 0 / 0
Как вызвать из VBA готовый запрос ACCESS с параметром
    #39873433
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
открытие запроса из формы:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub .....
Dim strSQL
strSQL="SELECT * FROM tbl WHERE qwe=" & me.параметр  'параметр число
'strSQL="SELECT * FROM tbl WHERE qwe='" & me.параметр & "'"   параметр текст
Set q = CurrentDb.QueryDefs("ZZZ2")
q.SQL = strSQL
DoCmd.OpenQuery "ZZZ2"
End Sub

А из окна БД: напишите в конструкторе запросов, в строке "условие отбора:"для нужного поля [введите параметр]
...
Рейтинг: 0 / 0
Как вызвать из VBA готовый запрос ACCESS с параметром
    #39873435
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл:Dim strSQL, q AS As QueryDef
...
Рейтинг: 0 / 0
Как вызвать из VBA готовый запрос ACCESS с параметром
    #39873438
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тьфу:
Код: vbnet
1.
2.
3.
.....
Dim strSQL, q As QueryDef 
....
...
Рейтинг: 0 / 0
Как вызвать из VBA готовый запрос ACCESS с параметром
    #39873439
Jiura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!
Но у меня обращение идет через VBA Excel к внешней БД Access
...
Рейтинг: 0 / 0
Как вызвать из VBA готовый запрос ACCESS с параметром
    #39873450
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jiura 1 Есть Access и в нем есть готовый запрос с названием «ZZZ2» и с параметром
.....
Вот мой код на VBA Excel:
.....
Непонятно,однако, в каком приложении выполняется код
(может просто экспортировать выполненный запрос в Ёксель:DoCmd.TransferSpreadsheet)
...
Рейтинг: 0 / 0
Как вызвать из VBA готовый запрос ACCESS с параметром
    #39873453
Jiura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запрос, который надо вызвать хранится в Access
А вызов его идет из Excel средствами VBA (нужно в этот запрос добавить параметр и выгрузить данные в ExcL)
...
Рейтинг: 0 / 0
Как вызвать из VBA готовый запрос ACCESS с параметром
    #39873465
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таком случае это должен быть именно запрос с параметром. У Вас же запрос не с параметром, а с неизвестным литералом, который клиентским интерфейсом MS Access (не его СУБД-системой) запрашивается у клиента.
...
Рейтинг: 0 / 0
Как вызвать из VBA готовый запрос ACCESS с параметром
    #39873466
Jiura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ничего не понял....
Можете пример дать, как сделать чтобы заработало?
Может я не совсем верно интерпретирую "параметр"
...
Рейтинг: 0 / 0
Как вызвать из VBA готовый запрос ACCESS с параметром
    #39873503
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
См. встроенную справку.

Access Developer Reference > Microsoft Access SQL Reference > Data Manipulation Language > PARAMETERS Declaration (Microsoft Access SQL)
...
Рейтинг: 0 / 0
Как вызвать из VBA готовый запрос ACCESS с параметром
    #39873529
Jiura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрел Help, спасибо..

Вроде то что нужно, но не докручено...

У меня при подключении через ADO вызов встроенного запроса идет как:

авторSet CCon = CreateObject("ADODB.Connection")
CCon.Open ""
'
Set rs = CreateObject("ADODB.Recordset")
rs.ActiveConnection = CCon
With rs
.Open "ZZZ2", CCon

ZZZ2 - имеющийся в Access-е запрос....не могу понять, куда в эту строку писать "параметры"?
...
Рейтинг: 0 / 0
Как вызвать из VBA готовый запрос ACCESS с параметром
    #39873551
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторc.Parameters.append c.CreateParameter("Q", adInteger, adParamInput, , 1)библиотека АДО, походу, не подключена и Option Explicit не задан
В итоге всё "падает" на АДО-константах
...
Рейтинг: 0 / 0
Как вызвать из VBA готовый запрос ACCESS с параметром
    #39873553
Jiura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Точно, на константах сыпалась.....
Option Explicit добавили

параметры задаются и проходит, но результат все равно не выполняется......падает вот здесь:
Set objRecordset = c.Execute

Говорит, что ошибочная инструкция SQL: "предполагалось Delete, Insert ..."
...
Рейтинг: 0 / 0
Как вызвать из VBA готовый запрос ACCESS с параметром
    #39873560
Jiura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все получилось!
Спасибо всем кто ответил!

Вот код верный:
Set c = CreateObject("ADODB.Command")
c.ActiveConnection = QQ
c.CommandText = "ZZZ2"

c.Parameters.append c.CreateParameter("Q", 3)
c.Parameters.Item(0) = 2
'
Set objRecordset = c.Execute
tab_set = objRecordset.getRows()

'Set objComm = Nothing
MsgBox "OK!"
...
Рейтинг: 0 / 0
Как вызвать из VBA готовый запрос ACCESS с параметром
    #39873566
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jiura,
А так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub my()
Dim dbs As Database
Dim rs As Recordset
Dim SQLr As String
Set dbs = DAO.OpenDatabase("D:\MyDoc\Access\tmp\logo.mdb") ' Путь к базе
' работает только с *.mdb (Office 2007-может в более новых версиях будет работать с *accdb-не знаю)
SQLr = "select * from tbl"   ' where поле=" & Range("g1") - в g1 условие отбора
Set rs = dbs.OpenRecordset(SQLr)
Cells(1, 1).CopyFromRecordset rs
Set dbs = Nothing
Set rs = Nothing
End Sub

подключить библиотеку Microsoft DAO 3.6 Object Library
...
Рейтинг: 0 / 0
Как вызвать из VBA готовый запрос ACCESS с параметром
    #39873757
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JiuraТочно, на константах сыпалась.....
Option Explicit добавили

параметры задаются и проходит, но результат все равно не выполняется......падает вот здесь:
Set objRecordset = c.Execute

Говорит, что ошибочная инструкция SQL: "предполагалось Delete, Insert ..." имхо, этого не хватало, что бы заработало
Код: vbnet
1.
2.
3.
c.CommandText = "ZZZ2"
c.CommandType = adCmdStoredProc
c.Parameters.append c.CreateParameter("Q", adInteger, adParamInput, , 1)
...
Рейтинг: 0 / 0
Как вызвать из VBA готовый запрос ACCESS с параметром
    #39873766
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JiuraКак вызвать из VBA готовый запрос ACCESS с параметром
читаем - FAQ/MS Access/Как запускать запросы из VBA
Объяснено исчерпывающе...
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как вызвать из VBA готовый запрос ACCESS с параметром
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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