• 締切済み

accessのデータ変換について

access2000を使用しており悩んでおります。 年月日_text(テキスト型)  20020303 20020404 のデータを日付型にしたいのですが 下記のソースではデータ型が合わないと エラーになります。なぜでしょうか? ソース(抜粋) Dim myRs As New ADODB.Recordset tb.Columns.Append "年月日_Date", adDate myRs![年月日_date] = CDate(myRs![年月日_text]) 

みんなの回答

noname#4564
noname#4564
回答No.3

  # 文字列処理を多用すると、算術演算のみの処理より、10~20倍以上のオーダーで処理速度が遅くなります。 最初に8桁の数値に変換してから除算と剰余で、操作するのが最速です。 Dim lngTmp As Long lngTmp = CLng(myRs.Fields("年月日_text").Value) myRs.Fields("年月日_date").Value = DateSerial(lngTmp \ 10000, (lngTmp Mod 10000) \ 100, lngTmp Mod 100) # As New 宣言も性能を考慮するなら避けた方が無難。 # Accessで作る程度のシステムだから、性能や品質なんかどうでもいい、という割り切った考え方もあるのかもしれませんが。  

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

例えば myRs![年月日_date] = CDate(Mid([年月日_text],1,4) & "/" & Mid([年月日_text],5,2) & "/" & Mid([年月日_text],7,2)) のように[年月日_text]のテキストをMid関数で4桁・2桁・2桁にし"/"を入れ日付型データに合わせる。

  • ducati
  • ベストアンサー率29% (308/1062)
回答No.1

"/"がついていないからと思われます。 一気にCDateとしないで、一度Midで"/"をつけた形にしてみてください。 例: 20020303を「2002/03/03」にする。 strA=myRs![年月日_text] strB=mid(strA,1,4) & "/" & mid(strA,5,2) & "/" & mid(strA,7,2) myRs![年月日_date] = CDate(strB) これでどうでしょうか?

関連するQ&A