- ベストアンサー
ACCESS:2つのフォームから1つのテーブルに
OS:Windows2000 ソフト:ACCESS2000 表題のとおり、2つのフォームを用意しておいて、どちらのフォームからもあるテーブルに書込みを行うことは可能なのでしょうか? 具体的には、単票形式のフォームと表形式のフォームから一つのテーブルに対してデータ入力を行いたいのです。今現在、表形式からはテーブル内容を参照でき、書込みも行える状況にあり、単票形式のフォームからは入力が出来ない状況にあります。 どのようにすれば可能でしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ひとつひとつの項目の意味、関係までは分らないので、ここまでの推測で思ったことを言いますと・・・ テーブルの正規化はできていますか? 社員No.だけでリレーションを取れませんか? それから、業務年度、工種コード、細目コードはどちらかのテーブルにだけあればいいのではないですか? どの項目がユニークで、どの項目が構造的に変化する可能性があるのかが明確になっているでしょうか? 日報の情報として毎回新たに作成されるデータと、 社員の基本情報(社員No.、氏名、住所など)は別のテーブルになっていますよね!? たとえば、「業務年度」とは「ある社員がある業務を行った年」と言う意味ですか? だとすると社員の基本情報のあるテーブルには必要なく、日報のテーブルに必要な項目になりますよね!? いまひとつ見えないので、思ったことをざっくばらんに書きましたので分りにくかったり、的を思いっきりはずしているかもしれませんが、絡んだ糸をほぐす一つの手段としてお許しください。
その他の回答 (3)
- skikichi
- ベストアンサー率65% (45/69)
「日報テーブル」とリレーションを組んでいるテーブルとは何をキーにしていますか? また、そのキーはお互いのテーブルに存在しますか? 「日報テーブル」に存在するキーがもう一つのテーブルには無い、またはその逆。 リレーションの結合の種類は何になっていますか? ちまみに、表形式のフォームのレコードソースであるクエリーは「日報テーブル」からのみ抽出していますか? エラーメッセージの「'***'」を明示してください。
補足
リレーションに関してですが、社員No、業務年度、工種コード、細目コードをキーとしており、お互いのテーブルに存在しています。 結合の種類は、[社員No]のみ「参照整合性」有りで、他は「参照整合性」無し(「主テーブルで参照されているフィールド用の固有インデックスが見つかりません。」エラーが出てしまい「有り」に出来ない)となっています。 ***のメッセージに関してですが、「フィールド'社員No'とキーが一致しているレコードをテーブル'社員名簿'で探すことが出来ません。」というエラー文です。
- skikichi
- ベストアンサー率65% (45/69)
単に、単票形式のフォームの表示でエラーになってしまうということですね。 そのフォームの作り方、設定、クエリーやVBA、テーブルのキーの内容、nullのレコードがあるか否か、他のテーブルとの結合方法(リレーション)、などの詳細の情報をください。
補足
フォーム自体は、ウィザードにてテーブルを元に作成しました。 基本的には、日報を取り扱えるようにしたいので、「日報テーブル」として[社員No][年][月][受託番号コード][工種コード][細目コード][勤怠時間]と用意してあり、「社員名簿」「受託業務」「工種」「細目」といったテーブルとリレーションを組んでいます。 VBAに関してはイベントプロシージャで、コードを入力すると業務名等が自動で入力されるようにしてあります。 その他の事に関しては、理解出来ていないため回答出来ません。 初心者なので、なにとぞよろしくお願いします。
- skikichi
- ベストアンサー率65% (45/69)
可能です。 何もしなくても、 Accessが勝手に資源管理をしてくれますので、もし同時に書き込みをしようとすると片方でメッセージが出て怒られます。 具体的には、「どちらの更新内容を採用しますか?」といった感じのメッセージが出ます。 やってみれば一目瞭然ですので、試してみてください。 積極的に資源管理をしたい場合には、排他制御のためのプログラムコマンドがあります。 レコードロック等ですね。
お礼
回答、ありがとうございます。 もっと具体的に説明いたしますと、会社で利用するための勤怠管理のツールを作成したいと思い、ACCESSを利用して行っています。 社員番号・写真名や業務名等の不変テーブルを用意しており、社員全員の日報内容を保存するテーブルに対して、単票形式と表形式から入力を行いたいのですが、クエリをかまして作成した表形式からは入力が可能で、後から作成した単票形式からは「フィールド'***'とキーが一致しているレコードを'***'から探すことができません」とのエラーが出てしまいます。 どのようにすれば良いのでしょうか?
お礼
こちらの説明が不十分なため、回答も難しかったでしょうが、何度もご回答いただきありがとうございます。 まだ、解決には至りませんが、このアドバイスを元にさらに進めて見たいと思います。 ありがとうございました。