Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Access 2016)
日付指定して勤務シフトのフォーム作成
投稿日時: 20/02/10 16:50:37
投稿者: Cyber033

店員の出勤シフトのテーブルがあって、フィールドが日付、店舗名、店員名とします。
行見出しに店舗名、列見出しが日付(コントロールボックス内に開始日、終了日を
入力し、指定)のマトリックス表形式のフォームを作成したいのですが、デザイン
方法がわかりません。
前に同様の質問をしましたが、サブフォームを日付分メインフォーム内に付けた
形式で回答をいただきました。やはりマトリックス表のフォームを作成したいので
回答をいただきたい。なるべくVBAは使いたくありません。

回答
投稿日時: 20/02/10 17:18:07
投稿者: WinArrow
投稿者のウェブサイトに移動

文章だけではなく、「マトリクス表」のイメージを掲示したほうがよいのではないでしょうか?
 
私見ですが、
ラフな表をExcelで作ってみてはいかがでしょう。

投稿日時: 20/02/11 14:28:54
投稿者: Cyber033

 
 開始日 2020/2/20   終了日 2020/2/28
 
    2/20 2/21 2/22 2/23 2/24 2/25 2/26 2/27 2/28
横浜 
東京
小田原
大和
厚木
青葉
 
上の様なフォームで例えば2/21の小田原の販売員は誰か入力し、同様に
各日付の各店舗には誰が配置されているか入力してレポートで販売員の
勤務シフトがわかる表形式を出力したい。
列見出しの日付は最上段の開始日、終了日入力フォームで指定

回答
投稿日時: 20/02/11 19:47:18
投稿者: WinArrow
投稿者のウェブサイトに移動

掲示していただいた表イメージの左端は、「店舗名」ですよね?
 
「店員名」は、どのように表示?or入力するのでしょう?
 
若し、この表イメージで考えるならば、
「店舗名」を選択して、当該店舗に属する「店員名」一覧を表示(つまり別フォーム)する方がよいと思います。そうすると、日付けは今回の表イメージには不要だと思います。

投稿日時: 20/02/12 11:42:35
投稿者: Cyber033

開始日  2020/2/20 終了日 2020/2/28
 
店舗名 2/20 2/21 2/22 2/23 2/24 2/25 2/26 2/27 2/28
横浜  斉藤 斉藤    高橋 高橋 高橋 斉藤    斉藤
東京  高橋 高橋    斉藤 斉藤 加藤 小林    高橋
小田原 小林                加藤    加藤
大和     近藤    近藤 小林 小林 高橋    小林
厚木  加藤       加藤 近藤 近藤 近藤    近藤
青葉  池上 池上    池上 池上 斉藤 池上    池上
 
 
管理者の入力用フォームでは行見出しに店舗名、列見出しに日付が表示され
そのフォームに上表のような店員名を入力します。
各店員は上表のレポートで自分のシフト状況を確認するというような
プログラムにしたいのです。

回答
投稿日時: 20/02/12 12:44:35
投稿者: hatena
投稿者のウェブサイトに移動

引用:
前に同様の質問をしましたが、サブフォームを日付分メインフォーム内に付けた
形式
で回答をいただきました。やはりマトリックス表のフォームを作成したいので
回答をいただきたい。なるべくVBAは使いたくありません

サブフォームを使用せずに、マトリックス表にするには、クロス集計クエリを使うか、ワークテーブルを使うかになります。表示だけでいいならクロス集計クエリでいいですが、入力もしたいなら、クロス集計を使うにしても、ワークテーブルを使うにしてもVBAは必須です。

投稿日時: 20/02/12 13:32:16
投稿者: Cyber033

VBAを使用すると、引継ぎが必要になると思ってなるべく使いたくなかったのですが、
必須ならば仕方ありません。
クロス集計クエリとVBAを使った例を紹介ください。

回答
投稿日時: 20/02/12 14:10:16
投稿者: hatena
投稿者のウェブサイトに移動

Cyber033 さんの引用:
クロス集計クエリとVBAを使った例を紹介ください。

 
クロス集計クエリを使う場合
クロス集計クエリでマトリックス表形式で表示させて、店員名テキストボックスをクリックしたら、入力用フォームをダイアログモードで表示させて、そこで入力して、閉じるときにテーブルへ書き込むVBAを記述することになります。
さらにWinAPIを使って、入力フォームをテキストボックスにピッタリ重ねて、あたかもマトリックス表上のテキストボックスで入力しているように見せることも可能ですが、これはかなりのスキルを必要とします。
 
ワークテーブルを使う場合
マトリックス表形式のワークテーブルを作成して、クロス集計クエリから、VBAでワークテーブルに入力して、それをレコードソースとするフォームを開きます。そこで入力してもらい、閉じるときに、ワークテーブルから元のテーブルにVBAで書き込むという処理を記述することになります。
 
 

投稿日時: 20/02/12 16:20:04
投稿者: Cyber033

ありがとうございました。
今の私のスキルでは無理です。
店員名別、及び店舗別フォームを作成することにします。
(管理者はExcelで店舗名(行)、日付(列)の表に店員名
を記入し、でき上がったExcelの表からAccessのフォーム
に入力してもらう方法で)