Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как вызвать из VBA готовый запрос ACCESS с параметром / 17 сообщений из 17, страница 1 из 1
08.10.2019, 14:45
    #39873394
Jiura
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать из VBA готовый запрос ACCESS с параметром
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
08.10.2019, 15:25
    #39873433
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать из VBA готовый запрос ACCESS с параметром
открытие запроса из формы:
Код: 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
08.10.2019, 15:28
    #39873435
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать из VBA готовый запрос ACCESS с параметром
забыл:Dim strSQL, q AS As QueryDef
...
Рейтинг: 0 / 0
08.10.2019, 15:31
    #39873438
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать из VBA готовый запрос ACCESS с параметром
Тьфу:
Код: vbnet
1.
2.
3.
.....
Dim strSQL, q As QueryDef 
....
...
Рейтинг: 0 / 0
08.10.2019, 15:32
    #39873439
Jiura
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать из VBA готовый запрос ACCESS с параметром
Спасибо!
Но у меня обращение идет через VBA Excel к внешней БД Access
...
Рейтинг: 0 / 0
08.10.2019, 15:43
    #39873450
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать из VBA готовый запрос ACCESS с параметром
Jiura 1 Есть Access и в нем есть готовый запрос с названием «ZZZ2» и с параметром
.....
Вот мой код на VBA Excel:
.....
Непонятно,однако, в каком приложении выполняется код
(может просто экспортировать выполненный запрос в Ёксель:DoCmd.TransferSpreadsheet)
...
Рейтинг: 0 / 0
08.10.2019, 15:48
    #39873453
Jiura
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать из VBA готовый запрос ACCESS с параметром
Запрос, который надо вызвать хранится в Access
А вызов его идет из Excel средствами VBA (нужно в этот запрос добавить параметр и выгрузить данные в ExcL)
...
Рейтинг: 0 / 0
08.10.2019, 16:07
    #39873465
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать из VBA готовый запрос ACCESS с параметром
В таком случае это должен быть именно запрос с параметром. У Вас же запрос не с параметром, а с неизвестным литералом, который клиентским интерфейсом MS Access (не его СУБД-системой) запрашивается у клиента.
...
Рейтинг: 0 / 0
08.10.2019, 16:08
    #39873466
Jiura
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать из VBA готовый запрос ACCESS с параметром
Ничего не понял....
Можете пример дать, как сделать чтобы заработало?
Может я не совсем верно интерпретирую "параметр"
...
Рейтинг: 0 / 0
08.10.2019, 16:56
    #39873503
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать из VBA готовый запрос ACCESS с параметром
См. встроенную справку.

Access Developer Reference > Microsoft Access SQL Reference > Data Manipulation Language > PARAMETERS Declaration (Microsoft Access SQL)
...
Рейтинг: 0 / 0
08.10.2019, 17:38
    #39873529
Jiura
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать из VBA готовый запрос ACCESS с параметром
Посмотрел 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
08.10.2019, 18:08
    #39873551
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать из VBA готовый запрос ACCESS с параметром
авторc.Parameters.append c.CreateParameter("Q", adInteger, adParamInput, , 1)библиотека АДО, походу, не подключена и Option Explicit не задан
В итоге всё "падает" на АДО-константах
...
Рейтинг: 0 / 0
08.10.2019, 18:19
    #39873553
Jiura
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать из VBA готовый запрос ACCESS с параметром
Точно, на константах сыпалась.....
Option Explicit добавили

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

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

Вот код верный:
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
08.10.2019, 18:47
    #39873566
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать из VBA готовый запрос ACCESS с параметром
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
09.10.2019, 09:27
    #39873757
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать из VBA готовый запрос ACCESS с параметром
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
09.10.2019, 09:41
    #39873766
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать из VBA готовый запрос ACCESS с параметром
JiuraКак вызвать из VBA готовый запрос ACCESS с параметром
читаем - FAQ/MS Access/Как запускать запросы из VBA
Объяснено исчерпывающе...
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как вызвать из VBA готовый запрос ACCESS с параметром / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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