Я использую SQL внутри листа Excel, используя следующий поставщик
Set m_Connection = CreateObject("ADODB.Connection")
m_Connection.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=Yes;"";"
У меня есть два текстовых поля (от и до), где пользователи вводят две даты От, До, чтобы выбрать записи, соответствующие выбранной дате
У меня возникают следующие проблемы:
Прежде всего, я попробовал этот код, я получал все поля, независимо от того, какие даты являются датами на листе, за исключением того, что у меня есть чистый лист, те, где ячейки пустые внутри даты столбца, являются пустыми, поэтому я не получаю ошибку, но мое состояние между двумя датами не работает
SELECT [ListName] AS [List name]
FROM [Database$]
WHERE CDATE([ClipDate]) BETWEEN #01/09/2017# AND #14/03/2019#;
Я пытался не использовать BETWEEN
, но я получил те же неправильные результаты (все записи, кроме пустых, выбираются независимо от ClipDate)
SELECT [ListName] AS [List name]
FROM [Database$]
WHERE CDATE([ClipDate]) >= #01/09/2017# AND CDATE([ClipDate]) <= #14/03/2019#;
Я попробовал следующее, заменив # на "", на этот раз я получаю хороший выбор даты (те, которые мне нужны), но я получаю сообщение об ошибке "Недопустимое использование нулевого значения", если какая-либо из ячеек в столбце Дата пуста.
SELECT [ListName] AS [List name]
FROM [Database$]
WHERE CDATE([ClipDate]) >= "01/09/2017" AND CDATE([ClipDate]) <= "14/03/2019";
Я попытался в конце этого, и получил тот же результат, что и предыдущий, недопустимое использование Null в случае пустой ячейки
SELECT [ListName] AS [List name]
FROM [Database$]
WHERE CDATE([ClipDate]) BETWEEN "01/09/2017" AND "11/03/2019";
вот экран От, до
В моем листе Excel у меня есть эти даты
Я думаю, что проблема в том, что CDATE
не работает на NULL
значениях, что нормально, и я должен найти способ конвертировать только если не ноль, но я не знаю как.
Кто-нибудь может помочь, пожалуйста?