Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: час
А вот от Serge_Gavrilov


Вопрос: Проблемы с датами

Совет: 
...а я пользую функцию типа to_lng и по-любому везде с датами все работает...
' "SELECT * FROM Rates WHERE to_lng(InputDate)=" & to_lng(Format(Now(),"dd.mm.yyyy"))


а собственно Date работает
попробуй с  to_lng, указанным выше, а то с этими датами проблем не оберешься...
- неправильные национальные настройки
- прибабахи SQL по работе только с амрыканскими датами, да еще и ## решетки им дай
... уж и не вспомню, что еще, но меня эта лабуда достала еще в аксес2.0 и я пользую to_lng или to_dbl (если и время надо) а точнее вот такой маленький модуль... в неизменном виде с 1994 года...

Option Compare Database
Option Explicit
Public X, Y, Z

Function to_cur(Num) As Currency
 On Error Resume Next

 to_cur = CCur(Num)
 If Err <> 0 Then to_cur = 0
 If IsNull(Num) Then to_cur = 0
 
 On Error GoTo 0
End Function

'==============

Function to_dbl(Num) As Double
 On Error Resume Next

 to_dbl = CDbl(Num)
 If Err <> 0 Then to_dbl = 0
 If IsNull(Num) Then to_dbl = 0
 
 On Error GoTo 0
End Function

'==============

Function to_int(Num) As Integer
 On Error Resume Next

 to_int = CInt(Num)
 If Err <> 0 Then to_int = 0
 If IsNull(Num) Then to_int = 0
 
 On Error GoTo 0
End Function

'==============

Function to_lng(Num) As Long
 On Error Resume Next

 to_lng = CLng(Num)                 'ВНИМАНИЕ! См. замечание ниже
 If Err <> 0 Then to_lng = 0
 If IsNull(Num) Then to_lng = 0
 
 On Error GoTo 0
End Function

'==============

Function to_sng(Num) As Single
 On Error Resume Next

 to_sng = CSng(Num)
 If Err <> 0 Then to_sng = 0
 If IsNull(Num) Then to_sng = 0
 
 On Error GoTo 0
End Function

'==============

Function to_str(VarStr) As String
 On Error Resume Next

 to_str = CStr(VarStr)
 If Err <> 0 Then to_str = ""
 If IsNull(VarStr) Then to_str = ""

 On Error GoTo 0
End Function

'==============

Function to_date(VarDate) As Date
 On Error Resume Next

 to_date = CDate(VarDate)
 If Err <> 0 Then to_date = 0
 If IsNull(VarDate) Then to_date = 0

 On Error GoTo 0
End Function
 
'==============

  AR 

========
========

Некоторое замечание...
Если использовать CLng() для полной даты, то можете ошибиться.
Например сейчас Now дает
?now()
28.01.2003 13:03:14
В Double это:
?cdbl(cdate("28.01.2003 13:03:14"))
37649,543912037 
CLng() даст  37650, т.е. другую дату:
?cdate(37650)
29.01.2003 
Надо еще Int пользоваться
?сLng(Int(now()))
37649 
  Serge_Gavrilov


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.