Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: ADO+SQL
 
 автор: serjvip   (23.04.2008 в 11:41)   личное сообщение
 
 

Доброго времени суток, господа. При запуске параметрического запроса не формируется результат. Если подобный запрос запустить во разделе "запросы" все происходит нормально. Может быть я что-то делаю неправильно? Вот пример кода:


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

Заранее благодарен.

  Ответить  
 
 автор: Анатолий (Киев)   (23.04.2008 в 12:37)   личное сообщение
 
 

ИМХО, нужно параметрам запроса передавать не переменные типа Дата, а строки в виде #03/23/2008#

  Ответить  
 
 автор: serjvip   (24.04.2008 в 11:28)   личное сообщение
 
 

Доброго времени суток. Анатолий(Киев), спасибо за информацию, в таком виде запрос срабатывает. А как можно интегрировать проверку по вводимым данным. Если перевожу переменную даты в строку выскакивает ошибка несовместимости данных в запросе. Пробовал
так

dstart = "#" & CStr(datStart) & "#"

потом добавил еще такую строку

dstart = Replace(dstart, ".", "/")

всеравно выскакивает ошибка

  Ответить  
 
 автор: Анатолий (Киев)   (24.04.2008 в 13:38)   личное сообщение
 
 


Set myrst = cmd.Execute(Parameters:=Array(Format(datStart,"\#M\/DD\/YYYY\#"), Format(datEnd,"\#M\/DD\/YYYY\#")))

  Ответить  
 
 автор: serjvip   (25.04.2008 в 10:03)   личное сообщение
 
 

Огромное спасибо, Анатолий (Киев). Получилось, единственно пришлось подредактировать формат. Сработал в таком виде:

Set myrst = cmd.Execute(Parameters:=Array(Format(datStart,"M\ /DD\ /YYYY"), Format(datEnd,"M\ /DD\ /YYYY)))

  Ответить  
 
 автор: ДрЮня   (23.04.2008 в 13:55)   личное сообщение
 
 

для ADO лучше использовать свойство рекордсета - Filter

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList