Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(指定なし : 指定なし)
値の代入マクロでテキストの項目名を変化させたい
投稿日時: 18/05/19 12:56:10
投稿者: okada1234

お世話になりありがとうございます
質問です
あるフォームでテキストの指定をつど変えたいです
たとえば 初期作成のときは 3月売り上げ(項目名 URIAGE3)を指定・表示して
(同じフイ−ルドで べつの時には)  5月(項目名 URIAGE5)を表示したいです
フォームの作成・表示としては
作成時に テキストフイ−ルドプロパティへ URIAGE3 として
5月(項目名 URIAGE5)を表示したいときには
テキストフイ−ルドのところへ URIAGE5 を
値の代入マクロ で指定すれば いいと思うのですが
具体的な マクロ作成をお教えいただきたく
(ソーステーブルなら アイテムへ[RecordSource]指定できりかえことができるのですが)
宜しくお願い致します゜

回答
投稿日時: 18/05/21 09:31:52
投稿者: hatena
投稿者のウェブサイトに移動

どのような条件で切り替えるか不明ですが、
テキストボックスのコントロールソースの設定で切り替えることが可能です。
 
=IIf(条件式,[URIAGE3],[URIAGE5])
 
切り替えるフィールドが多いときは、
 
=Switch(条件式1,[URIAGE3],条件式2,[URIAGE4],条件式3,[URIAGE4],・・・・)
 
あるいは、条件式を工夫して、1,2,3,・・という結果になるようにすれば、
 
=Choose(条件式,[URIAGE3], [URIAGE4], [URIAGE5]・・・・)
 
 
ただし、
3月売上、4月売上、5月売上 というようなフィールドを持つことは、データベースの設計として間違っています。
クエリやフォーム、レポートの設計が上記のように複雑になります。
もし、年度が替わったらどうしますか。年度ごとにテーブルを作成する必要がでてきます。
このような場合は、
 
年度 月 売上 というフィールドを持たせて、データが縦に並ぶようにします。
こうすれば、クエリで抽出条件を設定すれだけで、希望の年月の売り上げを参照できます。
パラメータクエリにすれば、年月をパラメータで指定できます。
フォームやレポートではこのクエリをレコードソースにすればすみます。

回答
投稿日時: 18/05/22 10:31:25
投稿者: Suzu

こんにちは。
 
基本は、hatena さんが既におっしゃっている様にテーブルを持つのがデータベースらしいデータの持ち方です。
 
ただ、入力のGUI を考えた場合、縦横のマトリクスにした方が入力しやすい場合もあります。
多分今回もそうなのでしょう。
そんな場合、は入力フォームのレコードソースをワークテーブルにします。
 
TrnData
---------------------------
ID    商品名    年月    値
 
----------------------------
の蓄積データ用テーブルがあって
 
ワークテーブル
-----------------------------------------
ID2    商品名    Fld1    Fld2    Fld3    Fld4
1    商品A
2    商品B
3    商品C
-----------------------------------------
 
ワークテーブル2
-----------------------------------------
Fld1    201804
Fld2    201805
Fld3    201806
Fld4    201807
-----------------------------------------
 
ワークテーブル が レコードソースになり
Fld1、Fld2、Fld3・・ の コントロールの標題にワークテーブル2 の値を入れる
 
データを入力してもらうと、
ワークテーブル(データ入力後)
-----------------------------------------
ID2    商品名    Fld1    Fld2    Fld3    Fld4
1    商品A    100
2    商品B        200    300
3    商品C        500    100    200
-----------------------------------------
こうなりますから
 
ここから、
TrnDataへデータを流し込みます。
  SELECT [商品名], 201804 As 年月, [Fld1] As値
  FROM ワークテーブル
  WHERE Not Fld1 Is Null
 
  SELECT [商品名], 201804 As 年月, [Fld2] As値
  FROM ワークテーブル
  WHERE Not Fld1 Is Null
     :
  それぞれを 追加クエリで流せば良いです。
 
TrnData
---------------------------
ID    商品名    年月    値
1    商品A    201804    100
2    商品B    201805    200
3    商品B    201805    300
4    商品C    201805    500
5    商品B    201806    100
6    商品B    201807    200
----------------------------
 そのあと、ワークテーブル/ワークテーブル2 のデータを削除
 
 
 
TrnDataから、ワークテーブルへ の取り出し(データ編集時に必要)時には
追加クエリ/更新クエリを使います。

トピックに返信