Страницы: 1
RSS
Формат времени для импорта данных из Access
 
Здравствуйте!
Я сделала форму, в которой пользователь выбирает 2 даты из календаря, между которыми он хочет импортировать данные из БД Access в Excel
С датами без времени получилось.
А как сделать то же самое, но с учетом времени?
На форме я по умолчанию сделала времена 00:00:00 и 23:59:59 (ввела вручную в TextBox). В случае изменения - пользователь сам исправляет эти значения. Может быть, для времени есть свои инструменты на ToolBox? (как календарик для даты)

Так выглядят исходные данные для даты и времени

Код
z = TextBox1.Value 'время для ранней даты
b = TextBox2.Value 'время для поздней даты
x = Format(UserForm1.DTPicker1.Value, "\#MM\/DD\/YYYY\#") 'ранняя дата
y = Format(UserForm1.DTPicker2.Value, "\#MM\/DD\/YYYY\#") 'поздняя дата
 

Вот как я записала выбор даты без времени
Код
 .CommandText = Array("SELECT Данные.Time, Данные.`4A1` " & "FROM Данные where Данные.Time BETWEEN " & x & "And" & y)

А как сделать выбор данных с учетом времени? Интересует, есть ли какой-то хитрый формат для отбора времени из Access. Потому что для даты оказывается формат такой -  MM/DD/YYYY

Спасибо!
 
так попробуйте

Код
CommandText = Array("SELECT Данные.Time, Данные.`4A1` " & "FROM Данные where Данные.Time BETWEEN cdate('" & x & "') And cdate('" & y & "')") 

Код
x = Format(UserForm1.DTPicker1.Value, "mm.dd.yyyy hh:mm:ss") 'ранняя дата
y = Format(UserForm1.DTPicker2.Value, "mm.dd.yyyy hh:mm:ss") 'поздняя дата
Изменено: Watcher_1 - 12.08.2014 09:54:15
 
Watcher_1, у меня как-то странно, вообще, теперь даты отображаются - не такие, какие я выбирала на форме.
А где учитывается время, которое у меня изначально было записано в переменных b и z? Просто если пользователь введет свое время - его надо учесть
 
тогда добавляем

Код
Array("SELECT Данные.Time, Данные.`4A1` " & "FROM Данные where Данные.Time BETWEEN cdate('" & x " " & z & "') And cdate('" & y & " " b & "')" 
 
Используйте эту функцию для преобразования дат в vba при составлении конструкций запросов
Код
Function DataSql(dt) As String
DataSql = "#" & Format(dt, "mm\/dd\/yy hh\:mm\:ss") & "#"
End Function
 
 
Watcher_1, я попробовала Ваш код, добавив скобку в конце, но он сначала ругался в этих местах (выделено красным)
Array("SELECT Данные.Time, Данные.`4A1` " & "FROM Данные where Данные.Time BETWEEN cdate('" & x " " & z & "') And cdate('" & y & " " b & "')" ;)
я добавила амперсанды:

Array("SELECT Данные.Time, Данные.`4A1` " & "FROM Данные where Данные.Time BETWEEN cdate('" & x &" " & z & "') And cdate('" & y & " " &b & "')" ;)

Вылезла Общая Ошибка ODBC
 
а если так?
Код
Array("SELECT Данные.Time, Данные.`4A1` " & "FROM Данные where Данные.Time BETWEEN cdate('" & x & " " & z & "') And cdate('" & y & " " & b & "');" )
 
поместите приведенную мной функцию и синтаксис будет такой
------------

Код
x = DataSql(UserForm1.DTPicker1.Value)
where Данные.Time BETWEEN" & x & " And " & y 
 
Watcher_1, все равно общая ошибка((
 
Цитата
B.Key пишет: поместите приведенную мной функцию и синтаксис будет такой
У меня же в запросе идет конвертация даты с помощью cdate...
 
нам нужна не дата как тип, нам нужна строка в правильном формате
Страницы: 1
Наверх