プロが教える店舗&オフィスのセキュリティ対策術

【Access97】取り込みエラー


txtファイルで保存してあるデータをAccessへ取り込む作業をしています。
項目毎の区切りはカンマ区切(,)になっており、データ内容は「数値」「テキスト」「日付」等各種あります。
txt内の「日付」形式が『d-m-y』なのでAccessのフィールド書式も『日付(M)』にしてあるのですが取り込みエラー(データ型の変換エラー)となってしまいます。
そこで、txtファイルをExcelで開いて[データ-区切り位置]で区切り、書式設定で「日付」を『yyyy/mm/dd』に変更してからAccess(フィールド書式を『日付(S)』に変更)へコピーしています。

<例> txtデータ:01-AUG-10 → Access:2010/08/01

この作業を毎回しているのですが、Excel上ではなくtxt上で直接『d-m-y → yyyy/mm/dd』に変換、もしくは『d-m-y』のままtxtから直接Accessに取り込む方法はありませんか?
尚、データは数千件あり「日付」もバラバラな為”置換”機能だとかなりの時間がかかってしまうので”置換”機能は使っていません。

A 回答 (4件)

固定文字列9文字なら「01-AUG-10」から


「01」「AUG」「10」に分けることも可能?。

「AUG」を月変換テーブル12レコードでも作って
「08」にしてやるくらいかと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
そうか、その手がありましたか!! 思いつきませんでした。
別テーブルや変換用データを用意する必要がありますが、Left・Mid・Right関数だったらしょっちゅう使用しているので、これだったら初心者でも出来そうです。

お礼日時:2010/08/20 08:15

Access97ならばテキストファイルをテーブルとして


リンクし、他のテーブルに日付を変換しながら
移し変えればいいのでは。
リンクするときはツールバーのファイルから
外部データの取り込み、テーブルのリンク、
と進み、ファイルの種類をテキストファイル
とし、対象のテキストファイルを選択して
クリックするとリンクウィザードが出るので、
区切りをカンマを選択し、フィールドのオプションで
テキストファイルに項目を設定していなければ
ここでフィールドの名前を設定し、各フィールドは
数値、テキストと設定し、日付をテキストに設定。
以後、完了まで進みます。
一応、フィールドの名前と型を以下のようにします。
数値(数値型)、テキスト(テキスト型)、日付(テキスト型)

次に、同じフィールド名を持つテーブルを作ります。
ただし、日付のフィールドは日付型にしておきます。

コードは以下のような感じですが。
テキストファイルおよび、テーブルの名前を変数に
しておいて、テキストボックスにファイル名、テーブル名を
入れてそれを変数で受け取り、コードに反映するように
しておけばいいのではと思います。たとえば以下ののように、
テキストボックス名をtxファイル名、txテーブル名にして、

Private Sub cmdインポート_Click()
Dim db As Database
Dim rs1 As Recordset
Dim rs2 As Recordset
Dim myTxt As String
Dim myTbl As String

Set db = CurrentDb
Set rs1 = db.OpenRecordset(Me!txファイル名, dbOpenDynaset)
Set rs2 = db.OpenRecordset(Me!txテーブル名, dbOpenDynaset)

rs1.MoveFirst
Do Until rs1.EOF
rs2.AddNew
rs2!数値 = rs1!数値
rs2!テキスト = rs1!テキスト
rs2!日付 = DateValue(rs1!日付)
'あるいは以下までする必要があるかは不明ですが
'必要ならば以下に変更。または必要に応じて変えてください。
'rs2!日付 = Format(DateValue(rs1!日付), "yyyy/mm/dd")
rs2.Update
rs1.MoveNext
Loop
rs1.Close: Set rs1 = Nothing
rs2.Close: Set rs2 = Nothing
db.Close: Set db = Nothing
End Sub


要点は、リンクするときにテキストファイルの日付をテキスト型
に設定しておくことです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
初心者には難しそうですね・・・

お礼日時:2010/08/20 08:15

こんにちは。



あぁ・・・、月がAUGとかになってるんですね・・・。
こりゃ無理です。
VBAでも使わないと・・・。
    • good
    • 0
この回答へのお礼

再度のご回答ありがとうございました。

お礼日時:2010/08/20 08:14

こんにちは。



インポートウィザードの左下のボタンから、詳細設定で日付区切り文字を選べると思いますが・・・。

この回答への補足

[日付順]を『日月年』にしてみたり、[日付区切り記号]を『-』にしてみたり、いろいろやってみましたがやはり同じエラーになってしまいます。

補足日時:2010/08/19 16:46
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!