こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

締切り済みの質問

Accessレポートで場合分けした直線の引き方

いつもお世話になっております。

Access2003を使用しています。
テーブルで参加者名簿があり、その中に欠席者フラグのフィールドがあります。
この欠席者フラグフィールドに、テキストで1と入力されている人の名前の上に、
レポートから印刷した時、欠席者と分かるように直線を引きたいと考えています。

しかし、このように場合分けして直線が出たり出なかったりするやり方が分からず
困っています。

どうか、ご教示をお願いします。

投稿日時 - 2016-01-12 11:09:29

QNo.9110075

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(5)

ANo.5

【訂正】

X  IF Me.[参加・不参加]=True THEN
O  IF Me.[参加・不参加]=False THEN
O  IF NOT Me.[参加・不参加]=True THEN
O  IF NOT Me.[参加・不参加] THEN

と、訂正しておきます。

【訂正のついでに・・・】

[出欠].コントロールソース: =Not ([欠席者フラッグ]="1")

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
  Me.直線11.Visible = Not Me.[出欠]
End Sub

私は、このように[出欠]というチェックボックスを設けています。もちろん、

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
  Me.直線11.Visible = CBool(Me.[欠席者フラッグ] = "1")
End Sub

とも書けますよ。添付図は、最後に示した書き方をしています。なお、CBool()は必須ではありません。

投稿日時 - 2016-01-12 15:27:57

ANo.4

【補足1】作戦2の線の大きさの制御について

添付図の場合、横線を表示しているテキストボックスの文字の大きさはその他より3ポイント小さくしています。作戦1ですと線の大きさは線の大きさで、作戦2ですと線の大きさは文字の大きさでということになります。

【補足2】IF THEN文は論理式で表現できます。

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
  IF Me.[参加・不参加]=True THEN
     Me.直線11.Visible = True
  Else
     Me.直線11.Visible = False
  End IF
End Sub

このIF THEN文を論理式で表現すると

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
  Me.直線11.Visible = Not Me.[参加・不参加]
End Sub

となります。

蛇足とは思いましたが2点ほど補足しておきます。

投稿日時 - 2016-01-12 14:06:39

ANo.3

あまり詳しくありませんが、一般的には欠席者フラグの
フィールドを参照して、1が入力されていたら直線を引いて
何も入力されていなければ直線を引かないようにします。

なので、レポートの氏名を表示するテキストボックス上に
直線を引いておいて、それを欠席者フラグによって表示させたり
非表示にしたりします。

レポートの詳細のイベントで「フォーマット時」の箇所に
If Me.欠席 = "1" Then
Me.取り消し.Visible = True
Else
Me.取り消し.Visible = False
End If
としてみて下さい。

Me.欠席は欠席者フラグを表示しておりレポートでは非可視にします。
Me.取り消しは氏名のテキストボックスの上に引いた直線のことです。
Visible = Trueで直線を表示、Visible = Falseで非表示とします。

投稿日時 - 2016-01-12 13:41:07

ANo.2

Accessのレポート作成なんて実に21年ぶり。で、思いだし思い出し・・・。

作戦1、レポートの詳細_Formatで表示・非表示を制御。

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
  Me.直線11.Visible = Not Me.[参加・不参加]
End Sub

作戦2、SQL文で不参加線をあらかじめ生成しておく。

SELECT ID, [参加・不参加], 名前, IIf([参加・不参加],"","――――――――") AS 不参加
FROM 参加者名簿;

作戦2でも良いかと思います。

投稿日時 - 2016-01-12 11:34:56

お礼

f_a_007さん、ありがとうございます。
早速試してみます。

投稿日時 - 2016-01-12 11:59:50

ANo.1

ankle さんへ
データソースを「="_____"」にしたテキストボックスをレポートの横幅いっぱいに作成して、これをレコードに同居するその他のフィールドよりも背面に置いて、条件付書式設定で、白、黒を切り替えればできると思います。アンダーラインしか直線になるのがないので、テキストボックスの位置を半分ずらせば、真ん中に来ると思います。文字と同色であれば、直線は、上にあっても下にあっても見栄えは同じです。背面に置くのは、白くしたときに上の文字を消さない工夫です。

投稿日時 - 2016-01-12 11:33:34

お礼

panaconさん、ありがとうございます。
早速試してみます。

投稿日時 - 2016-01-12 11:58:33

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-