dポイントプレゼントキャンペーン実施中!

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

名簿を作成しているのですが、結婚して姓が変わった場合、
上書きせずに新しい姓を別のテキストボックスに入力します。
これをレポートとして出力する際、新しい姓が入力された場合は、
過去の指名のテキストボックスに二重線を引きたいのですが
うまくいきません。

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

お力添えをお願いいたします。

A 回答 (7件)

もし、旧姓の名を新姓の名にも使用するのであれば、


レポートのレコードソースを、

SELECT 名簿.ID, [名簿]![姓] & [名簿]![名] AS 旧姓, IIf(IsNull([名簿]![新姓]),"",[名簿]![新姓] & [名簿]![名]) AS 新姓
FROM 名簿;

のようにするか、あるいはNo4のように、新姓の姓と名を使って、
SELECT 名簿.ID, [名簿]![姓] & [名簿]![名] AS 旧姓, [名簿]![新姓] & [名簿]![新名] AS 新姓
FROM 名簿;

のようにするかのどちらかだろうと、思いますが。

それと、質問のコードの中の、
If 新姓 <> "" Then
の旧姓はレポートのフィールド名になります。

以上、レコードソースが原因ならば、ということで。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/03/28 11:57

No6の


>の旧姓はレポートのフィールド名になります。



の新姓はレポートのフィールド名になります。

です。失礼しました。

この回答への補足

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

補足日時:2011/03/28 11:29
    • good
    • 0

No4です。


>AS 名前

AS 旧姓
です。

No4のたとえばとして、

SELECT 名簿.ID, [名簿]![姓] & [名簿]![名] AS 旧姓, [名簿]![新姓] & [名簿]![名] AS 新姓
FROM 名簿;

のように、旧姓の名を新姓の名にくっつけて
いたりしていませんか。
    • good
    • 0

テーブルの構造を



ID 姓  名  新姓 新名

として、レポートのレコードソースを、

SELECT 名簿.ID, [名簿]![姓] & [名簿]![名] AS 名前, [名簿]![新姓] & [名簿]![新名] AS 新姓
FROM 名簿;

としても、二重線が特定のところにひかれます。

レコードソースの旧姓の姓と名、新姓の姓と名
を取り違えていたり、入れ替わっていたり
していませんか。
    • good
    • 0

> If 新姓 <> "" Then



新姓に何か入力されていれば
という意味でしょうから

 If Not IsNull(新姓) Then

でしょうね。

なお、「新姓」がテキストボックスなら
他のコントロールと同様に
 Me.新姓
と記述する方が良いでしょう。

この回答への補足

早々に回答いただきありがとうございます。

〉新姓に何か入力されていれば
という意味でしょうから

まさにその通りです。

自分で作成した式では()を入れていなかったので
Me.新姓としてさっそく作り直してみました。
しかし、やはりすべてのデータに二重線が表示されたままになります。

テーブルでは、姓と名のフィールドに分けてあります。データは、フォームで入力します。
それをクエリで&でつなぎ「旧姓」、同様に「新姓」とし、レポートで参照しています。
そのあたりに問題があるのでしょうか。
アドバイスよろしくお願いいたします。

補足日時:2011/03/28 00:33
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/03/28 12:06

No1の方の回答に加えることは


ほとんどないのですが、

レポートのレコードソースが、

名前 新姓

のようにあれば、問題なく表示されると思いますが。

>上書きせずに新しい姓を別のテキストボックスに入力します。

新姓はレポートのレコードソースにどのように
設定されていますか?

この回答への補足

早々に回答いただきありがとうございます。

テーブルでは、姓、名とフィールドを分けています。それをクエリで&でつなぎ「旧姓」としています。
「新姓」も同じで、姓、名とフィールドを分け(名は変わらないかもしれませんが、念のため作成しています)ています。
それをフォームで入力編集するようにし、それをレポートで参照しています。
二重線は、書面として残す際にのみ必要なので、「新姓」が入力されているデータのみ、
レポート上で二重線が表示されるように設定したいと考えています。

説明が足りず失礼いたしました。
アドバイスよろしくお願いいたします。

補足日時:2011/03/28 00:27
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/03/28 11:55

問題ないと思うのですが、ひょっとして直線コントロールの名前が違っていたりしませんか?


なお、別のテキストボックス→テーブルの別のフィールドという意味と判断しています。
http://www.accessclub.jp/urawaza/32.html
>新姓 <> ""
がエクセル風と感じましたが、動作する様ですね。

どううまくいかないのか、どんなエラーが出るのか開示していただけると、先輩諸賢の回答が得られると思います。

この回答への補足

早々に回答いただきありがとうございます。
エラーは、すべてのデータに二重線が引かれたままになることです。

>新姓 <> ""
がエクセル風と感じましたが、動作する様ですね。

 If Not IsNull 新姓 Then
 If 新姓 <> Null Then

のようにもしてみたのですが、結果は同じでした。
二重線を引くのはレポートで書面として出力する際にだけ必要なので
旧姓、新姓はフォームで入力しています。
またいいお知恵がありましたらよろしくお願いいたします。

補足日時:2011/03/28 00:20
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/03/28 12:09

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