none
Тип данных в VBA RRS feed

  • Вопрос

  • Привет всем... 

    У меня тут такой код.. 

    Dim d(3) As Variant
        
        d(0) = "Null"
        d(1) = "Null"
        d(2) = "2011-04-19 13:58:45"
        d(3) = "Null"
        
        For i = 0 To 3
            If IsDate(d(i)) Then
                sSQL = "INSERT INTO test(datetime1) VALUES('" & d(i) & "')"
                MsgBox sSQL
                cnState.Execute sSQL
            Else
                sSQL = "INSERT INTO test(datetime1) VALUES(Null)"
                MsgBox sSQL
                cnState.Execute sSQL
            End If
        Next

    Выходит такая ошибка  "Преобразование типа данных char в тип datetime привело к значению datetime за пределами диапазона"

    Данный код написан на VBA

    • Изменено Abdukhafiz 17 апреля 2012 г. 9:47
    • Перемещено Abolmasov Dmitry 17 апреля 2012 г. 21:47 (От:Работа в среде Visual Studio)
    17 апреля 2012 г. 9:27

Ответы

  • Ошибка возникает на уровне SQL Server'а поскольку он пытается интерпретировать эту дату как 4 день 19 месяца.

    Это задаётся региональными настройками SQL Server SET DATEFORMAT или SET LANGUAGE.

    Альтернативный вариант решения проблемы - использовать тип данных datetime2 вместо datetime. Начиная с SQL Server 2008 рекомендуется использовать именно его.

    • Предложено в качестве ответа Abolmasov Dmitry 17 апреля 2012 г. 21:46
    • Помечено в качестве ответа Abolmasov Dmitry 18 апреля 2012 г. 8:48
    17 апреля 2012 г. 14:28

Все ответы

  • Здравствуйте.

    В какой строке возникает ошибка? Сама функция IsDate не должна к ней приводить, скорее всего ошибка со вставкой даты в базу данных уже, может формат даты не верен?


    Для связи [mail]

    17 апреля 2012 г. 14:16
  • Ошибка возникает на уровне SQL Server'а поскольку он пытается интерпретировать эту дату как 4 день 19 месяца.

    Это задаётся региональными настройками SQL Server SET DATEFORMAT или SET LANGUAGE.

    Альтернативный вариант решения проблемы - использовать тип данных datetime2 вместо datetime. Начиная с SQL Server 2008 рекомендуется использовать именно его.

    • Предложено в качестве ответа Abolmasov Dmitry 17 апреля 2012 г. 21:46
    • Помечено в качестве ответа Abolmasov Dmitry 18 апреля 2012 г. 8:48
    17 апреля 2012 г. 14:28