powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / the conversion of a varchar data type to a datetime data type resulted in an out-of-rane v
15 сообщений из 15, страница 1 из 1
the conversion of a varchar data type to a datetime data type resulted in an out-of-rane v
    #39116413
bibl2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет!
Помогите, пожалуйста, новичку.
Куски кода, касающиеся проблемы:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
'Блок, рассчитывающий отчетный период
'Текущая дата
CurDate=Date
dd=mid(CurDate,1,2)
mm=mid(CurDate,4,2)
yy=mid(CurDate,7)

'Конец отчетного периода
LDate=Date()-1
ldd=mid(LDate,1,2)
lmm=mid(LDate,4,2)
lyy=mid(LDate,7)

'Формирование даты
LDate = ldd & "." & lmm & "." & lyy
LSQLDATE = lyy & "-" & lmm & "-" & ldd & " 12:00:00.000"

'Начало отчетного периода
FDate=Date()-7
fdd=mid(FDate,1,2)
fmm=mid(FDate,4,2)
fyy=mid(FDate,7)
	
'Формирование даты
FDate = fdd & "." & fmm & "." & fyy
FSQLDATE = fyy & "-" & fmm & "-" & fdd & " 12:00:00.000"
FLDate=dd & mm & yy
'Конец блока
Set rs = objConnection.Execute("select count (*) As N from dbo.events where EVENTID in ('624', '4720') and EVENT_DATE>='" & FSQLDATE & "' and EVENT_DATE<='" & LSQLDATE & "';")
	N = CStr(rs("N"))


Скриншот с ошибкой во вложении.
...
Рейтинг: 0 / 0
the conversion of a varchar data type to a datetime data type resulted in an out-of-rane v
    #39116428
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bibl2008Куски кода, касающиеся проблемы:
Для отладки замените
Код: javascript
1.
Set rs = objConnection.Execute("select count (*) As N from dbo.events where EVENTID in ('624', '4720') and EVENT_DATE>='" & FSQLDATE & "' and EVENT_DATE<='" & LSQLDATE & "';")


на
Код: javascript
1.
2.
3.
strSQL = "select count (*) As N from dbo.events where EVENTID in ('624', '4720') and EVENT_DATE>='" & FSQLDATE & "' and EVENT_DATE<='" & LSQLDATE & "';"
MsgBox "'" & strSQL & "'"
Set rs = objConnection.Execute(strSQL)


и покажите, что именно передаётся серверу.
...
Рейтинг: 0 / 0
the conversion of a varchar data type to a datetime data type resulted in an out-of-rane v
    #39116446
bibl2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот,что вышло:
...
Рейтинг: 0 / 0
the conversion of a varchar data type to a datetime data type resulted in an out-of-rane v
    #39116450
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bibl2008,
Код: vbnet
1.
dd=mid(CurDate,1,2)

с чего ты решил, что в dd попадет именно день? Это будет зависеть от региональных настроек в панели управления и день там совсем не гарантируется.


Код: vbnet
1.
strSQL = "select count (*) As N from dbo.events where EVENTID in ('624', '4720') and EVENT_DATE BETWEEN '" & Format(Curdate, "yyyy-mm-dd") & "' and '" & Format(LDate, "yyyy-mm-dd") & "'"
...
Рейтинг: 0 / 0
the conversion of a varchar data type to a datetime data type resulted in an out-of-rane v
    #39116451
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bibl2008вот,что вышло:вот видишь. У тебя день вместо месяца
...
Рейтинг: 0 / 0
the conversion of a varchar data type to a datetime data type resulted in an out-of-rane v
    #39116453
bibl2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, уже понял в чем причина. Подскажите, как исправить - пока не могу сообразить?
...
Рейтинг: 0 / 0
the conversion of a varchar data type to a datetime data type resulted in an out-of-rane v
    #39116461
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть функции Day, Month, Year
(format что-то не захотел, видимо нет в VBS)
...
Рейтинг: 0 / 0
the conversion of a varchar data type to a datetime data type resulted in an out-of-rane v
    #39116534
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2015-23-11Т12:00:00.000
...
Рейтинг: 0 / 0
the conversion of a varchar data type to a datetime data type resulted in an out-of-rane v
    #39116561
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
Код: vbnet
1.
2015-23-11Т12:00:00.000

необязательно
...
Рейтинг: 0 / 0
the conversion of a varchar data type to a datetime data type resulted in an out-of-rane v
    #39116695
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bibl2008как исправить
Во-первых, используйте строгую типизацию. Иначе Ваше гениальное
Код: vbnet
1.
dd=mid(CurDate,1,2)


проживёт до первого изменения региональных настроек.
Во-вторых, не делайте вручную то, для чего есть функция FormatDateTime.
...
Рейтинг: 0 / 0
the conversion of a varchar data type to a datetime data type resulted in an out-of-rane v
    #39116926
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
у клиента VB S . Откуда строгая типизация...
...
Рейтинг: 0 / 0
the conversion of a varchar data type to a datetime data type resulted in an out-of-rane v
    #39116929
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bibl2008,
если в системе, где выполняется скрипт, установлена русская локаль, то можно и так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
'Блок, рассчитывающий отчетный период
dim prevLocale
prevLocale = SetLocale("ru-ru")

'Текущая дата
CurDate=Date
dd=mid(CurDate,1,2)
{ ... ваш код без изменений}

SetLocale(prevLocale)
'Конец блока


Но правильнее, как указал Shocker.Pro, использовать функции для работы с датами Year, Month, Day.
Код: vbnet
1.
2.
3.
4.
5.
6.
CurDate = Date()
dd = Right("0"& Day(CurDate), 2)
mm = Right("0"& Month(CurDate), 2)
yy = Year(CurDate)

Wscript.Echo "SQLTIMESTAMP: '"& yy &"-"& mm &"-"& dd &" 12:00:00.000"& "'"
...
Рейтинг: 0 / 0
the conversion of a varchar data type to a datetime data type resulted in an out-of-rane v
    #39116970
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотищау клиента VB S . Откуда строгая типизация...
Вот именно. Её надо ввести в порядке самодисциплины. Чтобы избегать соблазнов на месте строкового аргумента отдавать дату и прочее - одним словом, избежать неявных преобразований типов, которые выполняются порой вовсе не так, как рассчитывает автор, а делать всё это явно. Дополнительный CStr() рук не оборвёт - он всё равно выполняется,- а однозначности добавит.
...
Рейтинг: 0 / 0
the conversion of a varchar data type to a datetime data type resulted in an out-of-rane v
    #39117066
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
OFF... и перекроить код VBS наподобие VB/VBA ;-)

ИМХО, _лишние_ "преобразования типов" делают скрипт менее читабельным.
Да и производительность вроде как проседает:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
option explicit

dim CurDate, strCurYear, UpBound, t, z

CurDate = Date()
UpBound = 1000000


REM implicit "conversion"
t = timer()
for z = 1 to UpBound
    strCurYear = right( CurDate, 4 )
next
wscript.echo "implicit: "& timer() -t


REM explicit "conversion"
t = timer()
for z = 1 to UpBound
    strCurYear = right( CStr(CurDate), 4 )
next
wscript.echo "explicit: "& timer() -t


REM implicit: 2,296875
REM explicit: 2,515625


...
Рейтинг: 0 / 0
the conversion of a varchar data type to a datetime data type resulted in an out-of-rane v
    #39118001
bibl2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за помощь! Вопрос решен.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / the conversion of a varchar data type to a datetime data type resulted in an out-of-rane v
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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