今だけ人気マンガ100円レンタル特集♪

いつもお世話になっています。
AccessのテーブルにあるYes/No型のデータをもとにして、レポートを作りたいと考えています。

使用者名 | 午前 | 午後 | 夜間 |
_____________________
佐藤さん |  レ |    |  レ |
_____________________
鈴木さん |    |  レ |  レ |
_____________________
山田さん |  レ |    |    |

上記のようなテーブルのデータを元に

佐藤さん  午前 夜間  施設利用

鈴木さん  午後 夜間  施設利用

山田さん  午前     施設利用

というようなレポートを作りたいと思います。
Yes/No型のデータから、そのデータのフィールド名をテキストとして取り出す方法を教えてください。
実際のテーブルには、フィールドが30以上あるので
レポートではYesの部分だけをテキストとして取り出し、
見やすいレポートにしたいのです。

どうぞよろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

>チェックがあった場合、レポート上の指定の部分に「利用」等の文字を書く込ませるにはどうすればよいか



色々方法はありますが。
#1の回答の「テキストボックスを配置しコントロールソースに同様に=IIf([午前]=True,"午前","")とすれば同じことができます」はレポート上に午前のコントロールがないと正しく表示しないのでクエリを作りそれを元にレポートを作成したと解釈して・・

レポートのレコードソースに先の回答のようにクエリを使っていたらクエリ上でフィールドを1つ追加してYes/No型のフィールドを合計します。Yes/No型のフィールドはテーブルの内部コードとしてTrueやYes(チェックされている)の場合-1の値、チェックされてなければ0の値を持っています。
Yes/No型のフィールドを合計すればチェックが全然なければ0が帰り1つでもチェックがあれば-1以上(-で見れば以下)の値が返るのでIIfを使えば同様に出来ます。
例えばクエリに利用Ckというフィールドを追加して
利用Ck:IIf(([午前]+[午後]+[夜間])<>0,"利用","")
とすればクエリ上で利用と空白が表示できるのでレポートに利用Ckのコントロールを配置すれば出来ます。
    • good
    • 0
この回答へのお礼

うまくいきました。ありがとうございました。まだまだ勉強不足と痛感しました。2度にわたる丁寧なアドバイス本当に感謝します。

お礼日時:2006/04/21 17:47

クエリを作ってそのクエリを元にレポートをつくって


午前:IIf([午前]=True,"午前","")
のようにすればチェックされていれば午後と表示されチェックされていなければ空白になります。
または
テーブルを元にレポートを作成しレポートにテキストボックスを配置しコントロールソースに同様に
=IIf([午前]=True,"午前","")
とすれば同じことができます。
    • good
    • 0
この回答へのお礼

うまくいきました。ありがとうございました。よろしければもう1つ教えてください。チェックがあった場合、レポート上の指定の部分に「利用」等の文字を書く込ませるにはどうすればよいか教えてください。
よろしくお願いします。

お礼日時:2006/04/20 13:38

このQ&Aに関連する人気のQ&A

レポート」に関するQ&A: レポートの書き方

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qアクセス:Yes/No型→チェックいれたら、"○"を表示。

あるフィールドの書式をYes/No型にしてます。
そして、チェックを入れたらフォームビューでは"○"を表示する。

というようなことはできますか??
アクセス初心者です。。
すみませんが、よろしくお願いいたします。

Aベストアンサー

であれば、論理式を組み合わせれば済む事です
=iif([フィールドA]=0,"",iif([フィールドC]=0,"","○"))
こんな感じですかね

QAccessでYes/No参照(チェックボックス)

2つのテーブルがあります。
顧客テーブルは顧客IDと質問
質問テーブルは顧客テーブルの質問を管理するテーブルです。
質問テーブルのフィールドは
質問ID(オートナンバー)と
質問(テキスト)と
チェック(Yes/No)です。
質問の数は不定で
例えば
ID 質問 チェック
1  A    □
2  B   □
3  C   □
という具合にテーブルを作成します。
顧客テーブルの質問フィールドが質問テーブルを参照し
チェックボックスにチェックを入れられるようにしたいのですがどうしてもチェックのところが□ではなく
Yes/Noとなってしまいます。
最終的には質問Aに対するチェックの数
質問Bに対するチェックの数
全てのチェックの数などを計算したいのですが
どのようにしたら良いでしょうか。
よろしくお願いします。

Aベストアンサー

> チェック(Yes/No)の表示が Yes/No になってしまう。
◎テーブルデザインで
 データ型は Yes/No型に なっていると思いますが、
 ルックアップの 表示コントロールが
 テキスト ボックス に なっているようです。
 これを チェック ボックス に変えれば □ になります。

> 全てのチェックの数などを計算
◎選択クエリで 集計します。
 フィールド名 ”質問”の集計は ”グループ化”を選択
 フィールド名 ”チェック”のとこをは IIF関数を使い次のようにします。
 件数: IIf([チェック]=Yes,1,0)
 集計は ”合計”を選択します。

 これで、A、B、C・・・ 別に 件数が出ます。

QACCESS Yes/No型の集計

ACCESSでチェックボックスが複数あるテーブルがあります。これら各々の個数を表示させたいと奮闘しております。複数のフィールドがあるので、やり方をご教授いただけますようお願いいたします。構造とやりたいことは下記に記します

Yesはチェックボックスにチェックが入っている状態です

テーブル
----------------------------------------------
グループ   分類1   分類2   分類3
----------------------------------------------
  A   |  Yes  |  No  |  Yes
  A   |  No   |  No   |  Yes
  A   |  Yes  |  Yes  |  No
  B   |  Yes  |  No  |  Yes
  B   |  No   |  No  |  Yes
  B   |  Yes  |  No  |  Yes
  ・
  ・
  ・
  ZZ

上記のようなテーブルがあります。これを
-----------------------------------------------------
グループ   グループ総数   分類1   分類2   分類3
-----------------------------------------------------
  A    |   3     |   2   |  1   |  2
  B    |   3     |   2   |  0   |  3
  ・
  ・
  ・
  ZZ

とういうようにグループの総数とチェックボックスにチェックが入った数を算出させたいんです

どうかご教授願います

ACCESSでチェックボックスが複数あるテーブルがあります。これら各々の個数を表示させたいと奮闘しております。複数のフィールドがあるので、やり方をご教授いただけますようお願いいたします。構造とやりたいことは下記に記します

Yesはチェックボックスにチェックが入っている状態です

テーブル
----------------------------------------------
グループ   分類1   分類2   分類3
----------------------------------------------
  A   |  Yes  |  No  |  Yes
  A   |...続きを読む

Aベストアンサー

以下でどうですか。テーブル名は実際に合わせて変更してください。


SELECT テーブル1.グループ, Count(テーブル1.グループ) AS グループの総数, Abs(Sum([分類1])) AS 分類1のYes数, Abs(Sum([分類2])) AS 分類2のYes数, Abs(Sum([分類3])) AS 分類3のYes数
FROM テーブル1
GROUP BY テーブル1.グループ;


上記では、Sum([分類1])とするとマイナスのカウントに
なるので、Abs関数で絶対値を求める方法でプラスに
変換しています。

QAccessクエリーでチェックボックスOnのものだけカウントしたい

こんにちわ。
超初心者です。

チェックボックスがOnになっているものだけカウントしたいんですが、どこ
をどうしたら良いのか分かりません。

クエリーの集計を「カウント」にしてみたのですが、Offもカウントされて
しまいます。

どうしたらよいのでしょうか?

Aベストアンサー

例えば「名前」と「チェックボックス」というフィールドが合ったとします。
選択クエリで集計欄に
名前は「カウント」、チェックボックスは「グループ化」をし、
チェックボックスの抽出条件のところに、-1と入れれば、
数は数えられますが。。。
こんなので参考になりますか?

QAccess チェックボックスを使ってレポートへの表示・非表示

ACCESS初心者です。
フォーム上でチェックボックスを使用し
ONにした場合、レポートへ決まった文章を表示し、
OFFにした場合非表示にしたいのですが、教えて下さい!!

例:『こちらまでご連絡ください。なお、・・・・・』と言う長い文章があります。これを、レポートに表示する場合 チェックボックスにチェックを入れます。結果、レポートの決まった場所に表示される。チェックを入れてない時、文章は表示されない。
と、したい時の一番簡単な方法を教えて下さい。

ご回答よろしくお願いいたします。

Aベストアンサー

関数で出来ます。
レポート上にチェックボックスと文章を表示させるテキストボックス(非連結)を作ります。
そのテキストボックスのプロパティを開きコントロールソースに
=IIf([チェックボックス名]=True,"こちらまでご連絡ください。なお、・・・・・","")
と記述します。
これでチェックボックスにチェックされている(Trueの場合)文章が表示されチェックされていなければ空白になります。
チェックボックスはプロパティの書式の可視を いいえ にして出力の際は見えないようにします。
これで出来ます。

またはクエリをレコードソースとしてレポートを出力している場合はクエリ上でも同様の記述で処理が出来ます。

QAccessのレポート機能でソート&抽出条件を指定したい

accessでレポート機能について、質問です。
エクセルでいうフィルタ機能みたいなものはあるのでしょうか。

例えば、以下の場合、職位="B"だけレポートで表示したい場合、
どうすればよいのでしょう?
CD 職位 所属
01  A  東京
02  B  東京 → このデータだけを表示
03  A  大阪

1)クエリを作って、レポートで表示するしかないのでしょうか?
2)レポートのデザインで条件指定ができるのでしょうか?

ソートの条件も変えたいのですが、どの項目をソートするかは、
どこで指定できるのでしょうか?

要はレポートの形式は1つで、様々な抽出条件とソート条件で
レポート表示したいのです。

Aベストアンサー

>1)クエリを作って、レポートで表示するしかないのでしょうか?
>2)レポートのデザインで条件指定ができるのでしょうか?
レポートのデザインで、レポートのフィルタプロパティで、職位="B"として、フィルタ適用を"はい"にすると言う方法もあります。

>ソートの条件も変えたいのですが、どの項目をソートするかは、
>どこで指定できるのでしょうか?
レポートのデザインの「並べ替え/グループ化の設定」で行います。

>要はレポートの形式は1つで、様々な抽出条件とソート条件で
>レポート表示したいのです。
1つレポートの雛形を作って、フィルタと並べ替えのプロパティと並べ替え/グループ化の設定を変えて保存し、複数のレポートを用意する。
入力した値によって変えたい場合は、フォーム上のテキストボックスの値や特定テーブルのレコードの値にを参照するクエリを作り、レポートのレコードソースにする。
またはVBAで処理する。

p.s.
レポートの表示をボタンで起動する場合、VBAやマクロを呼び出します。
VBAやマクロでレポートを開く時に、フィルタやWhere条件式を設定できます。

>1)クエリを作って、レポートで表示するしかないのでしょうか?
>2)レポートのデザインで条件指定ができるのでしょうか?
レポートのデザインで、レポートのフィルタプロパティで、職位="B"として、フィルタ適用を"はい"にすると言う方法もあります。

>ソートの条件も変えたいのですが、どの項目をソートするかは、
>どこで指定できるのでしょうか?
レポートのデザインの「並べ替え/グループ化の設定」で行います。

>要はレポートの形式は1つで、様々な抽出条件とソート条件で
>レポート表示した...続きを読む

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む

QAccessクエリでYes/No型データの抽出

AccessクエリでYes/No型データの抽出条件について教えてください。

フォーム上のオプショングループにオプションボタン 1:Yes 2:No 3:両方 の3つを作成し、選択したオプション値によって抽出条件を変えたいのですが、
Choose([Forms]![オプショングループ名],-1,0,-1 Or 0)とすると3:両方を選択した際に、Yesのデータしか抽出できませんでした。
ただ、-1 Or 0 を -1 Or 1 としたら、両方抽出されました。

処理的には解決できたのでOKなのですが、理由がわからずちょっと気持ち悪いので。。。
よろしくお願いいたします。

Aベストアンサー

Choose([Forms]![オプショングループ名],-1,0,-1 Or 0)
の関数が返す値と、Yes/No型のデータとを比較して抽出したという事ですよね?

Choose([Forms]![オプショングループ名],-1,0,-1 Or 0)
この関数は
オプショングループ名 = 1 の場合 → -1
オプショングループ名 = 2 の場合 → 0
オプショングループ名 = 3 の場合 → -1 or 0
の値を返します。

そうなると抽出条件の論理式は
1:Yesの場合  → データ = -1
2:Noの場合  → データ = 0
3:両方の場合 → データ = -1 or 0
となりますが、この3番目の式は
「データが -1 もしくは 0 の場合」という意味にはなりません。
「データ = -1」もしくは「0」のどちらかの条件を満たす場合、という意味になってしまいます。

データと比較されるのはあくまでイコールの直後にある数値だけで
括弧を付け加えると (データ = -1) or ( 0 ) のようなイメージです。

この論理式は、データが -1 であった場合には
-1(True)が返ってきて「条件を満たしている」と判定されますが
データが -1 でなかった場合は
0(False)が返ってきて「条件を満たしていない」と見なされます。

同じように考えると データ = -1 or 1 の論理式は
データ = -1 の場合  → -1
データ <> -1 の場合 → 1
の値が返ってくる事になります。

論理式というのは、返ってきた値が 0 の場合は「条件を満たしていない」と見なし
返ってきた値が 0 以外であればすべて「条件を満たしている」と見なすので
こちらの場合はデータの値と関係なく
すべてのレコードを抽出するような条件式になってしまうのです。

Choose([Forms]![オプショングループ名],-1,0,-1 Or 0)
の関数が返す値と、Yes/No型のデータとを比較して抽出したという事ですよね?

Choose([Forms]![オプショングループ名],-1,0,-1 Or 0)
この関数は
オプショングループ名 = 1 の場合 → -1
オプショングループ名 = 2 の場合 → 0
オプショングループ名 = 3 の場合 → -1 or 0
の値を返します。

そうなると抽出条件の論理式は
1:Yesの場合  → データ = -1
2:Noの場合  → データ = 0
3:両方の場合 → データ = -1 or 0
となりますが、...続きを読む

Qアクセスで特定のレコードのみのレポートを印刷したいのですが。

アクセス2003である特定のレコードのみのレポートを印刷したいと思っています。現在開いているフォームのレコードのみを印刷(レポートとして)印刷するには、ファイル→印刷→ページ指定で現在印刷しているのですが、他に方法はないでしょうか?単に「レポートの印刷」とすると全てのレコードが印刷されてしまいます。今のところ特定のレコードのみ印刷するには、まずページ数を調べなければいけないので不便です。せっかくパラメータクエリなどで、そのレコードのフォーム画面を表示させても、レポート印刷につながらないので、どなたか良い方法を教えていただけないでしょうか?よろしくお願いいたします。

Aベストアンサー

レポートの基となるクエリを開きます。
フォームに表示されている項目の中で主キーとなるフィールドがどれかを決めます。
そのクエリの中でその主キーフィールドのWHERE条件の欄を選択してビルドを開きます。
レポートを選択するフォームの一覧を開きます。
先ほど選んだ主キーの項目を選んでダブルクリックします。
Ok
そうすれば、フォームから印刷ボタンを押せば開いているページだけが印刷されます。
但し、複数ページの指定をするには、更に複雑な設定が必要ですが、
今の照会した方法を応用すればできるはずです。

QACCESSでフォームを使って、テーブルを参照、データ入力、データ更新をしたいのです

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入力画面
       ↓
レコード番号を入れると、そのレコードのデーターが画面に表示され、
その画面で修正可能
       ↓
 保存 ボタンで保存

という流れです。

レコードナンバーはIDを使おうと思っています。

データの量が莫大な為、コンポボックスなどは使えません。

できるだけ、VBAなどは使わずに作りたいです。

よろしくお願い致します。

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入...続きを読む

Aベストアンサー

まずそのテーブルを基にしてフォームを作成します。
そのフォームのヘッダー部分にテキストボックスを配置後、一旦
上書き保存。
フォームのレコードソースを
SELECT *
FROM テーブル名 WHERE ID=[Forms]![フォーム名]![テキストボックス名]
とします。
次にテキストボックスの更新後処理に
Me.Requery
とすれば完成です。
フォームを開いてテキストボックスにID入力後エンターしてください。

保存に関しては、コマンドボタン作成後クリック時イベントに
DoCmd.RunCommand acCmdSaveRecord
とすれば良いでしょう。

この手のモノは検索すれば相当数ヒットするので、そちらを参考にされるのもよろしいかと。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング