• ベストアンサー

Access 2010のフォーム 

いつも大変おせわになり、ありがとうございます。 Access 2010でフォーム「F」を作りました。具体的には リレーションシップのある「A」, 「B」ふたつのテーブルにフォームから値入力するものです。 「A」と全く同じ構造で、レコード数が違うだけのテーブル「Aダッシュ」を作りました。 フォームFに変更を加え、「A」ではなく「Aダッシュ」に値入力するようにしたいです。 Access上でどうやれば、そのような変更が加えられるのか、よくわかりません。 ご指導のほど、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • jacob-wk9
  • ベストアンサー率36% (85/231)
回答No.1

単純には、2通り 1 フォームをコピーする。    コピーしたフォームをデザインビューで開くと、横にプロパティシートというのが出ますので、    プロパティシートのデータタブを開く。    その一番上のレコードソースを、「テーブルA」から「テーブルA’」に変更する。以上 2 同じフォームを使って切り替える。     1の方法ではフォームに直しを入れたときに、コピーしたフォームも同じように変更しなければなりません。     同じフォームでデータの中身だけ変える時は、例えばコマンドボタンを2つ使って切り替えるようにします。     デザインビューでボタンを作って、プロパティを開き、イベントからクリック時の欄の右横の「・・・」というボタンを押し     VBAコードを入力します。     例えば、       Private Sub コマンド0_Click()          Me.RecordSource = "テーブルA" 'またはテーブルA'          Me.Refresh       End Sub (本当は、エラートラップを作るのが流儀ですが、ここでは省いています) ところで、AとBの間にリレーションシップがあるということですが、A’とBの関係はどうなるのでしょう。Bを放置すると矛盾が生じるような気もしますし、B’を作るのであれば、上記「2」の方法では、少々一手間加えなければなりません。 AとBが一対一の関係であればクエリーを組んでそれをレコードソースにすれば良いですし、AとBが一対多の関係で、フォームにサブフォーム(レコードソースはテーブルB)が配置されているのであれば、「2」のコードにもう一手間必要になります。 理解度にもよりますので、一回目の回答はとりあえずここまでにしておきますが、必要に応じて補足にてご質問ください。

ng999
質問者

補足

大変丁寧なご回答ありがとうございました。 ご指摘のとおり、理解力が足りず、第1の方法に従いました。 確かにテーブルA’の値は正しくフォーム上に表示されました。 しかし、それとリレーションシップのあるBの値は表示されず #Name? となりました。 「フォームのプロパティ」⇒「データ」⇒「レコードソース」 の右横にある「...」を押すとクエリービルダなるものが開かれましたが、ここにBが表示されていませんでした。 このクエリービルダ上でもBをA’に関連づけ、しかるのに 表示したいBのデータ項目も選択しないといけない、ということでしょうか(マニュアルで)。。結構、ややこしいですね。 ひきつづきご指導お願いいたします。

関連するQ&A

専門家に質問してみよう