Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Формат даты для выборки из access Добавлено: 30.05.05 17:45  

Автор вопроса:  Илья
Народ, что не правильно?
Заполняю базу через recordset:

rs.Fields("ДатаВызова").Value = Format(ДатаВызова.Text, "dd.mm.yyyy")


Потом пытаюсь отфилтровать записи по дате:

ConStr = "(ДатаВызова>'" & Format(DateStart, "dd.MM.yyyy") & "' or ДатаВызова<'" & Format(DateStop, "dd.mm.yyyy") & "');"

Set rsprint = New ADODB.Recordset
With rsprint
  .ActiveConnection = cnn
  .LockType = adLockReadOnly
  .CursorType = adOpenDynamic
  .Source = "SELECT * FROM tabl WHERE " & ConStr
  .Open
End With


Появляется ошибка о несоответствии формата данных и запроса....

Данные берутся из MaskEdBox Format: Date (dd.mm.yyyy), Формат в Access Короткий формат даты, Маска Ввода:00.00.0000;0;_

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Mihalыch



ICQ: 373-509-101 

Вопросов: 56
Ответов: 330
 Профиль | | #1 Добавлено: 30.05.05 18:14
Вообще дату в запросе нужно заключать в решетки #, в этом случае ошибки несоответствия типов не будет. Но лично у меня не получалось выбрать записи соответствующие указанному условию, пробовал и DateValue() и CDate(). Поэтому я делаю так,
"SELECT * FROM tabl WHERE Date > #" & ChengeDateFormat (Date_1) & “# OR Date < #“ & ChengeDateFormat (Date_2) & “#”

Private Function ChengeDateFormat(DateValue As Date)
    ;Dim aUnit() As String
    aUnit = Split(DateValue, ".";)
    'разбиваем дату на составляющие
    ChengeDateFormat = aUnit(1) & "/" & aUnit(0) & "/" & aUnit(2)
    'меняем местами число и месяц, заменяем . на /
    'т.е. приводим дату к ихнему формату
End Function

Ответить

Номер ответа: 2
Автор ответа:
 Илья



Вопросов: 5
Ответов: 6
 Профиль | | #2 Добавлено: 31.05.05 13:59
Пробовал не сработало, может поле в access не правильно настроил? формат поля: короткий формат даты, маска 00.00.0000;0;_ хотя в конструкторе прописывается 00/00/0000;0;_ потом автоматом при сохранении перекидывает в 00.00.0000;0;_.

поменять . на / можно было просто организовав составив строку запроса следующим образом:

Format (Data, "dd\/mm\/yyyy";)

Просматриваю строку запроса не проходит не 22/10/2005 не 22.10.2005 :-(.

У кого еще какие по

Ответить

Номер ответа: 3
Автор ответа:
 Илья



Вопросов: 5
Ответов: 6
 Профиль | | #3 Добавлено: 31.05.05 15:43
Все у меня работает строка

ConStr = ";(ДатаВызова Between #" & Format(DateStart, "dd\/mm\/yyyy";) & "# And #" & Format(DateStop, "dd\/mm\/yyyy";) & "#)"


Или

ConStr = ";(ДатаВызова Between #" & ChengeDateFormat(DateStart) & "# And #" & ChengeDateFormat(DateStop) & "#)

Rs.Source = "SELECT * FROM tabl WHERE " & ConStr

Private Function ChengeDateFormat(DateValue As Date)
    ;Dim aUnit() As String
    aUnit = Split(DateValue, ".";)
    'разбиваем дату на составляющие
    ChengeDateFormat = aUnit(1) & "/" & aUnit(0) & "/" & aUnit(2)
    'меняем местами число и месяц, заменяем . на /
    'т.е. приводим дату к ихнему формату
End Function


Спасибо за консультацию товарищу Mihalыch - очень помогло

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам