• 締切済み

アクセス 参照更新について

アクセスのデーターベースの参照更新で悩んでいます。 Aシートには番号(重複なし)、氏名、ふりがな、 Bシートには番号(重複あり)、仲良し番号(重複あり) 上記のAシートの番号、Bシートの番号同士をリレーションでAシートの番号を1、Bシートの番号を多で結び参照更新を設定しています。  新たに、Aシートの番号が変更されたときに、Bシートの仲良し番号が参照更新されるようにしたいのですが、うまくいきません。 どうすれば、うまくいくか教えていただければ有難いのですが・・・ 宜しくお願いします。

みんなの回答

  • gadd3
  • ベストアンサー率46% (211/451)
回答No.2

>Aシートの番号が変更されたときに、 >Bシートの仲良し番号が参照更新されるようにしたいのですが Accessに限らず、参照制約といいますか、リレーション設定の機能としては、 Aシートの番号とBシートの番号でリレーションさせている場合、 Aシートの「番号」の値を変更したら、それに連動して自動変更されるのは Bシートの「番号」、だと思うので、Bシートの「仲良し番号」が自動変更されないのは 正常な動作ではないでしょうか? また、Aシートの番号の値を変更して、Bシートの仲良し番号が 何らかの値に変化してしまったら、データベースの整合性が保てなくなって ぐちゃぐちゃになってしまうのではないでしょうか? なぜ、何の目的で、「仲良し番号」が自動変更されるようにしたいのかがわかりません。 また、「多」側のテーブルにも主キーを入れたほうがよいとは思います。 DB内のテーブルに主キーが無いテーブルがあると、ムダにエラー増えたり 削除が出来なかったり色々と面倒くさいです。 もし、 >Aシートの番号が変更されたときに、 >Bシートの仲良し番号が参照更新されるようにしたいのですが の「参照更新」というものの意味が、「フィールドの連鎖更新」のことを 意味するなら、それはできないので、 単純に 「Aシートの番号が変更されたときにBシートの仲良し番号がある基準をもとに書き換わればいい」 ということでしたら、 AとBをリレーションさせたクエリをソースにした帳票フォームなどを作って、VBAで書き換えるしかないと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

久しく触っていない機能なので、復習もかねてやってみました。 リレーションシップを表示させ、 テーブルAと、テーブルBのリレーションを設定し、 「参照整合性」と、「フィールドの連鎖更新」にチェックを入れると、 動作しました(テーブルAの番号を変更すると、テーブルBの方も変更される)。なおAの番号は主キーに設定、Bの番号はインデックスはい(重複あり)に設定しました。 上記設定をしても機能しないという事だと、バージョン、テーブルの構造、リレーションシップの設定、エラー有無等詳しい情報を開示していただけると、先達のアドバイスが得られるかもしれません。 (当方Access2000)

pokarijpjp
質問者

お礼

回答有難うございました。明日職場で早速試してみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • アクセスでのデータ管理について(長文です。)

    アクセス初心者です。 これからデータの入力、管理、帳票をアクセスで構築しようと思っているのですが、アクセスはデータを入力した時点でデータが保存されてしまうので過去のデータが残りません。またデータの変更及び共有をうまくやりたいのですがよい方法がわかりません。 今回構築したいデータベースは、 1.過去の記録がすぐわかるようにしたい。(更新前のデータがわかるようにしたい。) 2.データの変更及び共有を簡略化したい。(A社で変更したデータをB社のデータベースにいれこみたい。) 【データベースの概略イメージ】  A社      B社 データベース1 データベース2(1と同じもの) テーブル1 → テーブル1 テーブル2 → テーブル2 テーブル3 → テーブル3 クエリ1    クエリ1 クエリ2    クエリ2 フォーム1   フォーム1 フォーム2   フォーム2 *リレーションあり *A社でテーブル1の内容を変更して、B社のテーブル1を新しいものに置き換えたい。 (本を読むとリレーションが崩れると書いてありました。) *B社で変更してA社に戻すこともある。 テーブル1 項目 ID 100 住所 あああ 氏名 △△様 電話番号 111-1111 *例えば、ID100のデータの氏名を変更するとき、変更前がどうだったかわかるようにしたい。(1月時点では△△様、2月時点では□□様とか) 誰かアクセスの操作方法に詳しい方がおられましたら、よい方法又はアクセスに関する詳しい本とかサイト等教えて下さい。よろしくお願いいたします。

  • エクセルでアクセスの機能が使えますか?

    次のような機能はアクセスでは一発で出来るのですが、今の会社のパソコンにはアクセスが入っておらず、しかもお金がかかるという理由で買ってもらえません。プログラムを組めば出来るものでしょうか? やりたい事 シート1 A:社員番号 B:氏名 C:学歴 D:入社年月日 シート2 A:社員番号 B:住所 C:電話番号 シート1と2のデータを社員番号をキーにして下のような1つのデータベースを作りたいのです。 シート3 A:社員番号 B:氏名 C:住所 D:入社年月日 アクセスでしたら、簡単に出来るのですが。。。エクセルでイチイチ貼り付けて処理をしているのですが、時間もかかるし、間違いも多くちょっと困っています。 何かいいアイディアがありましたら、教えて下さい。

  • Access2000 更新のタイミング?

    Access2000を使用しています。 1対1のリレーションシップを設定したテーブル「A」とテーブル「B」を作りました。 テーブル「A」にキーを入れると、テーブル「B」からそのキーに対応したデータが表示されるクエリを作りたいと思います。 そのキーに1対1のリレーションを設定しなければ、キーを入力した瞬間に対応したデータが表示されるのですが、1対1、又は、インデックス(重複なし)を設定すると表示されません。 しかし、テーブル「A」にはデータが重複しないようにしたいと思っています。 わかりにくい説明で申し訳ありませんが、お分かりになるかたがいらっしゃいましたら、どうすればこれを回避できるか教えてください。よろしくお願いいたします。

  • Accessの参照整合性について

    アクセスでリレーションシップをはると参照整合性にチェックするボックスがありますよね。 以下の選択の組み合わせが考えられると思うのですが、 1.参照整合性にチェックしない場合 2.参照整合性のみチェックした場合 3.参照整合性と連鎖更新にチェックした場合 4.参照整合性と連鎖更新と連鎖削除にチェックした場合 一(マスタ)対多のリレーションを張ったとき、以下のように理解しています。 2.のとき マスタにあるものしか登録できない。また、マスタは他のテーブルにリレーションを張っている場合、削除も編集もできない。 3.のとき マスタにあるものしか登録できない。またマスタで更新をかけると、他のテーブルのレコードも更新がかかる。また、マスタは他のテーブルにリレーションを張っている場合、削除はできない。 4.のとき マスタにあるものしか登録できない。またマスタで更新、削除を行なうと他のテーブルのレコードも更新、削除がかかる。 では1.のときってリレーションシップは張れるのですが、何の意味があるのでしょうか?

  • エクセルのVLOOKUP関数で他のブックから正しく参照されないセルがある

    台帳xxxx.xlsファイルで住所録.xlsファイルを参照しているのですが最近正常動作しません。 住所録.xls というブックには、メンバーの住所録が入っています。 A列氏名、B列フリガナ、C列電話番号 という項目になっています。 台帳xxxx.xls側には A列連番、B列氏名、C列フリガナ、D列電話番号・・・になっています。 例えば台帳0712.xls というブックには日々のメンバーの動きを記録しており、 Bのセルに氏名を入れればその右側にフリガナ、電話番号が、住所録.xlsから参照されて自動入力されるようになっています。 台帳ファイルは原本を複製して 台帳0713.xls、台帳0714.xls・・・と日々増えていきます。 現在、住所録.xlsは600行を超えてきたのですが、最近、台帳xxxx.xls に氏名を入れるとフリガナ、電話番号の欄がうまく参照されず"0"(ゼロ)と表示されてしまいます。 正しく表示される名前とされない名前が出てきました。 600番台以降の人に多い気がするのですが定かじゃありません。 なぜならその氏名を上位のセルにコピーしても参照結果が"0"だからです。 具体的には、 例えばC列の数式は =IF(B2="","",VLOOKUP(B2,[住所録.xls]sheet!$A:$C,2,FALSE)) で、フリガナが自動入力されるようになっています。 ※氏名が未入力のときは"#N/A"のエラー表示がされないようにしています。 どうして"0"が入ってしまう場合があるのでしょう。 行数に限界があるのか疑問です。 またはもっといい方法があれば教えてください。

  • アクセスで作成した会員名簿をエクセルで、参照・使用する事が出来るのでしょうか。

    アクセスで会員番号・氏名・郵便番号・住所・電話番号・生年月日等の項目を記述した会員名簿を作成しています。 ●御指導いただき事 1.アクセスで作成した各項目を参照してエクセルで下記の事を行えないかと考えております。 A・エクセルで作成した表に、C6:C505に会員番号を入力した時に、E6:E505に氏名を表示させる B・封筒の宛名書き 2.参照の仕方 A・アクセスの会員名簿を直接参照出来ますか、可能な場合その処理方法を。 B・アクセスの会員名簿を直接参照出来ない場合は、その処理方法を。 ●アクセスは理解出来ていません、エクセルも初心者です。   お手数を、お掛けいたしますがよろしく御願い致します。

  • アクセスのフォーム、コードを入れると名前が出るのはなぜ?

    アクセス初心者ですが、フォームを作成時、疑問に思って考えるほど混乱してしまいました。 例えば、 Aテーブル:日付、店コード、売上のフィールドを作る。(主キーなし) Bテーブル:店コード、店名(主キーは店コード) リレーションは店コード(B)→店コード(A)に結び、すべての整合性にチェック それぞれのテーブルに、数件のデータを入力 この状態で入力フォームをウィザードで作ったのです。 Aテーブルからすべてのフィールド、Bテーブルから生徒氏名を選び、ウィザード任せにフォームを作りました。 このとき、できたフォームで出席番号を入れると何もしないのに、自動的に生徒氏名が入ってしまいます。 人に聞くと当たり前でしょ、みたいに言われたのですが、なんとなくわかるようでわかりません。どうして自動的に入るのでしょうか?ふりがなの自動入力みたいな設定をしたというのならわかるのですが、何もしてないのに。 すみません、自分でも、リレーションとか整合性とかについて、あるいはまだフォームとテーブルの関係について、よくわかってないせいなのだろうとは思うのですが、そこの所も合わせ、どなたか、分かりやすく教えていただけますか?宜しくお願いします。

  • エクセルのデータベースで参照・貼り付け

    エクセル2003で、データベースを作成してあります。 別のシートに、コードを入力すると、データベースを参照して関連の項目を貼り付けるという作業したいと思っています。 例 シート2にデータベース住所録を作成。 [コード][氏名][住所][電話]... シート1の[A]列にコードを入力すると、データベースから氏名をコピーし[B]列に貼り付け...[C]列に住所... ※貼り付けたデータを後で編集したいため、貼り付けで行いたいと思います。 ※マクロではなくて、関数で行いたいと思います。 ※実際には住所録ではなくて、在庫管理です。 よろしくお願いいたします。

  • エクセルのセル参照

    エクセル2007です。教えてください。 Sheet1のA1に「郵便番号」、A2に「住所」、A3に「氏名」、A4に「請求金額」を入力するとします。 これを100件入力すれば、「1」から「100」の行を使いますよね。 次にSheet2に請求書を作ります。A1に「郵便番号」、A2に住所、B1に「氏名」、C1に「請求金額」を 表示させたいのです。連続させてSheet1のセル参照を使うと、行が違うので直してやらなければなりません。 1件や2件ならともかく、100件となると…。関数では無理なんでしょうねえ。ではマクロ? どういうマクロを組んだらいいのか教えてください。

  • Access起動中にExcelで参照

    AccessのVBAで、インターネットを検索してデータを収集中に、Excelでそのデータベースを参照するようなことってできるのですか? 別の言い方をすると、Accessであるデータベースのデータを絶えず更新しながら、別のソフトでそのデータベースのデータを利用することってできるのでしょうか? よろしくお願いします。

専門家に質問してみよう