2011-04-12 13 views
1

HI、VB6:CDate(日付の一部)がランタイムエラーを返す13

「2010-12-27 23:05:36.0」という文字列があります。 CDate( "2010-12-27 23:05:36.0")のようにCDateで解析すると、エラー13が返されます。 文字列から '.0'を削除すると正常に動作します。

日付の文字列は、 'yyyy-mm-dd'と 'yyyy-mm-dd hh-MM-ss.n'のような形式の日付が混在しているデータベースに由来します。エラー13を取り除くには?それは> 19であれば、>休息を取り除く、その後、最適なソリューションを文字列として日付を格納しないことですCDate関数機能

+0

"最適な解決策は、日付を文字列として保存しないことです"という正しいアドバイスがここにあります。 *少なくとも2つの日付形式についてのあなたの前提が保証されるように、列に 'CHECK'制約を置きます。 – onedaywhen

答えて

1

あなたは文字列の長さをチェックすることができます。すべてのデータベースで日付を処理でき、ADOは日付値を文字列に変換することなく直接返すことができます。日付データが日付タイプとして格納されている場合は、CDateをまったく使用する必要はありません。返されるレコードセットには、基になるデータがDateバリアントとして格納されます。

結局のところ、データが文字列として格納されている場合、DBの組み込み関数を使用して文字列を日付に変換するためにSQL文を変更する可能性があります。 SQL Serverでは、CAST関数とCONVERT関数を使用してこれを行うことができます。

CAST(myDateAsTextField as datetime) 

SQL ServerのDATETIMEデータ型は、1〜3桁で小数点以下の秒を受け入れます。

最後に、CDateを呼び出す前に、文字列の内容を確認し、別の形式に変換することができます。これは、データベースレベルでデータを修正できない場合、最後の手段として使用する必要があります。

5

を適用 -

関連する問題