Я работаю над старым программным обеспечением, которое использует базу данных .mdb.DateTime issue with vb and mdb
Я удался создать соединение с базой данных, и я могу запустить SQL запросов просто отлично, когда дело доходит до запрограммированных запросов, как это:
SELECT COUNT(*) AS test FROM shifts WHERE EmpId = '2' AND DateOpen <= '3/28/2007'
Двигаясь дальше, я заменил 2 с выражение в зависимости от выбора пользователя, как так
Employees(employe.SelectedIndex)
Это работало отлично тоже.
Теперь, когда я пытался заменить дату с startDate.Value.ToShortDateString
я начал сталкиваются со многими проблемами конверсии и я, наконец, что-то, что работал так что мой где предложение стало так:
WHERE EmpId = '" & Employees(employe.SelectedIndex) & "' AND DateDiff('d', DateOpen, '" & endDate.Value.ToShortDateString & "') <= 0
Теперь я выбрал то же самое дата, указанная в запросе выше, запрос выполняется без проблем, но удивительно, что я получил нулевой результат, что не имеет для меня никакого смысла, потому что запрос со значениями, которые уже там вернулись, насчитывал 2.
I использовал некоторый отладочный вывод, чтобы убедиться, что запрос и я получаю тот же запрос, что и выше, когда я выбираю дату.
Если у вас есть идеи, почему это не работает или у вас есть какие-либо намеки на правильный способ сделать это, я был бы признателен за все ваши данные.
Заранее спасибо
Можете ли вы поместить сравнение «датифф» в свой «запрограммированный» запрос и посмотреть, возвращает ли это то, что вы ожидаете? –
toShortDateString? Мне не нравится VB6, какой у объекта этот метод? – Bob77
DateDiff в запросе доступа принимает (строка, дата, дата), у вас есть 'DateDiff ('d', DateOpen, '' и endDate &" ') '(игнорируя дополнительные функции), который является' string, date, string' , попробуйте 'DateDiff ('d', DateOpen, #" & endDate & "#)' Вы можете столкнуться с проблемами локали, и в этом случае вам придется форматировать enddate в год, месяц, день. – Fionnuala