|
|
|
| Доброго времени суток, господа. При запуске параметрического запроса не формируется результат. Если подобный запрос запустить во разделе "запросы" все происходит нормально. Может быть я что-то делаю неправильно? Вот пример кода:
Public Sub prn_vippr()
On Error GoTo Err_prn_vippr
Dim myrst As ADODB.Recordset
Dim cmd As ADODB.Command
Dim rnum As Integer
Dim datStart As Date
Dim datEnd As Date
Dim mystr As String
datStart = InputBox("Введить початкову дату", "Початкова дата")
datEnd = InputBox("Введить кінцеву дату", "Кінцева дата")
HourYes "Старт Exel"
mystr = "SELECT plz.nazv_pr, pr_vip.kod_pr, Count(pr_vip.kod_vip) AS [Count-kod_vip], Count(pr_vip.kat_sm) AS [Count-kat_sm],"
mystr = mystr & " Count(pr_vip.kat_zz) AS [Count-kat_zz], op_pov.date_otr FROM (pr_vip INNER JOIN op_pov ON pr_vip.vipID=op_pov.vipID) "
mystr = mystr & "INNER JOIN plz ON pr_vip.vipID=plz.vipID GROUP BY plz.nazv_pr, pr_vip.kod_pr, op_pov.date_otr "
mystr = mystr & "HAVING (((op_pov.date_otr) Between ? And ? )) ORDER BY plz.nazv_pr;"
Set cmd = New ADODB.Command
cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandText = mystr
cmd.CommandType = adCmdText
Set myrst = cmd.Execute(Parameters:=Array(datStart, datEnd))
myrst.MoveNext
Заранее благодарен. | |
|
| |
|
|
|
| ИМХО, нужно параметрам запроса передавать не переменные типа Дата, а строки в виде #03/23/2008# | |
|
| |
|
|
|
| Доброго времени суток. Анатолий(Киев), спасибо за информацию, в таком виде запрос срабатывает. А как можно интегрировать проверку по вводимым данным. Если перевожу переменную даты в строку выскакивает ошибка несовместимости данных в запросе. Пробовал
так
dstart = "#" & CStr(datStart) & "#"
потом добавил еще такую строку
dstart = Replace(dstart, ".", "/")
всеравно выскакивает ошибка | |
|
| |
|
|
|
|
Set myrst = cmd.Execute(Parameters:=Array(Format(datStart,"\#M\/DD\/YYYY\#"), Format(datEnd,"\#M\/DD\/YYYY\#")))
|
| |
|
| |
|
|
|
| Огромное спасибо, Анатолий (Киев). Получилось, единственно пришлось подредактировать формат. Сработал в таком виде:
Set myrst = cmd.Execute(Parameters:=Array(Format(datStart,"M\ /DD\ /YYYY"), Format(datEnd,"M\ /DD\ /YYYY))) | |
|
| |
|
|
|
| для ADO лучше использовать свойство рекордсета - Filter | |
|
| |