Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запрос к DBF файлу с датой в условии. / 3 сообщений из 3, страница 1 из 1
26.12.2013, 13:17
    #38513030
Feanaro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос к DBF файлу с датой в условии.
Всем доброго дня.

Вот уже битый час бьюсь как селедка об асфальт над следующей проблемкой.

В процедуре VBA у меня прописан запрос к dbf файлу, мне оттуда надо выцепить строки, с условием на поле даты.

Собственно я пользую следующий код:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim dbf_conn As ADODB.Connection
Dim dbf_RS As ADODB.Recordset

sql_str = "select * from " + newFile + " where dt = Date(2013,12,01)"

Set dbf_conn = New ADODB.Connection
dbf_conn.Provider = "Microsoft.Jet.OLEDB.4.0"
dbf_conn.ConnectionString = "Data Source=" & pathDBF & "; Extended Properties=dBase IV"
dbf_conn.Open

Set dbf_RS = New ADODB.Recordset
    dbf_RS.CursorType = adOpenKeyset
    dbf_RS.LockType = adLockOptimistic

dbf_RS.Open sql_str, dbf_conn



Вот тут VBA кочевряжится и говорит о неверном числе параметров функции DATE(). Хотя, разбирая этот случай, я на нескольких форумах уже находил рекомендации по использованию этой функции именно в таким виде, как у меня в коде выше. Все что находил, в том числе и на этом сайте, не хочет работать:

Код: vbnet
1.
2.
3.
4.
5.
6.
... where dt ={^2013/12/01}...
... where dt ={^'2013-12-01'}...
... where dt ={d'2013/12/01'}...
... where dt ={d'2013-12-01'}...
... where dt ={d`2013/12/01`}...
... where dt ={d`2013-12-01`}...



Много способов было, ни один не работает. Кто-нибудь сталкивался с таким. Пожалуйста, помогите =)
...
Рейтинг: 0 / 0
26.12.2013, 13:50
    #38513094
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос к DBF файлу с датой в условии.
Использование Date() должно быть примерно таким:
Код: vbnet
1.
"where dt = " & ... Format(Date(2013,12,01),"ГГГГ-ММ-ДД")

Хотя вот честно не пойму, кто запрещает известные значения сразу через & перечислить

Для DBF - пробовал дату передать в формате для OLEDB и ISO8601?
Код: vbnet
1.
...where dt = #2013-12-01#...


Кстати, для рекордсета неплохо бы выставить
Код: vbnet
1.
.CursorLocation = 3 ' adUseClient
...
Рейтинг: 0 / 0
27.12.2013, 19:11
    #38514641
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос к DBF файлу с датой в условии.
Feanaro
Код: vbnet
1.
sql_str = "select * from " + newFile + " where dt = Date(2013,12,01)"



где ты увидел, такое использование функии Date в ВБА Джет ?
есть DateSerial, которая "работает" так как ты хочешь заставить "работать" Date
Код: sql
1.
2.
?DateSerial(2013,12,01)
01.12.2013 


но зачем тут функция, если тебе и так всё известно про дату ?
нужно просто её вписать в амер.формате, и всё ...
Код: vbnet
1.
sql_str = "select * from " + newFile + " where dt = #12/1/2013#"
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запрос к DBF файлу с датой в условии. / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]