ACCESSの質問です。庶務課や経理課等、様々な部署のデータをフォームから閲覧できるようにしてあるのですが、メインスイッチボードにコマンドボタンを配置し、そのコマンドボタンでフォームを開く際、経理課だけのデータをフォームに表示させるようにしたいです。庶務課だけのフォームや経理課だけのフォームをいちいち作るのではなく、コマンドボタンにフォームを開くとともに特定のレコードの選択機能(ここでは経理課を抽出する)を持たせたいのです。マクロやモジュールを作るのではなく、プロパティをいじる、もしくはイベントのビルド等、もっともシンプルな方法でこれらを実現する方法を教えてください。よろしくお願いします。

なお、コマンドボタンを作る際、ウィザードの最後の方で「特定のレコードのみを表示する」というようなラジオボタンがあったので、これがその機能かな?と思ったのですが、「関連づけがなされていない?」というようなメッセージが出てその機能が利用できません。他に方法はないでしょうか?

回答の条件
  • 1人3回まで
  • 登録:2007/01/31 23:07:07
  • 終了:2007/02/03 08:52:47

ベストアンサー

id:kn1967 No.2

kn1967回答回数2915ベストアンサー獲得回数3012007/02/01 05:29:50

ポイント42pt

質問文章から『各部署のデータが全て1つのテーブルの中に入っている』と仮定して回答いたします。


『特定のレコードを表示する』を利用したい場合はボタンを造る前に

部署を指定するためのテキストボックスを作っておく必要があります。

※テキストボックスが無いために「選択されたフォームをリンクすることは~~~」というエラーが出たのです。

※テキストボックスは非連結でも構いません

※テキストボックスではなくコンボボックスやリストボックスでもOKです。

※部署一覧テーブルを造っておいてコンボボックスやリストボックスのソースに指定しておけば、

部署構造が変わってもテーブルのデータを変えるだけでフォームの改変は不要になります。

今回は部署なので変更はまず無いと思いますが従業員単位でデータを絞りたいといったような場合に重宝しますよ。


マクロやモジュールを造るのではなく、もっともシンプルな方法としては、

上に書きましたように部署の一覧が入っているリストボックスを用意して、

その中から1部署を選択してボタンを押すという仕組みにしてしまうことですが、

どうしても、ボタンだけで処理したいということであれば、コードを作ることになります。

上記の仕組みで造ったボタンのコードを以下に書きます。

Private Sub コマンド1_Click()
On Error GoTo Err_コマンド1_Click
  Dim stDocName As String
  Dim stLinkCriteria As String
  stDocName = "テーブル名"
  stLinkCriteria = "[部署名]=" & Me![部署名]
  DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_コマンド1_Click:
  Exit Sub
Err_コマンド1_Click:
  MsgBox Err.Description
  Resume Exit_コマンド1_Click
End Sub

上記のボタンを庶務課用にしたければ一部を次のように書き換えます。

  stLinkCriteria = "[部署名]=庶務課"
id:July_Star

ありがとうございます!まさに最後のボタンのコードが目的にぴったりです!

2007/02/03 08:50:12

その他の回答(1件)

id:careplanner No.1

らいず回答回数338ベストアンサー獲得回数132007/01/31 23:45:24

ポイント28pt

フォームがどのようなものかわからないので、フォームに関しては触れないでおきます。

もし、データをスプレッドシートのように(エクセルのように)表示させる程度でよければ、抽出条件を設定したクエリをボタンから呼び出すようにボタンのウィザードを利用して作成してはいかがでしょう?

そうすれば、クエリが表示されるのでフォームを作る必要もないし、マクロなども作成する必要はないですよ。

id:July_Star

ありがとうございます。

2007/02/03 08:50:53
id:kn1967 No.2

kn1967回答回数2915ベストアンサー獲得回数3012007/02/01 05:29:50ここでベストアンサー

ポイント42pt

質問文章から『各部署のデータが全て1つのテーブルの中に入っている』と仮定して回答いたします。


『特定のレコードを表示する』を利用したい場合はボタンを造る前に

部署を指定するためのテキストボックスを作っておく必要があります。

※テキストボックスが無いために「選択されたフォームをリンクすることは~~~」というエラーが出たのです。

※テキストボックスは非連結でも構いません

※テキストボックスではなくコンボボックスやリストボックスでもOKです。

※部署一覧テーブルを造っておいてコンボボックスやリストボックスのソースに指定しておけば、

部署構造が変わってもテーブルのデータを変えるだけでフォームの改変は不要になります。

今回は部署なので変更はまず無いと思いますが従業員単位でデータを絞りたいといったような場合に重宝しますよ。


マクロやモジュールを造るのではなく、もっともシンプルな方法としては、

上に書きましたように部署の一覧が入っているリストボックスを用意して、

その中から1部署を選択してボタンを押すという仕組みにしてしまうことですが、

どうしても、ボタンだけで処理したいということであれば、コードを作ることになります。

上記の仕組みで造ったボタンのコードを以下に書きます。

Private Sub コマンド1_Click()
On Error GoTo Err_コマンド1_Click
  Dim stDocName As String
  Dim stLinkCriteria As String
  stDocName = "テーブル名"
  stLinkCriteria = "[部署名]=" & Me![部署名]
  DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_コマンド1_Click:
  Exit Sub
Err_コマンド1_Click:
  MsgBox Err.Description
  Resume Exit_コマンド1_Click
End Sub

上記のボタンを庶務課用にしたければ一部を次のように書き換えます。

  stLinkCriteria = "[部署名]=庶務課"
id:July_Star

ありがとうございます!まさに最後のボタンのコードが目的にぴったりです!

2007/02/03 08:50:12

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません