★はじめまして
会社でアクセスを使用している初心者です。
社員データーをアクセスファイルで管理しています。
10人が一つファイルを持って使用しています。
なので、ファイル数は10です。
フィールド(項目)数が128です。
全てのファイルは同じ項目です。
【問題】
(1)社員データーを検索する際に、全てのファイルを開いて検索すると非常に時間がかかります。
(2)社員データーをCSVでエクスポートして、EXCELで集計・分析する際に全てのファイルからエクスポートすると時間がかかります。
【対策】
(1)全てのファイルをまとめようと
まとめファイルを作成して
全てのテーブルをリンクして(10ファイル)
ユニオンクエリでまとめようと思いました。
【結果】
エラーです。
『定義されているフィールドが多すぎます』と表示されます。
【教えてください】
(1)フィールドが多すぎるとユニオンクエリは使用できないのですか?
(2)他に全てのファイルをまとめる方法はないのでしょうか?
ご教授お願いします。
No.1
- 回答日時:
以下の方法では、駄目ですか?
SELECT * FROM TABLE1
UNION
SELECT * FROM TABLE2
UNION
SELECT * FROM TABLE3
UNION
SELECT * FROM TABLE4
UNION
SELECT * FROM TABLE5
UNION
SELECT * FROM TABLE6
UNION
SELECT * FROM TABLE7
UNION
SELECT * FROM TABLE8
UNION
SELECT * FROM TABLE9
UNION
SELECT * FROM TABLE10
回答有難うございます。
教えていただいた方法で、試してみたのですが
エラーです。
『定義されているフィールドが多すぎます』と表示されます。
他に方法はありますか?
宜しくお願いします。
No.2
- 回答日時:
そもそも、同じ構造のテーブルを10個使うなんて設計はしないでしょう。
列[所有者番号]などの列があれば統合できるんじゃないですか?
それに、少なくとも、バックエンドとフロントエンドで擬似的なC/Sシステムで開発。
サーバーにはワークステーションを採用。
そうしないと使えたもんじゃないでしょう。
以上の改変に要する日数は1、2日。1週間もあれば十分。
回答有難うございました。
ご教授お願いします。
『列[所有者番号]などの列があれば統合できるんじゃないですか?』は具体的にどのようにすればよろしいでしょうか
教えてください。宜しくお願いします。
No.3ベストアンサー
- 回答日時:
10個のテーブルの構造が同じという事なので、1つのテーブルにデータをまとめるのが良いのではないでしょうか?
その時、Mdbは別にして実行するMdbとはリンクテーブルにしておくと、良いと思います。
アクセスのデータベースは壊れる事もありますので、データMdbのバックアップを取るのも簡単になりますよ。
現状、わざわざ10個に分けている理由があれば(例えば支店毎にテーブルを分けているなどの場合)識別用のフィールドを追加する必要はあると思います。
後、集計をエクセルに出力しているそうですが、アクセスでやった方が簡単で早いのではないでしょうか?
KeyやIndexなども有効に貼っておかれるとアクセスでの検索の処理速度は早くなります。
外部のデータベースへのテーブル作成クエリーや追加クエリーの実行が可能ですのでデータMdbを作成して、そこへ現在使用しているMdbからデータを追加していけば簡単に出来ますよ。
この回答への補足
回答ありがとうございました。
アクセス初心者で申し訳ございません。
少し補足をさせていただきます。
【補足】
社員データーをアクセスファイルで管理しています。
10人が一つファイルを持って使用しています。
1ファイルあたりの社員データーは300名です。
合計3,000名のデーターです。
ファイルは各支店ごとに分けて使用しています。
フィールド(項目)数が128です。
全てのファイルは同じフィールド(項目)です。
作業内容は社員データーの新規入力・データーの変更(編集)・データーの削除の3つです。
社内サーバーを使用して、各支店で入力しています。
アクセス2003を使用しています。
【回答内容の確認】
確かに、現在の使用方法があまり良くないのではと感じています。
10ファイルのテーブルに300名のデーターを入力編集を行うより、1つのファイルをリンクして入力したほうが良いと思います。
ただ、先輩方が
『アクセスは同時入力ができない』
『同時入力・編集作業をするとデーターが壊れる』
『データーの要領が重くなり作業効率が悪くなる』と聞いているので
1つのファイルに3,000名のデーターが入った状態で
テーブルをリンクしたファイルを10作成して、
同時入力・編集・削除
作業スピード・データー破損は大丈夫でしょうか?
もう一度ご教授お願いします。
No.4
- 回答日時:
<tab_1>
ID___fld_1___fld_2
1____A_______あ
2____B_______い
<tab_2>
ID___fld_1___fld_2
1____C_______う
2____D_______え
この2つをフォームのイミディエイトウインドウで統合することにします。
<tab_new>
ID___owner__fld_1___fld_2
[イミディエイト]
? CnnExecute("INSERT INTO tab_new SELECT * FROM tab_1;")
True
これで、<tab_new>は次のようになります。
ID___owner___fld_1___fld_2
1___________0__A_______あ
2___________0__B_______い
次に、列[owner]の値を1に設定します。
[イミディエイト]
? CnnExecute("UPDATE tab_new Set owner=1;")
True
ID___owner___fld_1___fld_2
1___________1__A_______あ
2___________1__B_______い
同じ、要領で tab2 も tab_new へ追加。
[イミディエイト]
? CnnExecute("INSERT INTO tab_new SELECT * FROM tab_2;")
True
ID___owner___fld_1___fld_2
1___________1__A_______あ
1___________0__A_______あ
2___________1__B_______い
2___________0__B_______い
※[ID]は予め重複を許可!
今度の列[owner]の値を2に設定する要領は少し違います。
? CnnExecute("UPDATE tab_new Set owner=2 WHERE owner=0;")
True
ID___owner___fld_1___fld_2
1___________1__A_______あ
1___________2__A_______あ
2___________1__B_______い
2___________2__B_______い
最後に、
? CnnExecute("UPDATE tab_new Set ID=ID+Owner*10000;")
True
ID__________owner___fld_1___fld_2
10001___________1__A_______あ
10002___________1__B_______い
20001___________2__A_______あ
20002___________2__B_______い
と[ID]をユニークにして'主キー'宣言。
※[ID]を完全連番にしたい場合は、別に再質問されることにして、こんな感じです。
※各社員は、列[owner]が一致するレコードだけを参照するように制限。
こんな感じてよければ、肝心のCnnExecute関数を補足します。
クエリでやってもいいですが、間違った場合など実にヤヤコシイ。
イミディエイトウインドウでSQL文を打ち込むのが一番簡単です。
No.5
- 回答日時:
#3です。
1つのテーブルを10名でリンクを貼って使用する事は実際可能です。
但し、テーブルへのデータ登録はどの様な方法を取られていますか?
直接テーブルを開いて書き込む方法や、フォームから入力していてもテーブルと直結しているような方法だと、おっしゃるように誰かがテーブルを開いていると使用中という事になってしまうかもしれませんね。
通常、3000名ものデータを扱っているのであればデータの保守メンテの面から言っても、直接テーブルに入力するような方法ではなく、1レコードずつ更新するようなフォームが用意されているのではないかと推測します。
(もしそうではない場合は、変更された方がいいと思います)
その場合であれば同じ社員データを別々の人が同時に更新しに行かない限り問題はありません。
アクセスでテーブルを作成する場合(ワークテーブル以外)は、ほとんどの場合このようにデータMdbとプログラムMdbを分けて作成していますが、今まで何ら問題が発生した事がありません。(150名くらいのユーザーで)
もちろんエラー発生時にはロールバックするような記述にしておくと、データは守られますので更に問題ないでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Outlook(アウトルック) 【 Windows 10 】アドレス帳に正しくインポートを完了させたい。 3 2023/04/23 13:41
- その他(データベース) Excel VBA 転記について 1 2022/04/20 16:55
- フリーソフト イーファンビューでwebpファイルが開けません 1 2022/07/12 07:07
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Excel(エクセル) Excelを開くとエラーが出る 2 2022/10/03 16:13
- その他(社会・学校・職場) 誰か聞いてください。 社会人6年目ですが、私はポンコツすぎますか? 上司にとあるAファイルの数式を全 1 2023/08/10 18:25
- Access(アクセス) Access VBA を利用して、フォルダ内のファイルの名称を変更したい 1 2023/08/03 08:27
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
ACCESSで容量が50MBになった...
-
Accessのテーブルデータを一気...
-
アクセス レコードセットを更...
-
ユニオンクエリで複数ファイル...
-
カラム名を取得
-
重複クエリを使ったデータ削除
-
access 特定のレコード数までエ...
-
ビューのソートについて
-
住所のDBテーブル、マスターの...
-
このISAMでは、リンクテーブル・・
-
同テーブルの差分レコードの抽出
-
SQL文の結合(一対多)がわから...
-
削除したテーブルを元に戻すこ...
-
Oracleで上書きImportはできま...
-
ODBC接続で新しいレコードを追...
-
構文エラー : 演算子がありませ...
-
格納するデータ項目数が不定の...
-
同一テーブルのデータを参照し...
-
MYSQLでコード番号を自動でつけ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
Accessのテーブルデータを一気...
-
テーブルで一番古いレコードだ...
-
ビューのソートについて
-
Oracleで上書きImportはできま...
-
accessでレコード更新直後の反...
-
このISAMでは、リンクテーブル・・
-
マテリアライズドビューとスナ...
-
アクセス レコードセットを更...
-
同一テーブルのデータを参照し...
-
htmlコードで書かれた表にphpで...
-
結合テーブルでINSERTする方法...
-
ACCESSで容量が50MBになった...
-
ERROR1062:Duplicate entry.......
-
Accessでの稼働日数計算の方法
-
削除したテーブルを元に戻すこ...
-
重複クエリを使ったデータ削除
-
Accessのインポートについて(上...
-
処理の途中で停止させ、再開さ...
-
住所のDBテーブル、マスターの...
おすすめ情報