2009-06-16 16 views
1

オリジナルレコードセットの値を見つける方法は数値か文字列ですか?

rsCardEvent(4).Valueの=筋力そして TIMOUT = rsCardEvent(4)それ以外 TimeOutの=左(TIMOUT、2)&場合VB6

の使用 ":" &ミッド(TIMOUT、3、2)& ":" &右(TIMOUT、2)

は、型の不一致エラーを取得した場合 終了。ヘルプをコーディング(HH:MM:SS) 他 印刷文字列値

録音設定された値は数時間形式のようにプリント数を意味する場合はまさに私が

を必要とする文字列または数

で見つける方法 上記の条件


編集されたバージョン

私はADO.Recordsetオブジェクトを使用しており、実行時に列のデータ型を決定しようとしています。その基になるデータ型に応じて、コード内で列の値を異なる方法で処理する必要があります。列の値が文字列の場合、そのままの値で作業したい。数字の場合は数字をパックタイムとして扱い、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と基になる型を投稿できますか?(フィールドが1つだけの場合) – MarkJ

+0

質問の言い換えられたバージョンを追加しましたが、私の編集したバージョンが著者のオリジナルの意図に当てはまらない場合に備えてオリジナルを保持しました。 @ジャッシュ、私がこの変更をしても構わないと言って欲しいと思った編集のバージョンの一致に同意するならば、私はオリジナルを削除し、編集されたバージョンを保持することができます。 –

+0

rsCardEvent(4)で実際に異なるデータ型を取得する方法について、ちょっと混乱しています。時には別のクエリを実行していますか?または、基礎となるフィールドがバリアントフィールドですか?また、IfのElseブランチは、奇妙に見えるrsCardEventを完全に無視します。 – MarkJ

答えて

0

あなたはVB6で利用可能なIsNumeric機能を使用することができます。

0

方法について:

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

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

+0

TypeOf rsCardEvent(4).Valueが文字列の場合、 "TypeOf"と "String"にエラーが表示されていることを受け付けていない –

+0

はい、TypeOfはオブジェクトのみで動作しますが、JackのようにTypeNameを試しましたか? – MarkJ

1

Visual Basic 6 function libraryを見てください。基本的な値の型を決定するのに役立つ関数があります。

はかなりの数がありますが、あなたはこれらの便利かもしれません:rsCardEventは、ADOのレコードセットがある場合、

1

this articleに基づいて、あなたは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 
関連する問題