
マスターmdbにメインとなるテーブルを置き
(ID,課,担当者名,商品番号,商品名,価格・・・)
3課まであるのですが、各課の専用フォルダに編集するmdb
(仮に編集mdbとします)を置いて
メインテーブルをリンクし、同じフィールドを用意した編集用テーブルを置き、フォームやクエリを作成して作業しようとしています。
基本的に同じ顧客に一斉に手を加える事はないので
編集用テーブルに一旦格納したデータを追加クエリでリンクしたメインテーブルへ書き込み、削除クエリで編集用テーブルを綺麗にしています。
が。そもそも新規ばかりではなくメインテーブルに既存のデータを読み込んで編集したい事もあります。
この処理をどうしたら良いのか分かりません。誰かがメインテーブルを参照していたら他の人が見れないと思うし、1レコードだけ見るのであればそれだけ一旦編集用テーブルへ置けば良いのかと思いましたが、
一覧を見てソートしてみたりする事もあります。
管理者が全部のデータを掌握したいのでマスターmdbにメインとなるテーブルを置いたのですが、これを課ごとのテーブルに分ければ良いのでしょうか?
Accessをいじればいじる程毎回発見がありますので、知らないだけで他に簡潔な方法などありましたら教えて下さい。宜しくお願いします。
No.2ベストアンサー
- 回答日時:
> メインテーブルをリンクし、同じフィールドを用意した編集用テーブルを置き、
(中略)
> 編集用テーブルに一旦格納したデータを追加クエリでリンクしたメインテーブルへ
> 書き込み、削除クエリで編集用テーブルを綺麗にしています。
これができているのでしたら、既存データの編集もそれほど難しくはないかと思います。
但し、1画面で「上書き更新」と「削除」の双方に対応すると少し複雑になりますので
(→新規追加/既存編集/既存削除とも、同時に複数レコードを扱うことを想定)、
ここでは更新と削除は別として考えることにします。
(メニュー画面に、「新規追加」「既存編集」「データ削除」の3つのボタンがあって、
それぞれ専用のフォームがあるイメージです)
現在行われている「新規レコードの追加」と、今回ご希望の「既存レコードの編集」
及び「既存レコードの削除」を比較して、概要を説明してみます:
<新規レコードの追加>
1)【削除クエリ】編集用テーブルのレコードを全て削除
※前回作業時に、何らかのエラーで削除が行われなかった場合への対応です。
2)【ユーザー】編集用テーブル(を元にしたフォーム)に対して、新規レコードを追加
3)【追加クエリ】コマンドボタンのクリックで、編集用テーブルからメインテーブルに
書き込み
4)【削除クエリ】編集用テーブルのレコードを全て削除
<既存レコードの編集>
1)【削除クエリ】編集用テーブルのレコードを全て削除
※編集用テーブルは、新規レコードの追加用とは別に作成し、「更新」フィールド
(データ型はYes/No型、既定値はNo)を追加しておきます。
2)【追加クエリ】メインテーブルから編集用テーブルに書き込み
※新規追加の時とは逆方向にデータをコピーするということです。
なお、追加クエリでも選択クエリと同様に、絞り込み条件を指定できますので、
担当の課に限定するとか、更に商品名を曖昧検索で抽出する、といったことも
検討してみて下さい。
3)【ユーザー】編集用テーブル(を元にしたフォーム)に対して、既存レコードを変更
※フォームのプロパティシートの『データ』タブで以下を設定しておきます:
「追加の許可」=「いいえ」、「削除の許可」=「いいえ」
※フォームの「更新後」イベントで、「更新」フィールドの値を「Yes」にします。
(フォームにはチェックボックスとして設置の上、プロパティシートの「書式」タブで
「可視」を「いいえ」にしておきます)
4)【更新クエリ】コマンドボタンのクリックで、編集用テーブルで「更新」フィールドが
Yesのもののみ、メインテーブルのレコードを上書き
※双方のテーブルで、共にIDが主キーだと思いますので、このIDで両テーブルを
結合させてクエリを作成し、更新クエリのデザインビューの「レコードの更新」欄に
「[編集用テーブル].[担当者名]」等を記入します(→添付画像)
※主キーであるIDは、上書き更新の対象から外し、それ以外のフィールドを更新。
5)【削除クエリ】編集用テーブルのレコードを全て削除
<既存レコードの削除>
1)【削除クエリ】編集用テーブルのレコードを全て削除
※編集用テーブルは、既存レコードの編集用のものと同様に新たに作成し、
「削除」フィールド(データ型などは「更新」と同じ)を追加します。
2)【追加クエリ】メインテーブルから編集用テーブルに書き込み
3)【ユーザー】編集用テーブル(を元にしたフォーム)に対して、削除したいレコードの
「削除」チェックボックスをYesに更新
4)【削除クエリ】コマンドボタンのクリックで、編集用テーブルで「削除」フィールドが
Yesのもののみ、メインテーブルのレコードを削除
※この削除クエリも、上と同様にIDで双方のテーブルを結合させて作成します。
5)【削除クエリ】編集用テーブルのレコードを全て削除
・・・以上のように、新規レコードの追加の場合に比べて、メインテーブルからの
レコードのコピーが入るのと、編集用テーブルからメインテーブルへの反映に使用する
のが追加クエリか更新クエリ/削除クエリかの違い、です。
(・・・そのわりに、長文になってしまいましたが・・・(汗))

この回答への補足
回答へのお礼の補足なのですが。。。
ワークテーブルを分けた方が、クエリ処理一発で済むのですね。
やはりワークテーブルは3つ作る事にします。
ありがとうございました!
回答ありがとうございます!
編集は、一旦テーブルを全部コピってきて、編集したレコードだけをクエリで上書きする、という事ですね?
成る程成る程・・・と思っていじっていましたが、一覧をソートしたりなんだりする事も発生します。
いっそ1つのワークテーブルに一旦全部コピってきて、更新フラグを
0=新規追加 : 1=編集 : 2=削除 とか数値で立てて
更新フラグが立っている物を、値を見て処理を振り分けるとかしたら変ですか?
あれ・・・?丁寧に教えて頂いたのに変な質問してしまっていましたらすみません;もぅ1つの回答の方と両方試そうと試行錯誤してわたわたしています。すみません。ありがとうございます。
No.1
- 回答日時:
こんにちは。
文面を見るとこの方式で既に作業をされているのでしょうか?
MDBをメインDBと作業用DBに分けるという事は良い事と思います。
アクセスは基本的に5クライアント迄のDBへのアクセスをコンセプト
にしているようです。
よって、作業クライアント数も問題は無いようです。
作り方ですが、せっかくリンクテーブルとしてあるので別に
各テーブルに同じ形式のテーブルを作らず、直接このリンクテーブル
を基にクエリを作成し、データ追加用クエリ・データ編集用クエリ・
データ削除用クエリの大体3種類を作って行なえばよいのでは
無いでしょうか?他のクライアントがテーブルを参照していても
作業者のマシンで同じテーブルは使えるはずです。
又、基本的に同じ顧客に一斉にアクセスしないとの事ですので、
多少不安ながら削除クエリを作動させる際にデータロックも
必要ないのでは?(VBA調べれば、削除実行前にテーブルロック
させる方法もあったはずですのでそれを使えばより安全ですが)
以上、参考まで
回答ありがとうございます!
直にリンクテーブルをいじるのもアリなんですね。
誰かが参照していると開かないのかな…と思っていたのですが。
試しに自分のPC内ではありますが、複数の編集用mdbを作成して
(リンクするテーブルはMaster.mdb)同時に
リンクしているテーブルを参照しているクエリを使ったフォームを開いてみたのですが動きました!シンプルで良いですね。
同時に一覧を眺める事もありそうなので、これは助かります。
データロックは知りませんでした。何かあってはいけないのでその処理を頭に入れておきます。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Access(アクセス) Access クエリ 同一テーブル内 複数フィールドの同時集計のやり方について 1 2022/05/18 19:01
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- その他(データベース) accessについて 2 2022/05/31 16:58
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別テーブルに保存したいのですが
-
ACCESSでテーブルにあるチェッ...
-
クエリの結果が文字化け(Access...
-
45年前のレコードプレーヤを10...
-
フォーム内のデータをすべて更...
-
ACCESSでの関数について
-
データシートビューをコピーす...
-
ACCESS2010 フィルタ後のエク...
-
Accessの最大レコード数
-
アクセスでの追加クエリでのエ...
-
Accessのテーブルを開いたとき...
-
ACCESS2000 更新クエリで文字...
-
Accessで、フォームに情報を入...
-
日付型のフィールドに空白を入...
-
差込印刷での全角表示について...
-
アクセスのエラー「クエリには...
-
Excleピボットでデータのない部...
-
メモリマップについて
-
SQL文で パラメータが少なすぎ...
-
ACCESS クエリの抽出条件に他の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
45年前のレコードプレーヤを10...
-
ACCESSでテーブルにあるチェッ...
-
クエリの結果が文字化け(Access...
-
ACCESS2010 フィルタ後のエク...
-
Accessのテーブルを開いたとき...
-
Accessで、フォームに情報を入...
-
Accessでレポート内の繰り返し...
-
Accessの最大レコード数
-
ACCESS2000 更新クエリで文字...
-
Accessのオートナンバーについて
-
フォーム内のデータをすべて更...
-
アクセスでの追加クエリでのエ...
-
Access 「主キーにはnull値を...
-
ACCESSでの関数について
-
access IDの振り直しについて
-
文字を含むIDの自動採番
-
アクセス レポートの行数を固...
-
ACCESSでのひとつ前レコードの...
-
レコード件数が0件なら印刷を...
-
データシートビューをコピーす...
おすすめ情報