Бонально - запрос с датой

*\/*#*
Дата: 01.03.2016 10:07:50
Открываю рекордсет к присоединенной таблице (таблица присоединена из MSQL Server через ODBC)

Dim db As Database, strSQL As String, strSQLins As String
Dim rs As DAO.Recordset, kbk As String
Dim rsF As DAO.Recordset, f_date As Date
Set db = CurrentDb
strSQL = "DELETE * from tmp_P_F_R"
f_date = Forms!frm_OTCHETS!f_date
db.Execute strSQL
Set rs = db.OpenRecordset("SELECT Sum(dbo_R_R.SUMM_1Q) AS [Sum-SUMM_1Q], [CVD_MF] & [CPR] & [CCS_FULL] & [CVR] AS KBK, dbo_K_DEP.K_DEPID, dbo_R_R.K_LSRID" & _
" FROM (dbo_R_R INNER JOIN dbo_K_LSR ON dbo_R_R.K_LSRID = dbo_K_LSR.K_LSRID) INNER JOIN dbo_K_DEP ON dbo_K_LSR.K_DEPID = dbo_K_DEP.K_DEPID" & _
" WHERE  dbo_R_R.DU  < #" & f_date & _
"# GROUP BY [CVD_MF] & [CPR] & [CCS_FULL] & [CVR], dbo_K_DEP.K_DEPID, dbo_R_R.K_LSRID;", dbOpenDynaset, dbSeeChanges)
...


dbo_R_R.DU - поле формата дата время

выдает ошибку:
Дата содержит синтаксическую ошибку в выражении запроса
'dbo_R_R.DU < #29.02.2016'

Ткните пожалуйста носом, что делаю не так?
ROI
Дата: 01.03.2016 10:18:31
*\/*#*
Открываю рекордсет к присоединенной таблице (таблица присоединена из MSQL Server через ODBC)

Dim db As Database, strSQL As String, strSQLins As String
Dim rs As DAO.Recordset, kbk As String
Dim rsF As DAO.Recordset, f_date As Date
Set db = CurrentDb
strSQL = "DELETE * from tmp_P_F_R"
f_date = Forms!frm_OTCHETS!f_date
db.Execute strSQL
Set rs = db.OpenRecordset("SELECT Sum(dbo_R_R.SUMM_1Q) AS [Sum-SUMM_1Q], [CVD_MF] & [CPR] & [CCS_FULL] & [CVR] AS KBK, dbo_K_DEP.K_DEPID, dbo_R_R.K_LSRID" & _
" FROM (dbo_R_R INNER JOIN dbo_K_LSR ON dbo_R_R.K_LSRID = dbo_K_LSR.K_LSRID) INNER JOIN dbo_K_DEP ON dbo_K_LSR.K_DEPID = dbo_K_DEP.K_DEPID" & _
" WHERE  dbo_R_R.DU  < #" & f_date & _
"# GROUP BY [CVD_MF] & [CPR] & [CCS_FULL] & [CVR], dbo_K_DEP.K_DEPID, dbo_R_R.K_LSRID;", dbOpenDynaset, dbSeeChanges)
...



dbo_R_R.DU - поле формата дата время

выдает ошибку:
Дата содержит синтаксическую ошибку в выражении запроса
'dbo_R_R.DU < #29.02.2016'

Ткните пожалуйста носом, что делаю не так?

Тынц:
http://www.sql.ru/forum/274061-2/fak-stereotipy-i-tipy-dannyh
ROI
Дата: 01.03.2016 10:19:26
Akina
Дата: 01.03.2016 10:20:38
*\/*#*
выдает ошибку:
Дата содержит синтаксическую ошибку в выражении запроса
'dbo_R_R.DU < #29.02.2016'

Что, и отсутствие в цитируемом фрагменте закрывающего диеза не насторожило?
ROI
Дата: 01.03.2016 10:29:16
Akina
*\/*#*
выдает ошибку:
Дата содержит синтаксическую ошибку в выражении запроса
'dbo_R_R.DU < #29.02.2016'

Что, и отсутствие в цитируемом фрагменте закрывающего диеза не насторожило?

диез на следующей строке.
*\/*#*
Дата: 01.03.2016 10:40:51
ROI,

СПС разобрался

итоговый код

Dim db As Database, strSQL As String, strSQLins As String
Dim rs As DAO.Recordset, kbk As String
Dim rsF As DAO.Recordset, f_date As String
Set db = CurrentDb
strSQL = "DELETE * from tmp_P_F_R"
f_date = Format(Forms!frm_OTCHETS!f_date, "MM\/DD\/YYYY")
db.Execute strSQL
Set rs = db.OpenRecordset("SELECT Sum(dbo_R_R.SUMM_1Q) AS [Sum-SUMM_1Q], [CVD_MF] & [CPR] & [CCS_FULL] & [CVR] AS KBK, dbo_K_DEP.K_DEPID, dbo_R_R.K_LSRID" & _
" FROM (dbo_R_R INNER JOIN dbo_K_LSR ON dbo_R_R.K_LSRID = dbo_K_LSR.K_LSRID) INNER JOIN dbo_K_DEP ON dbo_K_LSR.K_DEPID = dbo_K_DEP.K_DEPID" & _
" WHERE  dbo_R_R.DU  < #" & f_date & _
"# GROUP BY [CVD_MF] & [CPR] & [CCS_FULL] & [CVR], dbo_K_DEP.K_DEPID, dbo_R_R.K_LSRID;", dbOpenDynaset, dbSeeChanges)


Дело было в формате я изначально пробовал f_date = Format(Forms!frm_OTCHETS!f_date, "DD\/MM\/YYYY")
а надо f_date = Format(Forms!frm_OTCHETS!f_date, "MM\/DD\/YYYY")
OLEG_ZH
Дата: 01.03.2016 10:42:19
'
'преобразование даты в формат SQL
'
Public Function sqlDate(ByVal parDate As Date, Optional bSQL As Boolean = False) As String
    If bSQL Then
        sqlDate = Format$(parDate, "'yyyymmdd'")
    Else
        sqlDate = Format$(parDate, "\#mm\/dd\/yy\#")
    End If
End Function
OLEG_ZH
Дата: 01.03.2016 10:43:41
& sqlDate((f_date) &

И не забыть убрать все #
Slavinag
Дата: 01.03.2016 11:19:47
А что, функцию DateValue уже запретили? Или каким-то акцизом обложили?
Akina
Дата: 01.03.2016 11:41:28
ROI
диез на следующей строке

Не показатель. Он на следующей строке кода ФОРМИРОВАНИЯ - что вовсе даже не означает, что в итоговой строке запроса он следует непосредственно за литералом даты. Более того - цитата фрагмента в ошибке заставляет подозревать наличие там чего-то лишнего... вот кабы ТС ВСЕГДА придерживался правильной методики - сперва формировать строку запроса, потом выполнять - но в приведённом фрагменте кода его на второй раз уже нехватило.