- ベストアンサー
Accessのレポートに取り消し線を表示したい
- Accessのレポートで、結婚して姓が変わった場合に新しい姓を表示する方法を教えてください。
- 結婚して姓が変わった場合、Accessのレポートで過去の姓を取り消し線で表示する方法を教えてください。
- Accessのレポートにおいて、新しい姓が入力された場合に過去の姓に取り消し線を表示する方法を教えてください。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
もし、旧姓の名を新姓の名にも使用するのであれば、 レポートのレコードソースを、 SELECT 名簿.ID, [名簿]![姓] & [名簿]![名] AS 旧姓, IIf(IsNull([名簿]![新姓]),"",[名簿]![新姓] & [名簿]![名]) AS 新姓 FROM 名簿; のようにするか、あるいはNo4のように、新姓の姓と名を使って、 SELECT 名簿.ID, [名簿]![姓] & [名簿]![名] AS 旧姓, [名簿]![新姓] & [名簿]![新名] AS 新姓 FROM 名簿; のようにするかのどちらかだろうと、思いますが。 それと、質問のコードの中の、 If 新姓 <> "" Then の旧姓はレポートのフィールド名になります。 以上、レコードソースが原因ならば、ということで。
その他の回答 (6)
- piroin654
- ベストアンサー率75% (692/917)
No6の >の旧姓はレポートのフィールド名になります。 は の新姓はレポートのフィールド名になります。 です。失礼しました。
補足
何度も丁寧に回答していただき本当にありがとうございます。 新姓が入ったときのみ旧姓に線を表示するという部分だけ 新規のDBで作成したところ、問題なく出来ました。 それを現在作成中のDBに置き換えると、すべて表示になってしまいます。 ご指摘いただいた名前の部分も、間違っていません。 しかし構文以外のどこかでおかしいので出来ないということははっきりしました。 これを今からひとつづつ検証していきます。 いいご報告ができるよう頑張ります。
- piroin654
- ベストアンサー率75% (692/917)
No4です。 >AS 名前 は AS 旧姓 です。 No4のたとえばとして、 SELECT 名簿.ID, [名簿]![姓] & [名簿]![名] AS 旧姓, [名簿]![新姓] & [名簿]![名] AS 新姓 FROM 名簿; のように、旧姓の名を新姓の名にくっつけて いたりしていませんか。
- piroin654
- ベストアンサー率75% (692/917)
テーブルの構造を ID 姓 名 新姓 新名 として、レポートのレコードソースを、 SELECT 名簿.ID, [名簿]![姓] & [名簿]![名] AS 名前, [名簿]![新姓] & [名簿]![新名] AS 新姓 FROM 名簿; としても、二重線が特定のところにひかれます。 レコードソースの旧姓の姓と名、新姓の姓と名 を取り違えていたり、入れ替わっていたり していませんか。
- bonaron
- ベストアンサー率64% (482/745)
> If 新姓 <> "" Then 新姓に何か入力されていれば という意味でしょうから If Not IsNull(新姓) Then でしょうね。 なお、「新姓」がテキストボックスなら 他のコントロールと同様に Me.新姓 と記述する方が良いでしょう。
お礼
お世話になっております。 レポートのレコードソースにクエリで結合したフィールドを参照していたのですが これをテーブルのフィールドにしたところ問題なく動作しました。 レポートでは、このテーブルのフィールドは不要なのですが、隠しておくなど工夫したいと思います。 VBAの構文の知識が怪しいため、自己流の数式はIf Not IsNull(新姓) Thenに改めます。 また機会がありましたらよろしくお願いいたします。
補足
早々に回答いただきありがとうございます。 〉新姓に何か入力されていれば という意味でしょうから まさにその通りです。 自分で作成した式では()を入れていなかったので Me.新姓としてさっそく作り直してみました。 しかし、やはりすべてのデータに二重線が表示されたままになります。 テーブルでは、姓と名のフィールドに分けてあります。データは、フォームで入力します。 それをクエリで&でつなぎ「旧姓」、同様に「新姓」とし、レポートで参照しています。 そのあたりに問題があるのでしょうか。 アドバイスよろしくお願いいたします。
- piroin654
- ベストアンサー率75% (692/917)
No1の方の回答に加えることは ほとんどないのですが、 レポートのレコードソースが、 名前 新姓 のようにあれば、問題なく表示されると思いますが。 >上書きせずに新しい姓を別のテキストボックスに入力します。 新姓はレポートのレコードソースにどのように 設定されていますか?
お礼
お世話になっております。 レポートのレコードソースにクエリで結合したフィールドを参照していたのですが これをテーブルのフィールドにしたところ問題なく動作しました。 レポートでは、このテーブルのフィールドは不要なのですが、隠しておくなど 工夫したいと思います。 このたびはお世話になりありがとうございました。 また機会がありましたらよろしくお願いいたします。
補足
早々に回答いただきありがとうございます。 テーブルでは、姓、名とフィールドを分けています。それをクエリで&でつなぎ「旧姓」としています。 「新姓」も同じで、姓、名とフィールドを分け(名は変わらないかもしれませんが、念のため作成しています)ています。 それをフォームで入力編集するようにし、それをレポートで参照しています。 二重線は、書面として残す際にのみ必要なので、「新姓」が入力されているデータのみ、 レポート上で二重線が表示されるように設定したいと考えています。 説明が足りず失礼いたしました。 アドバイスよろしくお願いいたします。
- mitarashi
- ベストアンサー率59% (574/965)
問題ないと思うのですが、ひょっとして直線コントロールの名前が違っていたりしませんか? なお、別のテキストボックス→テーブルの別のフィールドという意味と判断しています。 http://www.accessclub.jp/urawaza/32.html >新姓 <> "" がエクセル風と感じましたが、動作する様ですね。 どううまくいかないのか、どんなエラーが出るのか開示していただけると、先輩諸賢の回答が得られると思います。
お礼
お世話になっております。 何とか先輩諸賢方のお知恵をいただいて解決することができました。 問題は構文ではなく、参照する先をクエリで結合したフィールドにしていたことが 原因でした。 このたびはお世話になりました。 また機会がありましたらどうぞよろしくお願いいたします。
補足
早々に回答いただきありがとうございます。 エラーは、すべてのデータに二重線が引かれたままになることです。 >新姓 <> "" がエクセル風と感じましたが、動作する様ですね。 If Not IsNull 新姓 Then If 新姓 <> Null Then のようにもしてみたのですが、結果は同じでした。 二重線を引くのはレポートで書面として出力する際にだけ必要なので 旧姓、新姓はフォームで入力しています。 またいいお知恵がありましたらよろしくお願いいたします。
お礼
何度も丁寧に回答いただき何とか原因を突き止めることができました。 本当にありがとうございます。