- ベストアンサー
Access2002 レコード入力時に更新/追加を判別できないでしょう
- Access2002のレコード入力時に、更新や追加を判別する方法がわかりません。
- 現在、従業員データベースを作成していますが、MDBファイルの内容を変更できないため、リンクテーブルとして付属データを別テーブルにしています。
- フォームで付属情報を入力するためのボタンを作成しましたが、一度入力した付属データを更新する方法がわかりません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
何をお悩みなのか良く分からないのですが 単純にT_基本データを元とする単票フォームがあるのですから この中に同じくサブフォームを単票で入れ込んで 両方の従業員番号で親子のリンクとすればおしまいと思えるのですが? ※サブフォームのレコードセレクタは消します。 ついでに親フォームのレコードセットをスナップショットにしておけば 某所から来る基本データを誤って変更するなどが防げます。 ※子フォーム(T_付属データ)は変更OKです。 勘違いならゴメン。
その他の回答 (2)
- tamu1129
- ベストアンサー率58% (1301/2234)
それならば、 T_基本データ ・従業員番号=主キー ・氏名 ・カナ T_付属データ ・ID(オートナンバー型)<=追加して主キーにする ・従業員番号(データ型のインデックスプロパティを はい(重複なし)にする ・職位 にして、T_基本データテーブルとT_付属データテーブルの従業員番号フィールドをリレーションシップ張るクエリ作成して、フォームの元データはこのクエリを使用して作成すれば新規でも更新でも対応できるでしょ T_付属データテーブルの職位の部分に入れるデータの為にもう一個、テーブル作った方が管理しやすいかも
お礼
お返事遅れました。 ご回答ありがとうございます。 早速、テーブルをご教授いただいたとおりに変更し、クエリも従業員コードで連結するようにしました。(連結は、基本:付属=1:0以上にしてあります。付属データは従業員を網羅していますが、付属テーブルには必ずしも全ての従業員コードが入っていないので) 早速実行しましたが、 1.新規に付属データを入力・・・テーブルに格納OK 2.その従業員の付属データを変更、保存・・・テーブルに上書きOK と、ここまでは順調でしたが、 3.他の従業員の付属データを入力、保存・・・1.で入力したレコードに上書きされてしまい、1.の従業員情報を表示させると、付則データの箇所は空白(テーブルの中身は、何度やっても1レコードのみ) となってしまいます。 ちなみに、付属情報を入力するフォームのプロパティで、「データ入力用=いいえ」としています。 そこで、上記プロパティを「データ入力用=はい」にしてみました。 上記、2.では、やはり、インデックスの重複エラー。 3.ではきちんと新しいレコードが作製されています。 どちらにしろ、帯に短したすきに長し、なのです。 なにかヒントはございますか? お手数をおかけし、申し訳ありません。
- tamu1129
- ベストアンサー率58% (1301/2234)
テーブルの構造が変です T_基本データ ・従業員番号=主キー ・氏名 ・カナ ・職位ID <=これを追加 T_付属データ ・職位ID=主キー ・職位 上記のようなテーブル構造に変更し、T_基本データの職位IDとT_付属データの職位IDとをリレーションシップで結びます T_基本データテーブルを元にフォームを作成し、職位ID部分をコンボBOXにします コンボBOXにて格納されるデータはT_付属データの職位IDの値を入力する事になりますが、コンボBOXの属性を指定する事によってフォームには入力した職位IDに該当するT_付属データテーブルの職位フィールドの値が表示されるように出来ますので、実際には表示させたい たとえば係長・部長など職位で表示させる事が出来ます コンボBOXにカーソルが来た時に選択出来る項目が一覧表示されるようにdropdownさせても良いですし、camo-tech さんがやっているように一旦別フォームを表示させて入力した値を、取り込むでもOKです >いちいち弊部署にマッチした構造に変換する暇が無い Excelをやっている人がAccessを触るとよく勘違いされるようですが、データベースは元データと取り込むデータの順番がバラバラだろうと関係ありません 取り込むデータのこのフィールドの値を、このテーブルのこのフィールドに取り込めというようにクエリー作ればいいだけなので、まったく気にする必要はありません T_基本データテーブルに 職位ID 持たせてやるだけで、新規だろうが、変更だろうが好きなように出来ますよ
お礼
早速のご回答、痛み入ります。 が、質問でも書いたとおり、T_基本は、外部DBですので、デザインが変更できないため、苦し紛れに別テーブルを作り、従業員番号でリンクさせているのです。 説明不足で申し訳ないです。 また、よろしくお願いします。
お礼
お答えありがとうございます。 サブフォームは盲点でした。 親子リンクでうまく行きました。 どうもありがとうございました。