Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1169 / 2272 ツリー ←次へ | 前へ→

【8460】CSVデータをテーブルに上書きしたい ゆずぽん 06/8/16(水) 11:38 質問[未読]
【8462】Re:CSVデータをテーブルに上書きしたい 小僧 06/8/16(水) 13:08 発言[未読]
【8466】Re:CSVデータをテーブルに上書きしたい ゆずぽん 06/8/16(水) 21:25 質問[未読]
【8467】Re:CSVデータをテーブルに上書きしたい 小僧 06/8/16(水) 22:23 回答[未読]
【8468】Re:CSVデータをテーブルに上書きしたい ゆずぽん 06/8/16(水) 22:53 お礼[未読]
【8469】Re:CSVデータをテーブルに上書きしたい ゆずぽん 06/8/16(水) 23:00 お礼[未読]

【8460】CSVデータをテーブルに上書きしたい
質問  ゆずぽん  - 06/8/16(水) 11:38 -

引用なし
パスワード
   マスタテーブルに、CSVデータを上書きしたいのですが方法が良く分かりません。

 Private Sub コマンド6_Click()

 マスタテーブルの全レコードを削除
       ↓
 マスタテーブルにCSVファイルをインポートする
 (先頭行はフィールド名として使用しない)
 (区切り記号付…フィールドの区切り記号:カンマ テキストの区切り
  記号:”)
  
 End Sub

という内容です。上書きができればコピー&ペーストでも構いませんが、
CSVのレコード数は毎回多くも少なくも変わるため、インポートが一番良いのかなと思いました。
上記の操作は手動ではできましたが、コマンドボタンを押すと自動的に処理されるようにしたいので、宜しくお願いいたします。

【8462】Re:CSVデータをテーブルに上書きしたい
発言  小僧  - 06/8/16(水) 13:08 -

引用なし
パスワード
   ▼ゆずぽん さん:

> 宜しくお願いいたします。

何をお願いするのですか?

掲示板の上の方にある基本方針のリンク先です。
http://www.vbalab.net/bbspolicy.html

「丸投げ」に相当していませんか?


…インポートに関してはVBAで行うとすると
TransferTextメソッド がヒントになるかと思われます。

全レコード削除については 削除クエリ をVBAから実行する事が可能です。

上記方法で行き詰ってしまったら現在どの様なコードを書いて、
どのようにうまくいかない(エラー箇所、エラーコード等)を提示すると
回答がつきやすくなるかと思いますよ。 

【8466】Re:CSVデータをテーブルに上書きしたい
質問  ゆずぽん  - 06/8/16(水) 21:25 -

引用なし
パスワード
   ▼小僧 さん:
質問箱のルールを知らず「丸投げ」な質問をしてしまいすみませんでした。
訂正前の投稿の件もありがとうございます。
インポートのメソッドが解りましたので早速書いてみましたが、
実行時エラー2391 貼り付け先の"データテーブル"には"F1"フィールドがありません。というエラーが出てしまいます。(フィールド数はテーブルCSV共に34個でズレなどはありませんでした)
ヘルプを開いても何も表示されず、試しに手動で同様の操作をしてみると、エラーは出ませんでした。
VBAは下記の通りに書いています。

Private Sub コマンド6_Click()

DoCmd.OpenQuery "データテーブル削除クエリ", acViewNormal
DoCmd.Close acQuery, "データテーブル削除クエリ", acSaveYes
DoCmd.TransferText acImportDelim, , "データテーブル", "C:\Documents and Settings\AAA\デスクトップ\データ管理\y.csv"
  
End Sub


エラーコードの意味はヘルプ意外で調べることはできるのでしょうか?
エラーの意味がわかると助かります。

【8467】Re:CSVデータをテーブルに上書きしたい
回答  小僧  - 06/8/16(水) 22:23 -

引用なし
パスワード
   ▼ゆずぽん さん:
こんばんは。

> 質問箱のルールを知らず

いえいえ。あちらに書いてあった通り、
こちらの掲示板は主催者の谷さんの「助け合いましょう」というのが基本方針です。
今回のご投稿の様に「何をしていて」「どうエラーが出たのか」が
明記されていますと、当方以外の回答者の方も返答をし易くなると思われますよ^^


>実行時エラー2391 貼り付け先の"データテーブル"には
> "F1"フィールドがありません。というエラーが出てしまいます。
> DoCmd.TransferText acImportDelim , , _
> "データテーブル", "C:\Documents and Settings\AAA\デスクトップ\データ管理

さて、既存のテーブルにデータを入れる際には
もう一工夫必要となります。

手動でインポートする際に「テキストインポートウィザード」
という画面が出ませんでしたでしょうか。
こちらを使ってインポートするテーブル名などを指定して
「完了」の一歩手前まで画面を進めます。

その状態で左下にある「設定」というボタンを押すと
「yインポート定義」という画面が出ると思います。

「保存」ボタンを押すと名前を指定するように促されるので
仮に「定義1」という名前を付けて保存します。

後は TransferTextメソッドにて、この定義を指定してあげると
お望みの動作になるかと思われます。

DoCmd.TransferText acImportDelim , "定義1", "データテーブル", …


>DoCmd.OpenQuery "データテーブル削除クエリ", acViewNormal
>DoCmd.Close acQuery, "データテーブル削除クエリ", acSaveYes

クエリは大きく分けると、選択クエリ(参照用のクエリ)と
アクションクエリ(更新用のクエリ)となります。
特別な設定をしていなければ
アクションクエリの OpenQueryメソッド はCloseをしなくても大丈夫だと思われます。

【8468】Re:CSVデータをテーブルに上書きしたい
お礼  ゆずぽん  - 06/8/16(水) 22:53 -

引用なし
パスワード
   ▼小僧 さん:
できました!
ありがとうございます。
実は、今回の操作をしたく色々な本を買いましたが、いまいち理解できずに一ヶ月も費やしていたところでした。それが1日で解決してしまうなんて、小僧さんスゴイですね!
今までエクセルでデータ管理をしていましたがデータが重いので、アクセスで同じようなデータベースを作ってみようと思ったわけですが…。エクセルとアクセスでVBAの書き方が色々違うようで戸惑っていました。また何かありましたら宜しくお願いします。
今回はご親切にどうもありがとうございます。

【8469】Re:CSVデータをテーブルに上書きしたい
お礼  ゆずぽん  - 06/8/16(水) 23:00 -

引用なし
パスワード
   ▼小僧 さん:
>アクションクエリの OpenQueryメソッド はCloseをしなくても大丈夫だと思われます。

Closeの文を消しても動作は変わりませんでした。
ありがとうございます。

1169 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078214
(SS)C-BOARD v3.8 is Free