こんにちは。
システム開発の基礎的なところがわからないので、教えていただきたく、投稿させていただきます。
システム開発をほとんどやったことがないので、言葉が変なところもあるかと思いますが、宜しくお願いいたします。
サーバー上に、AというSQLServerのDBがあります。
今までは、システム管理者のみがAccessからA.DBのリンクテーブルを使い、マスタデータの更新/追加/削除を行っていましたが、今後、リーダークラスの人もできるようにしたい!という要望があり、そのインターフェース部分を作成しています。
いろいろと考え、フロントエンド側にAccessでB.mdbを作成し、そこには、A.DBと同じテーブル構造の一時TBLを作成し、B.mdbを開いた時にA.DBから全データを取得することにしました。(取得するところまではできています)
ここから、設定するための画面作成をしますが、最終的に、更新/追加/削除されたデータは、どのようにA.DBにUPすればいいのでしょうか?
考えた方法として
(1)B.mdb内に、一時テーブルとは別に、更に同じ構造の変更用テーブルを作成。
設定画面から更新/追加/削除されたデータは変更用テーブルに保存し、全ての処理が終了したら、変更用テーブルにあるデータを1つづつ見て、A.DBへ更新/追加/削除をかける
(2)一時テーブルのデータを直接更新/追加/削除し、全ての処理が終了したら、全テーブルのレコードを1件づつ比較し、A.DBへ更新/追加/削除をかける
というくらいしか思いつかないのです。
その他に思ったのが、一時テーブルもしくは変更用のテーブルに、レコード毎に「更新/追加/削除」がわかるようにフラグを設けて、そのフラグに従ったSQL文を発行する
というくらいです。。。
根本的に、マスタデータに対する更新/追加/削除のやり方が間違っていたりしますか?
誰も聞ける人がいないので、どうぞ宜しくお願いいたします!!!
No.2ベストアンサー
- 回答日時:
実際に私はあまりこの手のものを作ったことがないのであまり的確なアドバイスにならないかもしれませんが、
何がいつ誰によってどう変更(追加)されたかを知る必要があるなら直接リンクテーブルのデータを変更することはできないと思います。
ログの必要がなければ、それこそリンクテーブルのデータを連結フォームから変えてしまえばよいわけですけど、そうだったらこんな質問は出ないですよね。
>削除は、解除フラグがあるものは解除フラグを立てるだけ
これは、実際はマスタの更新なので現実に発生する処理は追加及び更新の2種類と考えてよいと思います。
私が作るなら、
(1)非連結フォームにA.dbよりデータを読み込む仕組みを作り、読み込む際にその内容をログテーブルに保存して
(2)フォーム上でマスタデータの変更を行い変更内容をA.dbに書き込むSQL文を作って、ローカルのテーブルに、登録ユーザーIDや変更時刻、 などとともに保存しておき、
(3)sqlを実行させます。
sqlをいれたテーブルと読み込んだデータテーブルがそのままログになります。
アクセスにVBAでたくさん書くことに関しては、ちょっと抵抗があるので可能であればVBなどを使われたほうがちょっと安心できるかもしれません。 アクセスで全部作られるなら、こまめにバックアップを取りながら、、、
あまりVBAで書きたくないなら(クエリなどで片付けたいなら(考えられた方法の(1)とほとんど同じですが、全マスタデータをローカルに持ってくる必要はない。)
(1)1マスタデータをB.mdb上の仮テーブル及びログテーブルに読み込み、
(2)連結フォームで変更をさせ、B.mdbのテーブルに保存しておく。
(3)(2)で作ったデータ内容をa.dbに反映させる。
どちらのケースでもフォーム上では新規登録であるかどうかの判断は インデックスになるIDなどを一度マスタテーブルを検索して重複しているデータがあれば更新であるし、新規であれば追加ということになります。
ありがとうございます。
せっかくお返事いただきましたのに、私の中でどうも理解できません(;_;)
追加・更新の2種類でOKというのと、全てのマスタエータをローカルに持ってこなくて良い ということは、大変勉強になりました。
ありがとうございますね。
これを頭に入れて、もう少し調べてみることにします。
ありがとうございました!
No.3
- 回答日時:
スーツのデザイナでプログラマではありません。
ですから、かなりトンチンカンだと思いますが...
1、Accessプロジェクトでなく、なぜ、 mdb なのかと思いました。
2、データベースの管理は、SQL文の発行で全て済ましてしまうが基本と思いますが...
3、テンポラリファイルは SQL Server に作成することも出来るのではないのかなあ・・・
こんな、他愛もない感想を持ちました。
s_huskyさんも、ありがとうございます。
基礎がわかっておらず、理解できないため、調べてから、検討させていただきたいと思います。
こういうことをおっしゃっていたのか!
と分るようになるといいのですが。。。
勉強不足ですみません。
No.1
- 回答日時:
マスター変更の運用規則というのがどういうものかによりますが、
例えば変更を即座に反映させたいのか、バッチ処理などで決まった時間に反映させるのかによります。
また、変更前のマスターの状態を再現させる必要があるかどうかによってつくりが変わってきます。
あと、現在のマスターに開始日、終了日などのフィールドがあるか教えていただけますでしょうか?
この回答への補足
こんにちは!
お答えありがとうございますね。
マスタデータへのデータ登録は、あっても1週間に1回くらいです。(追加したいデータにより、更新/追加/削除にかかわるレコードの数はまちまちです)
ローカルPCにてデータを一通り更新し終わったら、すぐにマスタDBへは反映させたいと思います。
(バッチではなく、リアルタイムになるのでしょうか?)
マスタDBの設計があまりよくないため(でも、これを直すほどの手間はかけられない)、データの入力(DB構造)を覚えるのに時間がかかりますので、リーダーさんから入力してもらったデータに間違いがないか、最初の頃は、システム管理者がチェックできるようにするかということも悩んでいます。
本来でしたら、A.DBのリンクテーブルをローカルのB.mdbに作成し、直接、更新/追加/削除を行うのが一番簡単なんですが、上記点から、一時テーブルに保存して、変更したところがわかるようにしたいと思います。
(すみません、日本語おかしいかもです。。。)
>また、変更前のマスターの状態を再現させる必要があるかどうかによってつくりが変わってきます。
なので、再現させる必要もあるかもしれません。
現在のマスターには、開始日・終了日のフィールドはありません。解除フラグはあります。
・追加はデータ追加
・更新(変更)はそのまま変更
・削除は、解除フラグがあるものは解除フラグを立てるだけ(マスターにより解除フラグがないものもあるので、削除する場合も有9
という感じです。
意味、わかりますでしょうか??
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PostgreSQLでテーブル構成を変える
-
Accessのテーブルデータを一気...
-
ビューのソートについて
-
Accessでデータシートに同じデ...
-
accessでレコード更新直後の反...
-
アクセス レコードセットを更...
-
Oracleで上書きImportはできま...
-
SQL Server に画像を登録
-
構文エラー : 演算子がありませ...
-
クロス集計されたデータを元に...
-
Accessでの稼働日数計算の方法
-
ACCESSとEXCELLの共用
-
「クリップボードにコピーされ...
-
CONNECT BYに関して
-
Accessのインポートについて(上...
-
Access VBAからエクセルに出力...
-
同一テーブルのデータを参照し...
-
テーブルで一番古いレコードだ...
-
マテリアライズドビューとスナ...
-
結合テーブルでINSERTする方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
Accessのテーブルデータを一気...
-
アクセス レコードセットを更...
-
テーブルで一番古いレコードだ...
-
ビューのソートについて
-
Oracleで上書きImportはできま...
-
このISAMでは、リンクテーブル・・
-
構文エラー : 演算子がありませ...
-
マテリアライズドビューとスナ...
-
accessでレコード更新直後の反...
-
ORA-01401が表示され、データが...
-
処理の途中で停止させ、再開さ...
-
住所のDBテーブル、マスターの...
-
Access VBAからエクセルに出力...
-
Accessでの稼働日数計算の方法
-
MS Accessを共有した際にファイ...
-
同一テーブルのデータを参照し...
-
結合テーブルでINSERTする方法...
-
ACCESSで容量が50MBになった...
-
「クリップボードにコピーされ...
おすすめ情報