Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / программное выполнение запроса с параметрами / 25 сообщений из 42, страница 1 из 2
01.10.2020, 14:29
    #40004551
dab2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
Всем привет! Сто лет не делал запросы DAO, вот не могу запустить запрос "сводные_все" с параметрами вида
Код: sql
1.
2.
3.
INSERT INTO t1 (p1,p2,...) 
SELECT count(p1),p2,...* FROM t2 
WHERE p2 BETWEEN [minus__month] AND [date_to]



там два параметра - начальная и конечная даты.

Выскакивает ошибка на стадии запуска процедуры:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Microsoft Visual Basic for Applications
---------------------------
Compile error:

Expected: =
---------------------------
ОК   Справка   
---------------------------

И че он моргает, на что намекает, не понимаю :))

Запуск qryPar с такими параметрами:
qryPar("сводные_все","[minus_3_month]","1/1/2020",vbvartype.vbDate,"[date_to]","1/2/2020",vbvartype.vbdate)

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

Где-то на форуме я видел готовые процедуры для выполнения запросов с параметрами, м.б. кто поделится?
Вот процедура запуска запроса с параметрами в DAO:

Код: vbnet
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.
Public Sub qryPar(qryName As String, ParamArray arrPar()) 'ïåðå÷èñëåíèå ïàðàìåòðîâ âèäà: "[èìÿ]","çíà÷åíèå","òèï"
Dim q As DAO.QueryDef, i As Integer

On Error GoTo err1

Set q = CurrentDb.QueryDefs(qryName)
    
For i = 0 To UBound(arrPar) Step 3 'è ò.ä. ïîêà íå ïåðåáåðåòå âñå ïàðàìåòðû
  Select Case arrPar(i + 2)
  Case vbvartype.vbString
    q.Parameters(arrPar(i)).Value = CStr(arrPar(i + 1))
  Case vbvartype.vbDate
    q.Parameters(arrPar(i)).Value = CDate(arrPar(i + 1))
  Case vbvartype.vbInteger
    q.Parameters(arrPar(i)).Value = CInt(arrPar(i + 1))
  Case vbvartype.vbBoolean
    q.Parameters(arrPar(i)).Value = CBool(arrPar(i + 1))
  Case vbvartype.vbDecimal
    q.Parameters(arrPar(i)).Value = CDec(arrPar(i + 1))
  Case vbvartype.vbDouble
    q.Parameters(arrPar(i)).Value = CDbl(arrPar(i + 1))
  Case Else
    q.Parameters(arrPar(i)).Value = Eval(arrPar(i + 1)) 'äëÿ ïàðàìåòðîâ âèäà Forms![ÈìÿÔîðìû]![ÈìÿÊîíòðîëà]
  End Select
Next i

q.Execute
q.Close

Set q = Nothing
Exit Sub

err1:
Debug.Print Err.Number & " " & Err.Description
End Sub

============================================================================================================
"О, сколько нам открытий чудных готовит просвещения дух, и опыт - сын ошибок трудных, и гений - парадоксов друг, и случай - бог изобретатель" (Пушкин, однако).
...
Рейтинг: 0 / 0
01.10.2020, 15:18
    #40004572
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
dab2
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Microsoft Visual Basic for Applications
---------------------------
Compile error:

Expected: =
---------------------------
ОК   Справка   
---------------------------

это не ошибка времени исполнения, это ошибка компиляции
так что твоя процедура, возможно, не причем

Выполни в редакторе VBA Debug - Compile, и редактор покажет где эта ошибка
...
Рейтинг: 0 / 0
01.10.2020, 15:39
    #40004576
dab2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
court,

нет ошибок, пробовал уже
...
Рейтинг: 0 / 0
01.10.2020, 15:39
    #40004577
bubucha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
vbvartype - не объявлен в параметрах ф-ии qryPar
...
Рейтинг: 0 / 0
01.10.2020, 15:44
    #40004580
dab2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
bubucha, вот более простой вариант, запрос переделал на выборку, ошибка та же...

Код: vbnet
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.
Public Sub qryPar2(qryName As String, ParamArray arrPar()) 'перечисление параметров 
Dim q As DAO.QueryDef, p As Parameter, i As Integer

On Error GoTo err1

Set q = CurrentDb.QueryDefs(qryName)
   
For Each p In q.Parameters
  Select Case p
  Case IsDate(p)
    p.Value = CDate(arrPar(i))
  Case IsNumeric(p)
    p.Value = CInt(arrPar(i))
  Case Else
    p.Value = Eval(arrPar(i)) 'для параметров вида Forms![ИмяФормы]![ИмяКонтрола]
  End Select
Next p

q.Execute
q.Close

Set q = Nothing
Exit Sub

err1:
Debug.Print Err.Number & " " & Err.Description
End Sub


Кто развеселит меня, тому полцарства!
...
Рейтинг: 0 / 0
01.10.2020, 15:47
    #40004581
bubucha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
dab2
bubucha, вот более простой вариант, запрос переделал на выборку, ошибка та же...

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
...
   
For Each p In q.Parameters
  Select Case p
  Case IsDate(p)
    p.Value = CDate(arrPar(i))
  Case IsNumeric(p)
    p.Value = CInt(arrPar(i))
  Case Else
    p.Value = Eval(arrPar(i)) 'для параметров вида Forms![ИмяФормы]![ИмяКонтрола]
  End Select

DEBUG.PRINT p.value 'тут все ожидаемое?

Next p
...


Кто развеселит меня, тому полцарства!
...
Рейтинг: 0 / 0
01.10.2020, 15:55
    #40004583
dab2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
bubucha,

Не понял вопрос. Он ни одной строки не выполняет в процедуре.
...
Рейтинг: 0 / 0
01.10.2020, 16:05
    #40004585
bubucha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
dab2
bubucha,
Не понял вопрос. Он ни одной строки не выполняет в процедуре.

Надо убедиться, что параметры действительно передаются в массиве и передаются корректно, если debug.print ничего не кажет, то параметры не передаются и надо смотреть место инициализации массива
...
Рейтинг: 0 / 0
01.10.2020, 16:14
    #40004588
dab2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
bubucha,

я проце-дуру запускаю со строки окна отладки, без параметров запускается, но запрос не выполняется, естественно. С параметрами - эта ошибка прёт.
...
Рейтинг: 0 / 0
01.10.2020, 16:20
    #40004590
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
dab2
я проце-дуру запускаю со строки окна отладки

так запускаешь ?
dab2
Запуск qryPar с такими параметрами:
qryPar("сводные_все","[minus_3_month]","1/1/2020",vbvartype.vbDate,"[date_to]","1/2/2020",vbvartype.vbdate)

скобки вокруг параметров убери
...
Рейтинг: 0 / 0
01.10.2020, 16:43
    #40004598
dab2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
court,

не помогает.

Вот что у меня подключено на всякий.
...
Рейтинг: 0 / 0
01.10.2020, 16:46
    #40004603
dab2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
...
Рейтинг: 0 / 0
01.10.2020, 16:55
    #40004613
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
dab2
court,

не помогает.

ты гонишь
скрин вызова процедуры из окна отладки с сообщением ошибки давай
...
Рейтинг: 0 / 0
01.10.2020, 17:15
    #40004619
dab2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
court,

Код: vbnet
1.
qryPar("сводные_все","[minus_3_month]","1/1/2020",2,"[date_to]","1/2/2020",2)



со скобками или без, ошибка одна и та же.

Я тут на ADO пробую делать, уже пошло. М.б. забьём на старьё?
...
Рейтинг: 0 / 0
01.10.2020, 17:16
    #40004620
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
dab2
со скобками или без, ошибка одна и та же.

сделай БЕЗ скобок, и то, что тебя попросили !
скрин вызова процедуры из окна отладки с сообщением ошибки давай
...
Рейтинг: 0 / 0
01.10.2020, 17:24
    #40004622
dab2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
court,

я тебе видео пришлю
...
Рейтинг: 0 / 0
01.10.2020, 17:26
    #40004623
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
dab2
court,

я тебе видео пришлю



БЕЗ скобок !

так заметно ?
...
Рейтинг: 0 / 0
01.10.2020, 17:30
    #40004626
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
court
dab2
court,

я тебе видео пришлю



БЕЗ скобок !

так заметно ?
аа, мне дошло, в каком месте ты тупишь


Ты "скобками" считаешь "квадратные скобки"
... хотя я написал "скобки вокруг параметров убери"

вот так должен выглядеть вызов из окна отладки / кода
Код: vbnet
1.
qryPar "сводные_все","[minus_3_month]","1/1/2020",2,"[date_to]","1/2/2020",2


или так
Код: vbnet
1.
call qryPar("сводные_все","[minus_3_month]","1/1/2020",2,"[date_to]","1/2/2020",2)
...
Рейтинг: 0 / 0
01.10.2020, 17:35
    #40004630
dab2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
court,

а правда туплю, во я тупой! Клинит же иногда!

Полцарства в студию!!
...
Рейтинг: 0 / 0
01.10.2020, 17:50
    #40004636
bubucha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
dab2
Полцарства в студию!!

таки и наливай товарищу court ;-)
...
Рейтинг: 0 / 0
01.10.2020, 19:11
    #40004666
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
dab2

там два параметра - начальная и конечная даты.
А если прочесть это п.3
...
Рейтинг: 0 / 0
02.10.2020, 02:41
    #40004716
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
.
...
Рейтинг: 0 / 0
02.10.2020, 03:32
    #40004719
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
dab2
...Где-то на форуме я видел готовые процедуры для выполнения запросов с параметрами...
Может я чё не понимаю:
-в VBA синтаксис должен быть такой:
Код: vbnet
1.
".....p2 between #" & Format(Me.minus__month,"mm\/dd\/yy") & "# and #" & Format(Me.date_to,"mm\/dd\/yy") & "#"

-почему в конструкторе, в строке "условие отбора", для поля p2 не написать:
Код: vbnet
1.
between Forms!Fname!minus__month and Forms!Fname!date_to 

(вообще без VBA,ссылки ПОЛНЫЕ)
-да и применение статистической функции COUNT без группировки...
Ваше желание увидеть в одном запросе итог по одному полю и подробности по остальным,по меньшей мере противоречиво
...
Рейтинг: 0 / 0
02.10.2020, 10:54
    #40004798
dab2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
sdku, спасибо за повторение п.3!

sdku
итог по одному полю и подробности по остальным
- так при использовании агрегатных функций в полях, остальные группируются, что само собой разумеется, иначе как всё это совместить в одной таблице? Здесь суммирование количества определенных номеров накладных на группы выбора по различным полям. Например (условно говоря), на определенные даты сколько накладных с разными номерами? Даты группируются, номера одинаковых накладных суммируются. И так по любым полям. Или я не понимаю ваше непонимание
...
Рейтинг: 0 / 0
02.10.2020, 10:55
    #40004799
dab2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
программное выполнение запроса с параметрами
sdku
(вообще без VBA,ссылки ПОЛНЫЕ)

там на самом деле начальная дата корректируется, а не берется из поля на прямую, так бы я и сам сделал, конечно.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / программное выполнение запроса с параметрами / 25 сообщений из 42, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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