- ベストアンサー
アクセス2003で質問です。
超初心者で現在勉強中です。 データ量が多いcsvファイルが3つあり、データが大きすぎてアクセスでインポートさせてしか開けないデータがあります。 そのデータを使って必要なデータのみを抽出したいのですが、アクセスでしか開けないためとても困っています。 アクセスがわからないため是非皆様のお知恵を拝借したく質問させてください。 行いたいのは、3つcsvデータをアクセスに個別に取り込みテーブルにデータを落とし込みファイル名を例えばA・B・Cと名前をつけて保存したとします。 各ABCの名前がつけられているデータのフォーマットは全て同じもので作られていてデータが大量に入っていますが、同じデータ内でもまたABCをあわせたときでもデータが重複しているものもあります。 I:ABCのデータを関連付けさせて重複しているデータのみを抽出したい ※ある条件が完全一致しているもの。例えばフィールド1にIDが入っているとすればIDが重複しているものを抽出しいくつ重複していたかカウントまで行いたい。 II:Iのデータ抽出後、ABCのデータを関連付けさせて重複をしていないデータのみを抽出したい ※重複データがあれば1つだけ(1つのID)のみが抽出されているもの III:後からDというcsvファイルが増えた場合、Iのデータへ追加して重複があるか調べたい。 IV:IIIを追加した場合、再度データが重複していないデータのみを抽出したい また検索ボタンを使わない検索方法を知りたいのです。 例えば最終的に作られる重複していないデータを作った場合、後からデータを検索するのに検索ボタンを使用せずIDを入力すればデータ存在の有無がわかるようにしたい。 沢山書いて本当に申し訳ないのですが、 上記のようなデータを作成する方法を是非教えていただきたいのです。 また、アクセスにデータをうっかり入力した場合すぐに次のレコード?に入力されデータが作られてしまうのにも困っています。 例えば権限者以外データの編集が出来ないようにすることはできないでしょうか? 状況:花子さんはデータの参照のみ 太郎さんはデータの追加や編集をする人 複数の人がデータを触れないようにするにはどうすればよいのでしょうか。 本当にとても困っていて是非皆様のお知恵を拝借させていただきたくこちらに書かせていただいております。 なにとぞ宜しくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
とても全部のご質問には答えられませんが、データのまとめ方で提案があります。 ファイルAのCSVのファイルをインポートしたのち、クエリでフィールドを一個追加(例:式:"ファイルA")してやります。(目的は必要により元の状態のデータを抽出できる様にするためです) これをテーブル作成クエリに変更して、データまとめ用のテーブルを作成します。 以降は、ファイルBのインポートしたCSVにフィールド(値:ファイルB)を追加して、テーブルを作成(クエリのままでもできますが)して、まとめテーブルに追加クエリでデータを追加する作業を行います。インポートしたテーブル、一時的に作成したデータ追加元のテーブルはもう使わないので、削除可能です。 この方法なら、ファイルC、Dが増加してもメインのテーブルは一個だけなので、操作も容易です。 この中でIDの重複が調べたければ、集計クエリにして、IDでグループ化、他の任意のフィールドをカウントに設定してやれば、ID別の重複数が調べられます。データを追加した場合も、クエリを再実行するだけですみます。 上記集計クエリで重複数が1のIDだけ抜き出し、元のテーブルと、その集計クエリのクエリを作成して、IDで結合すれば、重複の無いデータのみ抽出できます。 各クエリの作成の仕方については、書籍を購入してお勉強して下さい。ただ、お手元にAccessが使える環境が無いと、本を読むだけでは身につかないでしょう。
その他の回答 (2)
- chayamati
- ベストアンサー率41% (260/624)
自分はAccess2010なので詳しい説明は出来ません お気持ちはわかりますが一つずつ解決していきましょう 先ずCSVファイルをテーブルに取り込む方法です 二つの方法があります 1.AccessでCSVファイルをインポートする 外部データのインポートまでたどり着けばAccessがなびしてくれます。 2.CSVファイルをエクセルで開いて,Accessのテーブル新規作成からコピペする テキストファイルを開くときファイル名入力枠の右または下の ファイルの種類枠でテキストを選択し先頭行に行を追加して各列の見出しを入力すると準備完了 これをAccessのテーブル新規作成にコピペで作成しこれを閉じるとテキスト名を入力する枠に入力
- PXU10652
- ベストアンサー率38% (777/1993)
「データ量が多いcsvファイルが3つあり、データが大きすぎてアクセスでインポートさせてしか開けないデータがあります。」 Excel2003なら65535件までという制限がありますが、2007以降なら100万件程度まで扱えます。 「I:ABCのデータを関連付けさせて重複しているデータのみを抽出したい」 「重複クエリーウィザード」を使えば簡単に抽出できますが、重複する条件はAとBとCの3ファイル間でしょうか? 重複するかどうかは、2つのテーブル間でしか実行できませんので、AとB、AとC、BとCの重複データを抜き出し、その結果を1つにまとめる必要があります。 「II:Iのデータ抽出後、ABCのデータを関連付けさせて重複をしていないデータのみを抽出したい」 これは「不一致クエリーウィザード」で同様にできますが、上記と同じ理由で、AとBで重複していなくても、それがCにあるかどうかを調べる必要がるので、さらに難しいです。 「III:後からDというcsvファイルが増えた場合、Iのデータへ追加して重複があるか調べたい。 IV:IIIを追加した場合、再度データが重複していないデータのみを抽出したい」 テーブルが増えれば、組み合わせが増えるので、どんどん複雑になります。 「また、アクセスにデータをうっかり入力した場合すぐに次のレコード?に入力されデータが作られてしまうのにも困っています。」 Accessはデータベースソフトなのですから、当然の動作です。無意識にEnterを押して、データを作るのをやめるしかありません。 「例えば権限者以外データの編集が出来ないようにすることはできないでしょうか?」 Accessでロックができても、データを入力しているオリジナルがcsvファイルではロックしようがありません。 「本当にとても困っていて是非皆様のお知恵を拝借させていただきたくこちらに書かせていただいております。」 お気持ちは分かりますが、「超初心者で現在勉強中です」という方に、Accessの専門用語で説明すること自体が難しいです。もっと具体的に、『○○したいがエラーが出るので、このSqlのどこが間違っているのか教えてほしい』とかなら、答えようがあるのですが...
お礼
回答ありがとうございました。 PCにアクセス2003は入っているのですが、エクセルワード以外使ったことがなく、エクセルで開けないためアクセスを使わざる得なくなり本当に困り果てています。 データの追加方法もとても丁寧にご説明いただきありがとうございました。 アクセスですが今後はすこしずづでも勉強していきたいと思います。