2009-06-16 2 views
1

Оригинал:Как найти значение набора записей - это число или строка?

Использование VB6

Если rsCardEvent (4) .Value = Str Тогда TimOut = rsCardEvent (4) Else TimeOut = Left (TimOut, 2) & ":" & Mid (TimOut, 3, 2) & ":" & Right (TimOut, 2) End If

Получение Тип ошибок несовпадения. Как найти запись Установленное значение Строка или номер

именно мне нужно

Если номер означает номер печати, как Time Format (HH: MM: SS) еще печати значение строки

Кодирование Справке вышеуказанное условие


Edited Version:

Я работаю с объектом ADO.Recordset и пытаюсь определить тип данных столбца во время выполнения. Мне нужно обрабатывать значение столбца по-разному в моем коде, в зависимости от его базового типа данных. Если значение столбца является строкой, я хочу работать со значением as-is. Если это число, я хочу обработать номер как упакованное время и преобразовать его в формат HH:MM:SS (т. Е. Номер 120537 будет преобразован в строку "12:05:37").

Ниже приведен пример кода, который демонстрирует то, что я хочу достичь. Однако, когда я запускаю этот код, я получаю «Тип несовпадение» ошибку:

If rsCardEvent(4).Value = Str Then 
    TimOut = rsCardEvent(4) 
Else 
    TimeOut = Left(TimOut, 2) & ":" & Mid(TimOut, 3, 2) & ":" & Right(TimOut, 2) 
End If 
+0

Было бы интересно узнать тип TimOut (string?) И тип столбца в вашем запросе. Можете ли вы разместить SQL, а также базовый тип в базе данных поля, которое вы читаете?(Если это только одно поле) – MarkJ

+0

Я добавил перефразированную версию вопроса, но сохранил оригинал, если измененная версия не соответствует оригинальному намерению автора. @Jash, если вы согласитесь, что отредактированная версия соответствует вашим желаниям, и вы не хотите, чтобы я сделал это изменение, я могу удалить оригинал и сохранить отредактированную версию. –

+0

Я немного смущен относительно того, как вы действительно можете получать разные типы данных в rsCardEvent (4). Вы иногда используете другой запрос? Или базовое поле является вариантом поля? Кроме того, ветка Else вашего If полностью игнорирует rsCardEvent, которая выглядит странно. – MarkJ

ответ

0

Как насчет:

If TypeName(rsCardEvent(4).Value) = "String" then 

http://msdn.microsoft.com/en-us/library/5422sfdf.aspx

+0

Если TypeOf rsCardEvent (4) .Value - String then - is not Accepting Error в "TypeOf" и "is String" – 2009-06-16 05:29:49

+0

Yep, TypeOf работает только с объектами, но вы пробовали TypeName, как предложил Джек? – MarkJ

1

Посмотрите на Visual Basic 6 function library. Существуют функции, которые могут помочь вам определить базовый тип значения.

Есть довольно много, но вы можете найти их полезными:

1

на основе this article, если rsCardEvent является набор записей ADO, вы можете проверить Type недвижимость , Что-то вроде этого:

Select Case rsCardEvent(4).Type 
     Case adBSTR, adChar, adVarChar, adWChar, _ 
      adVarWChar, adLongVarChar, adLongVarWChar 
      ' It is a string ' 
     Case Else 
      ' It is not a string ' 
    End Select 
Смежные вопросы