- ベストアンサー
VB script 型が一致しません。: 'cdate'
- Microsoft VBScript 実行時エラー エラー '800a000d' 型が一致しません。: 'cdate' というエラーが出てコンパイルができません。
- CDATEの使い方を調べてもうまくできませんでした。初歩的な質問ですが、ご回答いただけるとうれしく思います。
- 提供されたコードにおいて、oRec_Q_Reg1Data.Fields("D_time")とCDate( w_jyukobistart & "0:0:0")の型が一致していないためエラーが発生しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
CDate関数に渡す引数が、日付型として認識できていないのだと思います。「w_jyukobistart」の中身がCDateで認識可能な日付になっているか確認してみてください。 > CDate(w_jyukobistart & "0:0:0") また、仮にw_jyukobistartが"2009/06/02"という日付をあらわす文字列の場合、このままだとCDateに渡されるのは "2009/06/020:0:0" という文字列になり、認識不可能になります。 CDate(w_jyukobistart & " 00:00:00") このように日付と時刻の境界に半角のスペースを一個入れればよいかと。 CDate(w_jyukobistart) これだけでもよいと思いますけどね。 それと気になったことがひとつ。 oRec_Q_Reg1Data.Fields("D_time") こっちはDate型に変換されていませんが大丈夫ですか? さらに追加。 If~End IfとDo~Loopの範囲が交差してしまっています。 コードの写し間違いかもしれませんが念のため。
その他の回答 (1)
- うぃず(@Wizard_Zero)
- ベストアンサー率69% (344/495)
oRec_Q_Reg1Data.Fields("D_time") これ自体が日付型になっていればCDateしなくても大丈夫です。 MsgBox TypeName(oRec_Q_Reg1Data.Fields("D_time")) とでもして、Date型になっているか確認してみてください。 > 今回のエラー部とはまた違うエラーなのでしょうか? そうだと思います。エラーメッセージにエラーが発生している行数が表示されていませんか? コードを見ると、レコードセットが3種類ありますね。 oRec_Q_W_Reg1Data oRec_Q_W_Reg2Data oRec_Q_W_RegWData (これはoRec_Q_W_Reg1Dataの打ち間違え?) oRec_Q_W_Reg1Dataについては、EOFなどで調査しないでFieldsプロパティにアクセスしていますが、これがレコードの範囲を超過していたりしていませんか?
お礼
日付型になっていたのでCDateしなくてもよくなりました。 今回のレコードセットでは、データのもってき方自体が違っており、 今回のエラーメッセージとは別の問題が発生しました。 今回の質問は今回で打ち切らせていただきたいと思います。 ただ非常に参考になる意見をご教授いただき緩瀉しております。
補足
回答ありがとうございます。早速コーディングしてみると、 CDate(w_jyukobistart & " 00:00:00") で半角を入れました。 そうすると、「ADODB.Recordset エラー '800a0bcd' BOF と EOF のいずれかが True になっているか、または現在のレコードが削除されています。要求された操作には、現在のレコードが必要です。」 というエラーが出ました。 今回のエラー部とはまた違うエラーなのでしょうか? すいませんが、分かったら、返信お願いいたします。 >>oRec_Q_Reg1Data.Fields("D_time") こっちはDate型に変換されていませんが大丈夫ですか? はDate型にしないとだめでしょうか? もしする場合は CDate(oRec_Q_Reg1Data.Fields("D_time"))でよろしいのでしょうか? >>If~End IfとDo~Loopの範囲が交差してしまっています。 私のタイプミスです。指摘ありがとうございます。 回答いただけてありがとうございます。 もしよろしければ、再度ご回答下さい。