LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Несоответ...
 Тема: Несоответствие типов данных!!!
 
 15.06.2007 21:04:47
All
4316 сообщения
1-ый


Тема: Несоответствие типов данных!!!
Есть форма "Дата" с одним полем "datavkl", где отображается по умолчанию текущая дата и время. Исправляя в этом поле дату или время хочу сделать выборку из таблицы "obzmeg1_2" и отобразить это в отчете. На событие открытия отчета вставлен следующий код:

Private Sub Report_Open(Cancel As Integer)
If IsNull([Forms]![Дата]![datavkl]) Then
Me.RecordSource = "SELECT * From obzmeg1_2"
Else
Me.RecordSource = "SELECT * From obzmeg1_2 WHERE [vdate]>='" & [Forms]![Дата]![datavkl] & "'"
End If
End Sub

Исправляя в поле формы дату или время, а затем нажимая в форме кнопку "Открыть отчет" выходит следующее окошко "Несоответствие типов данных в выражении условия отбора". Везде, и в таблице и в форме и в отчете формат поля стоит "Полный формат даты". Как быть?

С уважением, Игорь!!!


P.S. Управление датой
Автор: Игорь от 0:00:00 Источник ...
 15.06.2007 21:04:47
All
4316 сообщения
1-ый


RE: Несоответствие типов данных!!!
Надо дату в SQL запросе привести к американскому формату mm/dd/yyyy и и определить в тексте знаком #. Например, "SELECT * FROM table1 WHETE [data1]>#12/10/2003#"





P.S. Управление датой
Автор: Admin от 0:00:00 Источник ...
 15.06.2007 21:04:47
All
4316 сообщения
1-ый


RE: Несоответствие типов данных!!!
Я так понимаю, что надо сделать так:
Me.RecordSource = "SELECT * From obzmeg1_2 WHERE [vdate]>=" & "#" & Format([Forms]![Дата]![datavkl], "mm/dd/yyyy") & "#"
Выходит "Ошибка синтаксиса", а если # поменять на ', то "Несоответствие типа данных...".

А формат поля в самой таблице, форме, отчете тоже надо поменять на американский? Может Вы немного недопоняли. У меня в таблицу в одно поле каждый час загружаются данные в виде даты со временем, т.е. полный формат даты, типа =Now(). Мне надо каждый час вытаскивать данные поступившие в таблицу в течение этого часа в виде отчета. Я сделал обычную форму и поместил туда поле типа свободное и кнопку просмотра отчета. В свойствах этого поля установил: формат поля - полный формат даты, значение поля по умолчанию - =Now(), чтобы при запуске формы в поле отображалась текущая дата со временем. Затем в поле исправляя время, например ставлю 10:00:00 нажимаю Enter и нажимаю кнопку загрузки отчета. У меня как бы по идее должен отображаться отчет с отобранными данными сегодняшнего дня и времени начиная с 10:00:00 и бесконечность. Но выходят вот разные ошибки. У меня есть подобная база, но там дата заносится в одно поле, а время в другое поле и там данные извлекаются посредствам поля со списком, где фиксированно заданы временные промежутки:
([Дата])=Date() And ([Время]) Between #8:00:00# And #8:59:59# и т. д. и нет проблем с извлечением данных в отчет. Но в новой базе все в одном поле и переделывать в такой вид нет смысла и нельзя, потому что на основе этой таблицы повязаны многие связи с др. таблицами и запросами. Поэтому я и прибегнул к решению передавать данные из поля формы в условие запроса в отчете. Но увы, результата нет. Как быть? Может предложите другое решение или лучше все таки добить этот программный код. В одном форуме мне предложили использовать оператор CDbl, но и с ним тоже самое.

С уважением, Игорь!!!


P.S. Управление датой
Автор: Игорь от 0:00:00 Источник ...
 15.06.2007 21:04:47
All
4316 сообщения
1-ый


RE: Несоответствие типов данных!!!
1. В форматах полей тип данных менять не надо, для запросов это не имеет никакого значения.
2. В запросах SQl дата указывается таким образом, например, "([Дата]=#" & Format(Me.Дата, "mm\/dd\/yyyy") & "#)"
3. Можно обрабатывать даты в SQL как числа типа Double. Вообще на сайте есть примеры с датой, попробуйте поискать их через меню поиска.



P.S. Управление датой
Автор: Admin от 0:00:00 Источник ...
 15.06.2007 21:04:47
All
4316 сообщения
1-ый


RE: Несоответствие типов данных!!!
Огромное спасибо!!!
Решение найдено:

SELECT * From obzmeg1_2 WHERE [vdate]>=" & Format([Forms]![Дата]![datavkl],"\#mm\/dd\/yyyy
hh:mm:ss\#")

С уважением, Игорь!!!


P.S. Управление датой
Автор: Игорь от 0:00:00 Источник ...
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Несоответ...
ПоискПоиск  Список форумовСписок форумов  
right