Accessでcsvファイルをインポートさせようとしています。しかし、「F1フィールドがありません」のようなエラー表示が出て、できません。私の予想では、テーブルの型とcsvファイルの型が違うのではないかと思っています。テーブルには、数値型、テキスト型、日付/データ型があります。
保存したcsvファイルをExcelで開くと日付がApr-01や、2001/06/26となったりしていました。どこかで型変換のようなことをするのでしょうか?csvのことはよく分かりません。どうか、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

回答が遅くなって申し訳ありません。


VBAで行っているという事は、使用しているメソッドは、

DoCmd.TransferText

でしょうか。その場合、CSVファイルにコンマ区切りでフィールド名を挿入したら、

DoCmd.TransferText [acImportDelim],,テーブル名,ファイル名,true…

と、ファイル名の定義の後ろにCSVファイルの一列目をフィールド名として使用するビット(True)を立ててあげる必要があります(注:[acImportDelim]は省略可能です)。
もし設定されていないようでしたら、変更してあげてみてください。
エラーは回避できると思います。
    • good
    • 0
この回答へのお礼

できました!ありがとうございます。
ひょんなことでできるものですね・・・。
でもかなり感動です。

お礼日時:2001/06/27 22:04

Accessのバージョンが不明なのと、どういう手段を使ってインポートしているのかが不明なのでどう回答していいかが難しいです。


とりあえず、、「F1フィールド...」という言葉が出ている事から、ウィザードを使ってのインポートと解釈してアドバイスします。
CSVファイルの1行目からデータのみになっているでしょうか?。
もし、1行目にフィールド名があるのなら、ウィザードのインポート設定で、「先頭行をフィールド名として使う」にチェックしてください。
また、ウィザードのインポート設定で、「フィールドのオプション」でデータ型が指定できますが、フィールドごとに指定してますか?。
この辺が問題なければ、CSVファイルのデータ自体にも問題があるかも知れないので、データの型を全てテキストにしてテストしてみてはどうでしょうか。

この回答への補足

すみません。バージョンはAccess2000です。それと、処理はすべてVBAでやっています。
ファイル名を入力させて、ボタンをクリックすると自動的にインポートされるようにしたいです。
exsとcsvの2通りのインポート処理を作っています。
Excelファイルのインポートはうまく動くんです・・・。

補足日時:2001/06/26 21:05
    • good
    • 0

AccessでCSVファイルをインポートしようとした場合、一列目をフィールド名にしない限り便宜上「F1、F2、F3、F4…」とフィールド名が自動的に振られ、指定されたテーブルの、同名のフィールドへデータを保存していこうとします。

そのため、

1.CSVファイルの一列目にテーブルのフィールド名が列記された列を挿入させる
2.テーブルのフィールド名をF1、F2…と変更する
3.フィールド名をF1、F2…としたインポート用の一時収容テーブルを作成する

のいずれかの対応をしないと「F1フィールドがありません」等のエラーになります。それぞれ特に難しい事はないだろうと思いますが、テーブルをそのままユーザーに参照させるわけでなければ、「2」が最も実用的な対応方だとは思います。とりあえず環境によってどれがいちばん理想的かが変わりますので、いろいろ試してみる事をお勧めします。

この回答への補足

回答ありがとうございます。
ユーザーがテーブルを参照することもあるので、テーブルをいじることはできません。
だからCSVファイルにテーブルのフィールド名を加えてみました。
しかし、それでも「F1フィールドがありません」となります。
Excelファイルのインポートはうまく動くので、それを利用して何とかできないものでしょうか?
VBAでやっています。

補足日時:2001/06/26 20:57
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

Qアクセスの日付/時刻型で標準型を選択した場合のXX/XX/XX 00:00:00の時刻部分が表示されない

アクセスデータベースについてお教え下さい。

アクセスデータベースのフィールドを日付/時刻型のGeneral Date(標準)に設定した場合、たとえば、2002/02/25 00:00:00と入力すると、00:00:00の部分が省略されてしまいますが(00:00:00でないと表示されるのですが)、00:00:00を表示させるには、どのようにしたらよろしいでしょうか

環境は:Windows2000上でAccess2000を使用しています。

Aベストアンサー

プロパティを標準→yyyy/mm/dd hh:nn:ss
と入力してください。
何かあれば補足して下さい。

QCSVファイルをアクセスのテーブルに出力する

こんにちは
Access VBA初心者です。

やりたい処理なのですが
CSVファイルをmdb内であらかじめ作成されているテーブルに出力したいのですが、
最初にTransferTextwでワークのテーブルにインポートして
そのワークテーブルを1レコードずつ読み込みmdbのあらかじめ作成されているテーブルにINSERTしていくという方法しか今思いつきません。
インポートするとワークテーブルはすべてテキスト型になっていますが、
それを違う型の項目にINSERTするということなど可能なのでしょうか?
それとももっとスマートな方法があるのでしょうか?

ざっくりと書いてしまいましたが、よろしくお願いいたします。

Aベストアンサー

1.CSVファイルをリンクする。
2.1で作成したリンクテーブルを元にしてクエリを作成する。
3.2のクエリーを追加クエリーにして、その各項目をデータ取り込みを行うテーブルのレコードを追加する各項目と一致させる。
4.クエリを実行する。

VBAで自動化したい場合、CSVファイル名やパスが毎回同じなら、4だけを実行する形(Docmd.OpenQuery)だけでいいかと思います。

QACCESSで毎回CSVファイルをテーブルにインポートする

ACCESSでGUIで毎回CSVファイルをインポートしていますが、
(テーブル→新規作成→デーブルのインポート)
自動化?VBA?することはできるのでしょうか。
ACCSESSは初心者でよくわかっていません。
よろしくおねがいします。

Aベストアンサー

>「マクロに設定」のやり方がわかりません。
え、そうなんですか。
アクセスを開くと左側に「マクロ」ってありませんか。
そこで新規作成します。
テーブルを削除するとか、クエリを開く(実行する)とか、動作を順番に設定するのです。
任意に実行したいなら、マクロ名は任意で構いません。
mdbを開いたら、必要なときにマクロを実行するだけです。

>こちらはoffのする方法が、チェックを外せばいいということでしょうか。
見つけましたよね。そのチェックを外します。

あのー、とりあえず解説書などお持ちではないですか。
最低限のことはそういう書籍で勉強して欲しいのですが。(マクロがわからないことにびっくりしたので)
ここで一つ一つやり取りするわけにもいかないので。

QSQLローダーで複数のCSVファイルのデータを一つのテーブルにInsertしたい

お世話になります、
以下のようにデータをSQLLDRでインサートしようと思っているのですが、複数のCSVファイルのデータを一つのテーブルにInsertしたい場合にどのようにすればいいか教えてください。

--バッチファイル
sqlldr userid=fmwuser/fmwuser@fmw001 control=ctl/AUTHORITY.CTL log=section1.log data=csv/AUTHORITY.csv

--CTLファイル
LOAD DATA
TRUNCATE
INTO TABLE AUTHORITY
FIELDS TERMINATED BY ','
( AUTHORITYCODE ,AUTHORITYNAME,EXECUTIVE)

CTLファイルでTRUNCATEを付けるとテーブルを初期化してからインサートするからむりですよね...
TRUNCATEをはずすと、データが入っているテーブルに対してSQLLDRは使用できないと怒られるし...

CSVファイルを一つにまとめるしかないのでしょうか?

お世話になります、
以下のようにデータをSQLLDRでインサートしようと思っているのですが、複数のCSVファイルのデータを一つのテーブルにInsertしたい場合にどのようにすればいいか教えてください。

--バッチファイル
sqlldr userid=fmwuser/fmwuser@fmw001 control=ctl/AUTHORITY.CTL log=section1.log data=csv/AUTHORITY.csv

--CTLファイル
LOAD DATA
TRUNCATE
INTO TABLE AUTHORITY
FIELDS TERMINATED BY ','
( AUTHORITYCODE ,AUTHORITYNAME,EXECUTIVE)

CTLファイルでTRUNCATEを付けると...続きを読む

Aベストアンサー

No.1のyujiさんが述べているとうりですが、もう少しヒントをあげます。

・コントロールファイルで、"truncate"ではなく"append"を使うこと。
・コントロールファイルに、"infile"で読み込み対象のファイルを指定。
 "infile"は1コントロールファイルに複数記述できます。

あとは、Oracleのマニュアルをよく読むこと!
マニュアルをよく読めば、この程度のことは全て説明が記載されています。

QBCPでCSV内の文字列をテーブルのDatetime型カラムに取り込む方法

BCPを使用してCSVをテーブルに取込みたいのですが、
CSV内に日付形式の文字列(YYYY/MM/DD)があり、
取込先のテーブルの型はDatetimeになっています。
フォーマットファイルのデータ型は「SYBCHAR」
で設定しているのですが、いざ取込もうとすると、
以下のようなエラーが出てうまく取込めません。

SQLState = 22008, NativeError = 0
Error = [Microsoft][ODBC SQL Server Driver]日付の形式が正しくありません。

フォーマットファイルの設定が悪いのでしょうか?
なんとか回避する方法はないでしょうか。

Aベストアンサー

日付形式がYYYY-MM-DDなら取り込めます。
事前に/を-に置換しないといけませんが・・
<フォーマットファイル>
7.0
1
1 SQLCHAR 0 10 "\r\n" 1 dt

置換しない方法だと
日付フィールドがvarcharとしたテンポラリー用のテーブルを用意してそこにBCPでインポートする。
インポート完了後、本番テーブルに日付フィールドをコンバートしてインサートすればいけると思います。


人気Q&Aランキング

おすすめ情報