Я пытаюсь прочитать набор записей из базы данных SQL, где некоторые поля имеют тип time (n).
Когда я читаю строку (recordset.Fields(n)
), VBScript останавливается на этом поле с «многошаговой ошибкой».
Я пытался установить переменную с набором записей, поэтому:
Dim a
Set a = recordset.Fields(specific time column)
Я пытался разыграть поле.
Я пытался найти какую-либо информацию об этом конкретном типе, но не могу найти какую-либо информацию об этой временной структуре, кроме того, она содержит часы, минуты, секунды и дробные части.
ReDim iArr(iColumnCount)
While Not objRecordset.EOF
For iColumnIndex = 0 To (iColumnCount-1)
'SQL_FIELDTYPE_TIME is a constant at top of page with value 145
If objRecordset.Fields(iColumnIndex).Type = SQL_FIELDTYPE_TIME Then
'Tried so much over here...
Dim Tme, Str
Set Tme = objRecordset.Fields.Item(iColumnIndex)
iArr(iColumnIndex) = CStr(clDBTime(Tme).Hour)
Set Tme = Nothing
Else
iArr(iColumnIndex) = objRecordset.Fields.Item(iColumnIndex)
End If
If Err.Number <> 0 Then
fLogData("Ophalen data (" + oDB.strDatabaseNaam + ") rij " + _
CStr(objRecordset.AbsolutePosition) + " kolom " + _
CStr(iColumnIndex) + " mislukt: " + Err.Description)
Err.Clear
End If
Next
List.Add i, iArr
i = i + 1
objRecordset.MoveNext 'Next row
Wend
Ошибки, которые я получаю:
- Объект не поддерживает это свойство
- Ошибка нескольких шагов
- Несоответствие типов
и т.д.. и т.д.
Кто-нибудь, кто может мне помочь, как прочитать значение времени из SQL в VBScript?
РЕДАКТИРОВАТЬ: решено! Стоит почти 4 часа пробной ошибки, но есть решение :) 1026 *
Изменен оператор выбора SQL на:
SELECT COL, COL,... (this are the 'usual' columns),CAST(TIMECOL -this is the time(n) column- as varchar),CAST(TIMECOL2 -this is the time(n) column- as varchar) FROM tabel
И внутри кода: TimeValue(read value - from recordset.fields...)
(это для того, чтобы изменить varchar во времени)
И .. это просто прекрасно работает!
Edit2: код набора записей:
if iResCount > 0 and iColumnCount > 0 then
redim iArr(iColumnCount)
while not objRecordset.EOF
for iColumnIndex = 0 to (iColumnCount-1)
iArr(iColumnIndex) = objRecordset.Fields.Item(iColumnIndex)
if Err.Number <> 0 then
fLogData("Ophalen data ("+oDB.strDatabaseNaam+") rij "+cstr(objRecordset.AbsolutePosition)+ " kolom "+cstr(iColumnIndex)+" mislukt: "+Err.Description)
Err.Clear
end if
next
List.Add i, iArr
i = i + 1
objRecordset.MoveNext 'Next row
wend
set oResult = List'CreateObject("Scripting.Dictionary")
end if
И пример вызова функции:
'fGetRecord(DB, Table, Columns, Condition, Field to sort on, Type of sort)
fGetRecord(oHoofdDB,CONST_HDB_STR_TBL_KALENDER,CONST_HDB_STR_KAL_ID+","+CONST_HDB_STR_KAL_NAAM+",CAST("+CONST_HDB_STR_KAL_STARTIJD+" as varchar),CAST("+CONST_HDB_STR_KAL_STOPTIJD+" as varchar)",CONST_HDB_STR_KAL_NAAM+"='"+Naam+"'", "", SORTEER_OPLOPEND)
John