Accessのレポートに取り消し線を表示したい

このQ&Aのポイント
  • Accessのレポートで、結婚して姓が変わった場合に新しい姓を表示する方法を教えてください。
  • 結婚して姓が変わった場合、Accessのレポートで過去の姓を取り消し線で表示する方法を教えてください。
  • Accessのレポートにおいて、新しい姓が入力された場合に過去の姓に取り消し線を表示する方法を教えてください。
回答を見る
  • ベストアンサー

Accessのレポートに取り消し線を表示したい

いつもお世話になっています。 名簿を作成しているのですが、結婚して姓が変わった場合、 上書きせずに新しい姓を別のテキストボックスに入力します。 これをレポートとして出力する際、新しい姓が入力された場合は、 過去の指名のテキストボックスに二重線を引きたいのですが うまくいきません。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If 新姓 <> "" Then Me.取り消し線1.Visible = True Me.取り消し線2.Visible = True Else Me.取り消し線1.Visible = False Me.取り消し線2.Visible = False End If End Sub お力添えをお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.6

もし、旧姓の名を新姓の名にも使用するのであれば、 レポートのレコードソースを、 SELECT 名簿.ID, [名簿]![姓] & [名簿]![名] AS 旧姓, IIf(IsNull([名簿]![新姓]),"",[名簿]![新姓] & [名簿]![名]) AS 新姓 FROM 名簿; のようにするか、あるいはNo4のように、新姓の姓と名を使って、 SELECT 名簿.ID, [名簿]![姓] & [名簿]![名] AS 旧姓, [名簿]![新姓] & [名簿]![新名] AS 新姓 FROM 名簿; のようにするかのどちらかだろうと、思いますが。 それと、質問のコードの中の、 If 新姓 <> "" Then の旧姓はレポートのフィールド名になります。 以上、レコードソースが原因ならば、ということで。

suzupen
質問者

お礼

何度も丁寧に回答いただき何とか原因を突き止めることができました。 本当にありがとうございます。

その他の回答 (6)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.7

No6の >の旧姓はレポートのフィールド名になります。 は の新姓はレポートのフィールド名になります。 です。失礼しました。

suzupen
質問者

補足

何度も丁寧に回答していただき本当にありがとうございます。 新姓が入ったときのみ旧姓に線を表示するという部分だけ 新規のDBで作成したところ、問題なく出来ました。 それを現在作成中のDBに置き換えると、すべて表示になってしまいます。 ご指摘いただいた名前の部分も、間違っていません。 しかし構文以外のどこかでおかしいので出来ないということははっきりしました。 これを今からひとつづつ検証していきます。 いいご報告ができるよう頑張ります。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.5

No4です。 >AS 名前 は AS 旧姓 です。 No4のたとえばとして、 SELECT 名簿.ID, [名簿]![姓] & [名簿]![名] AS 旧姓, [名簿]![新姓] & [名簿]![名] AS 新姓 FROM 名簿; のように、旧姓の名を新姓の名にくっつけて いたりしていませんか。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

テーブルの構造を ID 姓  名  新姓 新名 として、レポートのレコードソースを、 SELECT 名簿.ID, [名簿]![姓] & [名簿]![名] AS 名前, [名簿]![新姓] & [名簿]![新名] AS 新姓 FROM 名簿; としても、二重線が特定のところにひかれます。 レコードソースの旧姓の姓と名、新姓の姓と名 を取り違えていたり、入れ替わっていたり していませんか。

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.3

> If 新姓 <> "" Then 新姓に何か入力されていれば という意味でしょうから  If Not IsNull(新姓) Then でしょうね。 なお、「新姓」がテキストボックスなら 他のコントロールと同様に  Me.新姓 と記述する方が良いでしょう。

suzupen
質問者

お礼

お世話になっております。 レポートのレコードソースにクエリで結合したフィールドを参照していたのですが これをテーブルのフィールドにしたところ問題なく動作しました。 レポートでは、このテーブルのフィールドは不要なのですが、隠しておくなど工夫したいと思います。 VBAの構文の知識が怪しいため、自己流の数式はIf Not IsNull(新姓) Thenに改めます。 また機会がありましたらよろしくお願いいたします。

suzupen
質問者

補足

早々に回答いただきありがとうございます。 〉新姓に何か入力されていれば という意味でしょうから まさにその通りです。 自分で作成した式では()を入れていなかったので Me.新姓としてさっそく作り直してみました。 しかし、やはりすべてのデータに二重線が表示されたままになります。 テーブルでは、姓と名のフィールドに分けてあります。データは、フォームで入力します。 それをクエリで&でつなぎ「旧姓」、同様に「新姓」とし、レポートで参照しています。 そのあたりに問題があるのでしょうか。 アドバイスよろしくお願いいたします。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

No1の方の回答に加えることは ほとんどないのですが、 レポートのレコードソースが、 名前 新姓 のようにあれば、問題なく表示されると思いますが。 >上書きせずに新しい姓を別のテキストボックスに入力します。 新姓はレポートのレコードソースにどのように 設定されていますか?

suzupen
質問者

お礼

お世話になっております。 レポートのレコードソースにクエリで結合したフィールドを参照していたのですが これをテーブルのフィールドにしたところ問題なく動作しました。 レポートでは、このテーブルのフィールドは不要なのですが、隠しておくなど 工夫したいと思います。 このたびはお世話になりありがとうございました。 また機会がありましたらよろしくお願いいたします。

suzupen
質問者

補足

早々に回答いただきありがとうございます。 テーブルでは、姓、名とフィールドを分けています。それをクエリで&でつなぎ「旧姓」としています。 「新姓」も同じで、姓、名とフィールドを分け(名は変わらないかもしれませんが、念のため作成しています)ています。 それをフォームで入力編集するようにし、それをレポートで参照しています。 二重線は、書面として残す際にのみ必要なので、「新姓」が入力されているデータのみ、 レポート上で二重線が表示されるように設定したいと考えています。 説明が足りず失礼いたしました。 アドバイスよろしくお願いいたします。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

問題ないと思うのですが、ひょっとして直線コントロールの名前が違っていたりしませんか? なお、別のテキストボックス→テーブルの別のフィールドという意味と判断しています。 http://www.accessclub.jp/urawaza/32.html >新姓 <> "" がエクセル風と感じましたが、動作する様ですね。 どううまくいかないのか、どんなエラーが出るのか開示していただけると、先輩諸賢の回答が得られると思います。

suzupen
質問者

お礼

お世話になっております。 何とか先輩諸賢方のお知恵をいただいて解決することができました。 問題は構文ではなく、参照する先をクエリで結合したフィールドにしていたことが 原因でした。 このたびはお世話になりました。 また機会がありましたらどうぞよろしくお願いいたします。

suzupen
質問者

補足

早々に回答いただきありがとうございます。 エラーは、すべてのデータに二重線が引かれたままになることです。 >新姓 <> "" がエクセル風と感じましたが、動作する様ですね。  If Not IsNull 新姓 Then  If 新姓 <> Null Then のようにもしてみたのですが、結果は同じでした。 二重線を引くのはレポートで書面として出力する際にだけ必要なので 旧姓、新姓はフォームで入力しています。 またいいお知恵がありましたらよろしくお願いいたします。

関連するQ&A

  • Access レポートの詳細Formatに複数の式

    いつもお世話になっています。 レポートの詳細に結婚して姓が変更になった場合、旧姓に取り消し線を引く という式を作成しました。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If 新姓 <> "" Then Me.取り消し線1.Visible = True Me.取り消し線2.Visible = True Else Me.取り消し線1.Visible = False Me.取り消し線2.Visible = False End If End Sub 今回は、住所も変更になって新住所が入力されたら、旧住所に取り消し線を引きたいと 思います。 ただし、変更にならない場合もあるので、別のIF文になります。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If 新住所 <> "" Then Me.取り消し線3.Visible = True Me.取り消し線4.Visible = True Else Me.取り消し線3.Visible = False Me.取り消し線4.Visible = False End If End Sub レポートの詳細_Formatに複数の条件を設定することができるのでしょうか。 お力添えをお願いいたします。

  • Accessのレポートでデータがなくても罫線だけ表示させたい

    Win2000,Access2000を使用しています。 Microsoftのホームページで「[AC97] レコードがない場合も用紙の最後まで罫線を出力する方法」を応用して以下のVBを作成しました。 ですが、9行目までデータを入力すると9行目と10行目の両方の行に9行目のデータが表示されます。 8行目まででしたら、9、10行目は空白で罫線(直線)が表示されます。 どなたか解決法をご存知でしたらお教え下さい。 Option Compare Database  Dim A As Integer '-------今何行目なのかをカウントする為の変数  Dim B As Integer '-------今回印刷する予定のレコード件数を入れて                  おく変数 ---------------------------------------------------- Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer)   A = 0   B = DCount("ID", "Q05商品リスト")   Me!改ページ3.Visible = False End Sub ---------------------------------------------------- Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)  A = A + 1  If A Mod 10 = 0 Then    Me!改ページ3.Visible = True  Else    Me!改ページ3.Visible = False    If A < B Then      Me.NextRecord = True      Me!商品名.Visible = True      Me!メーカー名.Visible = True    ElseIf A = B Then      Me.NextRecord = False      Me!商品名.Visible = True      Me!メーカー名.Visible = True    Else      Me.NextRecord = False      Me!商品名.Visible = False      Me!メーカー名.Visible = False    End If   End If End Sub

  • ACCESS  日付が変わった場所で改ページしたい

    Win 7 Access2013 大変、お世話になっています。よろしくお願いしたいと思います。 日程表で、詳細に「日付」「場所」「時間」「内容」などのフィールドがありA5の用紙に印字しています。1枚の用紙に収まらない場合、2枚目に順次印字されています。 この2枚目に移る時、「日付」が変わった時点で改ページをしたいのです。「日付」は日が変わった時だけ入力しています。 色々、調べてみて、グループ化もしてみましたがうまく出来ませんでした。「グループ化」の中で、印字の時の「グループ全体」という項目が Access2013では見当たりませんでした。 何卒、ご教示方よろしくお願いいたします。 【備考】 モジュールには、ここでご教示いただいた下記のような「線」の記述をしています。 Option Compare Database Option Explicit Dim HI As String Dim TI As String Dim NAIYO As String Private Sub ページヘッダーセクション_Format(Cancel As Integer, FormatCount As Integer) HI = """" TI = """" NAIYO = """" End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If HI <> Me.行程_日付 Then Me.直線51.Visible = True HI = Me.行程_日付 Else Me.直線51.Visible = False End If If TI <> Me.テキスト44 Then Me.直線53.Visible = True TI = Me.テキスト44 Else Me.直線53.Visible = False End If If NAIYO <> Me.内容 Then Me.直線55.Visible = True NAIYO = Me.内容 Else Me.直線55.Visible = False End If End Sub Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer) Me.ScaleMode = 1 Me.ForeColor = 0 Me.DrawStyle = 0 Me.DrawWidth = 4 Me.Line (1.51 * 567, 0)-(1.51 * 567, 14400) Me.Line (6.8 * 567, 0)-(6.8 * 567, 14400) Me.Line (8.3 * 567, 0)-(8.3 * 567, 14440) End Sub

  • access レポートで罫線を最後まで出力する方法

    accessのbvaの本を参照してレコードがない場合でも最後まで罫線を出力する方法を試しているのですが、インクリメントがうまくいっていないのかいつまでも改ページを続けてしまいます。 どなたか解決する方法を教えてください。 Option Compare Database Option Explicit '次の3つの変数はdeclarationセクションで宣言します '現在印刷中のレコード番号を表す変数 Private pintRecord As Integer 'レコードソースの全レコード数を表す変数 Private pintRecordMAX As Integer '1ページ当たりに印刷するレコード数の定数 Private Const cintRecperPage As Integer = 15 Private Sub グループヘッダー0_Format(Cancel As Integer, FormatCount As Integer) '現在印刷中のレコード番号を初期化します pintRecord = 0 'レコードソースの全レコード数を取得します pintRecordMAX = DCount("*", "T_出荷明細", "出荷No=reports![R_出荷証明書3 test]![出荷No]") '"*"にすることでクエリ内のレコード数をカウント。Null値フィールドを含むレコードも対象。 End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) '各テキストボックスの可視/非可視のフラグ Dim blnVisible As Boolean '現在印刷中のレコード番号をインクリメントします pintRecord = pintRecord + 1 If (pintRecord Mod cintRecperPage) > 0 Then '1ページ内の途中のレコードを印刷している場合 '改ページしないようにします Me!bpage.Visible = False '印刷するレコードの位置によって、各テキストボックスの可視/非可視の 'フラグと、次レコードへ進めるかどうかの設定を行います If pintRecord < pintRecordMAX Then blnVisible = True Me.NextRecord = True ElseIf pintRecord = pintRecordMAX Then blnVisible = True Me.NextRecord = False Else blnVisible = False Me.NextRecord = False End If Else '1ページ内の最後のレコードになったとき If pintRecord <= pintRecordMAX Then 'まだ印刷するレコードが残っているときはその行を印刷後、改ページします blnVisible = True Me!bpage.Visible = True Else '印刷するレコードがもうないときはその内容は印刷しません blnVisible = False End If End If 'フィールドと連結したテキストボックスの可視/非可視を設定します Me![品番].Visible = blnVisible Me![品名].Visible = blnVisible 'Me![寸法使用].Visible= blnvisible Me![数量].Visible = blnVisible Me![備考].Visible = blnVisible End Sub

  • 行数を固定して納品書を作成したが、いらない部分がでる

    こんばんは、提出時間がせまっているので、 あせって、質問しました。 今、アクセスにて納品書のレポートの作成中です。 Q_売上テーブルとQ_売上明細テーブルをつかって、 レポートを作成し、5行に固定したかったので、 下記のようなVBAを記述しました。 行は、固定されましたが、 なぜか1行しかない時などに、 商品区分だけが2行目3行目に1行目の内容をコピーして はいってくるのです。 どこがおかしいのかわからず、苦戦中です。 ご教授、よろしくお願いいたします。 Option Compare Database Dim AAA As Integer Dim BBB As Integer Private Sub グループヘッダー0_Format(Cancel As Integer, FormatCount As Integer) AAA = 0 BBB = DCount("伝票番号", "Q_売上明細テーブル", "伝票番号='" & Me!伝票番号 & "'") End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) AAA = AAA + 1 Me!テキスト54 = AAA If AAA Mod 5 = 0 Then If AAA < BBB Then Me!改ページ55.Visible = True Me.Section(3).Visible = True ElseIf AAA = BBB Then Me!テキスト54.Visible = True Me!商品区分.Visible = True Me!商品名.Visible = True Me!数量.Visible = True Me!単価.Visible = True Me!金額.Visible = True Else Me!テキスト54.Visible = False Me!商品区分.Visible = False Me!商品名.Visible = False Me!数量.Visible = False Me!単価.Visible = False Me!金額.Visible = False End If Else Me!改ページ55.Visible = False Me.Section(3).Visible = False If AAA < BBB Then Me.NextRecord = True Me!テキスト54.Visible = True Me!商品区分.Visible = True Me!商品名.Visible = True Me!数量.Visible = True Me!単価.Visible = True Me!金額.Visible = True ElseIf AAA = BBB Then Me.NextRecord = False Me!テキスト54.Visible = True Me!商品区分.Visible = True Me!商品名.Visible = True Me!数量.Visible = True Me!単価.Visible = True Me!金額.Visible = True Else Me.NextRecord = False Me!テキスト54.Visible = False Me!商品区分.Visible = True Me!商品名.Visible = False Me!数量.Visible = False Me!単価.Visible = False Me!金額.Visible = False End If End If End Sub

  • 取り消し二重線を表示させる方法 その2

    『取り消し二重線を表示させる方法』ではお世話になりました。 おかげさまで快適に処理が進んでおります。 が、また一つ、つまづいてしまいました。 >テーブルに”受注年月日” ”作成月日” ”保管年数” ”保管期限”というフィールドがあります。  保管期限はすべて年度末の日付で設定しています。  質問は、レポートもしくはフォームを作成して印刷時、保管期限が過ぎた行に赤い取り消し二重線 を表示させる方法です。日付フィールドは、元々エクセルデータをコピーしているだけなので  ”2010.12.31”の様に表示されています。 これの回答として >Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)  If DateValue(Replace([保管期限], ".", "/")) < Date Then  Me!L1.Visible = True  Me!L2.Visible = True  Else  Me!L1.Visible = False  Me!L2.Visible = False  End If  End Sub と頂きましたが、その他に"備考"というテーブルもあり、レコードによって 〝月"とか"水"など平日の曜日が入っている時があります。お伺いしたいのは、 "火"や"木"が入力されている時は、保存期限が過ぎていても二重線を引かない様にするというのと、フィールド"保管期限"が空白だった時も二重線を引かないというのを上記の記述に追加したいのですが、教えていただけないでしょうか?

  • マウスが触れるとテキストを表示し離れる非表示にする

    アクセスです。 フォームにラベルを設置して、 そのラベルにマウスが触れたらテキストボックスを表示させたいのです。 フォームのオープンイベントは Private Sub Form_Open(Cancel As Integer) Me.テキスト2.Visible = False End Sub になっています。 ラベルのマウスボタン解放時イベントで Private Sub ラベル0_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.テキスト2.Visible = True End Sub にして、ラベルをクリックするとテキストボックスが表示されます。 マウスボタン移動時イベントで Private Sub ラベル0_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.テキスト2.Visible = True End Sub にすると、理想通りラベルからマウスが触れたらテキストボックスが表示されます。 ここまではいいのですが マウスのカーソルが離れたら またテキストボックスを非表示にしたいのですがどうすればいいですか?

  • Access 97 VBAについて

    Access VBAについて教えてください。 初心者ですが、レポートに表示されるテキストボックスの”項目名”と”内容”プロパティーに重複データ非表示にしています。そして、非表示となった部分に”〃”を表示するため別のテキストボックス、”隠しオブジェクト1”及び”隠しオブジェクト2”を配置しています。???にどんな記述が必要かわかりません。”項目名”だけであれば問題なく表示されるのですが”内容”についても同様に処理したいのです。 どうぞ宜しくお願いいたします。 Option Compare Database Option Explicit '値を保持するために外側に変数を定義します。 Dim varA As Variant --------------------------------------------------- Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)   If Me.項目名 = varA Then    Me.隠しオブジェクト1.Visible = True Else Me.隠しオブジェクト1.Visible = False End If varA = Me.項目名 ???? If Me.内容 = varA Then Me.隠しオブジェクト2.Visible = True Else Me.隠しオブジェクト2.Visible = False End If varA = Me.内容 End Sub

  • アクセス レポート バックカラーの変更方法

    現在レポートで1行ごとにバックカラーを変えて印刷しておりますが、それをチェックボックスにチェックがはいった行だけをカラーにするよう変更したいと考えておりますが、よくわかりません。現在のコードをコピーしました。お手数ですがご指導願います。 Option Compare Database Dim bline As Integer Private Sub Report_Open(Cancel As Integer) End Sub Private Sub ページヘッダー_Format(Cancel As Integer, FormatCount As Integer) bline = 0 End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) bline = bline + 1 If bline Mod 2 Then Me.Section(0).BackColor = 16777215 Else Me.Section(0).BackColor = 12663225 End If End Sub

  • アクセス2000 5行で改ページ

    アクセス2000のレポートで、5行で改ページをさせようと以下のようにコードを記述しましたがうまくいきません。 どなたかアドバイスをお願いします。 配置されているテキストボックスは、 [氏名] [人事区分チェック1] [人事区分チェック2] [人事区分チェック3] [人事区分チェック4] [人事区分チェック5] [人事区分チェック6] [人事区分チェック7] [その他の内容] [役職] [採用年月日] [契約終了日] [備考] でコードは以下の通りです。 Dim i, j Private Sub グループヘッダー0_Format(Cancel As Integer, FormatCount As Integer) i = 0 j = DCount("*", "採用時提出書類管理クエリ", "[教授会]=reports![92 人事関係報告書]![教授会]") End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) i = i + 1 If i Mod 5 = 0 Then If i <= j Then Me![bpage].Visible = True Else Me![氏名].Visible = False Me![人事区分チェック1].Visible = False Me![人事区分チェック2].Visible = False Me![人事区分チェック3].Visible = False Me![人事区分チェック4].Visible = False Me![人事区分チェック5].Visible = False Me![人事区分チェック6].Visible = False Me![人事区分チェック7].Visible = False Me![その他の内容].Visible = False Me![役職].Visible = False Me![採用年月日].Visible = False Me![契約終了日].Visible = False Me![備考].Visible = False End If Else Me![bpage].Visible = False If i < j Then Me.NextRecord = True Me![氏名].Visible = True Me![人事区分チェック1].Visible = True Me![人事区分チェック2].Visible = True Me![人事区分チェック3].Visible = True Me![人事区分チェック4].Visible = True Me![人事区分チェック5].Visible = True Me![人事区分チェック6].Visible = True Me![人事区分チェック7].Visible = True Me![その他の内容].Visible = True Me![役職].Visible = True Me![採用年月日].Visible = True Me![契約終了日].Visible = True Me![備考].Visible = True ElseIf i = j Then Me.NextRecord = False Me![氏名].Visible = True Me![人事区分チェック1].Visible = True Me![人事区分チェック2].Visible = True Me![人事区分チェック3].Visible = True Me![人事区分チェック4].Visible = True Me![人事区分チェック5].Visible = True Me![人事区分チェック6].Visible = True Me![人事区分チェック7].Visible = True Me![その他の内容].Visible = True Me![役職].Visible = True Me![採用年月日].Visible = True Me![契約終了日].Visible = True Me![備考].Visible = True Else Me.NextRecord = False Me![氏名].Visible = False Me![人事区分チェック1].Visible = False Me![人事区分チェック2].Visible = False Me![人事区分チェック3].Visible = False Me![人事区分チェック4].Visible = False Me![人事区分チェック5].Visible = False Me![人事区分チェック6].Visible = False Me![人事区分チェック7].Visible = False Me![その他の内容].Visible = False Me![役職].Visible = False Me![採用年月日].Visible = False Me![契約終了日].Visible = False Me![備考].Visible = False End If End If End Sub データが5件未満は正しく表示されますが、5件を超えると2ページ目が4件しか表示されなかったりします。 グループ化がされており、[bpage]という改ページが入っています。 よろしくお願いします。

専門家に質問してみよう