2012-01-04 10 views
3

アクセステーブルの任意の数を更新します。私は、約130のCSVをダウンロードする小さなJavaプログラムを作成しました。次にプログラムは空のファイルを削除します。VBAの作成/私は現在の会社でインターンだし、私の雇用主は、彼らがしている新たな市場のためなどの伝送、費用、クレジット、のデータベースを作成するために私に尋ねた

彼らは、私はすぐに学んでいるのアクセスに自分の仕事の大半を行うが、それは私の得意ではありません。私は彼らの販売の人々のためと自動化のためのいくつかのVBAプログラム/スクリプトを書いた、そして今私はプログラム的にそれを更新するために作ってるんだ、このAccessデータベースにコードを追加します。

問題は、私は/これらのテーブルは私がダウンロードしていたデータで更新するために見ることができる唯一の方法は、個別にそれらのすべて130を構築し、個別にSELECT構築し、個々のレポートのクエリを挿入するようになっています。テーブルがまたは特定の日付範囲のデータがあってもなくてもよいので、しかし、私はすべてのテーブルやクエリを構築する必要があります。プログラミングの背景から来る

、私は私が行うことができるようになりますようにしかし、それは本当に見ていないこの

For each file f in Directory d 
    Get report title 
    If there is a table with the same report title 
     Insert any unique values into that table 
    If there isn't a table with that report title 
     Create it, and then insert unique values into that table 
End 

のような何かができる高レベルの抽象化があるようにのためにそれを大好きですこのようなもの。

私は私

  1. のみのラインアイテムを含む新しいCSVファイル(ヘッダーがありません)
  2. にアウトレポートは、これらのレポート
  3. にリンクされたテーブルを設定して書く別の方法を、検討していますウィザードで缶詰めのインポートを作成する

私はこの会社にもう2週間しか残っていないので、私はこれに対する解決策を見つけるか、または実用的で、ちょうど常にその中にデータがあるはずのレポートの中核となるセットのロジックを調整します。どんな助力/提案も感謝します。

答えて

1

FileSystemObjectオブジェクト(これは、ファイルをループフォルダにもあなたにファイル名を与えることができます)

テーブル定義(データベースからテーブル名を抽出できます)

FileSystemObjectを使用して一時テーブルにファイルをロードすることをお勧めします。次に、TableDefsプロパティを使用して関連テーブルが存在するかどうかを確認します。その場合、Remouが提供しているSQLを使用して、そこにまだ存在しない行だけを挿入することができます。私は上に行くためにするための手順を書き出すために

SELECT * INTO NewTableName FROM TempTableName 

かなり十分ではありませんが、これらの2つのプロパティがすべき:あなたのテーブルが存在しない場合、あなたは、単にデータを使用して新しいテーブルを作成するには、次のSQLを使用することができますあなたが正しい方向に向かい、もしあなたがそれらにこだわっていたら、再び投稿してください。

最高の運:)

0

アクセスを使用すると、例えばのインライン接続を含めることができます。

scn = "[Text;FMT=Delimited;HDR=Yes;DATABASE=Z:\Docs\TXT_CSV]" 

ssql = "SELECT * FROM TestTable " _ 
& "WHERE ID Not In (SELECT ID FROM " & scn & ".[TestIn.CSV])" 

ssql = "SELECT * FROM " & scn & ".[TestIn.CSV] " _ 
& "WHERE ID Not In (SELECT ID FROM TestTable)" 

これは、あなたがいる限り、あなたが一意のフィールド/秒を持っているとして、以前に非常に容易に挿入するだけでなく、それらのレコードを挿入することができることを意味し(列/ s)。

あなたが最も間違いなくあなたのハイレベルの概要が、これらはあなたが必要なエリアのある、トムを述べて何ができる
+0

どのような種類のオブジェクトがscnですか? 編集私はその文字列を認識しますが、それを即座にデータベースに接続するために使用していますか?あなたのコードをもう少し詳しく説明できるかどうか分かります。 – Tom

+0

@Tomあなたが持っているのは、たとえばレコードセットオブジェクトで使用できるSQL文字列です。最終的な文字列をSQLに貼り付けることさえできますクエリデザインウィンドウのビューが表示され、実行されます。これは、あなたが作業している環境がわからないので、完全なコードではなく、同時に2つのソースに接続する例として意図されています。 – Fionnuala

関連する問題