Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка преобразования типов / 7 сообщений из 7, страница 1 из 1
27.06.2016, 18:11
    #39263116
Alex_men
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка преобразования типов
Доброго времени суток, уважаемые форумчане!

Есть проект долгое время крутился на ХР и 2000 винде. Но время течет сервак поменял на 2008R2. и посыпались ошибки (на прикрепленном скриншоте). Часть ошибок устраняется дополнительным преобразованием например:

Был код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
   Dim dat As Variant    

     dat = "'" & (Format(Date, "yyyy-mm-dd hh:mm:ss")) & "'"
    
    rst.Open "SELECT count(dbo.val_op_cont.op_id) as N " & _
             "FROM dbo.val_op_cont " & _
             "WHERE dbo.val_op_cont.op_sysdate<" & dat & " ", _
    Cn, adOpenStatic, adLockReadOnly



Работал, себе, работал. Теперь он работает только в таком виде:

Код: vbnet
1.
2.
3.
4.
5.
6.
    dat = "'" & (Format(Date, "yyyy-mm-dd hh:mm:ss")) & "'"
    
    rst.Open "SELECT count(dbo.val_op_cont.op_id) as N " & _
             "FROM dbo.val_op_cont " & _
             "WHERE dbo.val_op_cont.op_sysdate<" & Cdate(dat) & " ", _
    Cn, adOpenStatic, adLockReadOnly



Правда такое преобразование тоже не всегда проходит ровно и все равно идет ошибка.

Но тотальность этой ошибки на водит на мысль, что может дело в используемых библиотеках или в типе переменной Variant.

Подскажите где искать? что поменялось.
...
Рейтинг: 0 / 0
27.06.2016, 18:19
    #39263120
Vladimir Baskakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка преобразования типов
вывести мессэдж боксом
"SELECT count(dbo.val_op_cont.op_id) as N " & _
"FROM dbo.val_op_cont " & _
"WHERE dbo.val_op_cont.op_sysdate<" & Cdate(dat) & " "

Скормить серверу в среде, посмотреть на что ругнется.

Ораклу бы явно не понравился формат даты, или отсутствие кавычек.

или переходить на параметризованные запросы и биндить параметры, это правильнее.
...
Рейтинг: 0 / 0
27.06.2016, 18:25
    #39263122
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка преобразования типов
Вообще, минуты при форматировании обозначаются как "n", а "m" - это месяц.

Была какая-то фишка, что mm после hh расцениваются как минуты, но может в данном случае не работает?
...
Рейтинг: 0 / 0
27.06.2016, 18:27
    #39263126
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка преобразования типов
А работа CDate зависит от региональных настроек на локальном компе. Дальнейшее неявное преобразование в строку из даты - тоже. Так что ни в коем случае нельзя так делать, никаких неявных преобразований.

Все остальное сказал Vladimir Baskakov
...
Рейтинг: 0 / 0
27.06.2016, 18:29
    #39263127
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка преобразования типов
Код: vbnet
1.
 Dim dat As String

не балуйтесь неявными преобразованиями, не ведет это ни к чему хорошему, повторяю!
...
Рейтинг: 0 / 0
27.06.2016, 18:31
    #39263130
Alex_men
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка преобразования типов
Shocker.Pro,

Спасибо. Буду пробовать.
...
Рейтинг: 0 / 0
28.06.2016, 11:43
    #39263581
Alex_men
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка преобразования типов
Alex_men,

Спасибо помогло, дело действительно было в Variant.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка преобразования типов / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]