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

解決済みの質問

access2003レポートの文字列の連結について

access2003で宛名ラベルを作成しています。
レポートで氏名と敬称を連結して印刷をしたいのですが敬称のところが数値の1と印刷されます。
敬称はプルダウンメニューになっていて予めテーブルで設定された値を印刷させたいのです。ちなみにレポートはクエリから抽出しています。
テーブルの設定は数値型でコンボボックスで別のテーブルから様、先生などの値を選択できるようになっています。
うまく説明できませんが、レポート上で氏名と敬称のフィールドを連結しなければうまくいきます。
氏名と敬称を連結して表示させる方法を教えてください

投稿日時 - 2008-03-18 10:26:39

QNo.3872927

困ってます

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

住所録:

ID__氏名__________敬称_ID
01__鈴木 一郎___________0
02__中村 主水___________1

敬称:

ID__敬称
00__様
01__先生

クエリ1:

ID__宛名
00__鈴木 一郎 様
01__中村 主水 先生

SELECT 敬称.ID, 住所録!氏名 & " " & 敬称!敬称 AS 宛名
FROM 敬称 INNER JOIN 住所録 ON 敬称.ID=住所録.敬称_ID;

これで、レポートではクエリで生成した列[宛名]を利用できます。

========================================================================

01__鈴木 一郎___________0
02__中村 主水___________1

とクエリで列[宛名]を生成しないやり方を採用する場合は・・・。

[ID_______][氏名_________][敬称_ID___][=[氏名] & " " & ・・・]

と、レポートに[宛名]表示用のテキストボックスを配置します。

=[氏名] & " " & DLookup("敬称", "敬称", "ID=" & [敬称_ID])

と、Access の DLookup関数を使うという手もあります。

[氏名」と[敬称_ID]をそのまま連結すると、[鈴木 一郎 0][中村 主水 1]となります。
が、このように翻訳して連結すれば目的は達成されます。
が、これは DLookup関数の処理速度を考えれば避けたい手法です。
どうしても、この手法を使いたければ ADO で参照関数を自作されたがいいです。

========================================================================

クエリもDLookup関数も多用したくない場合は・・・。

SQL文=冒頭のクエリを<レポート!住所録!レコードソース>で生成する手もあります。

投稿日時 - 2008-03-18 11:12:18

お礼

いろいろ試してやってみました。
DLookUp関数を使うことになりました。
何とかなりましたので報告します。
ありがとうございました。

投稿日時 - 2008-03-18 15:11:54

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

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

回答(2)

ANo.2

>敬称のところが数値の1と印刷されます。
フォームのコンボボックスで敬称のIDを選択しているのですね
それがレポートではテキストボックスになっているのでIDがそのまま表示されているのでしょう

解決方法は2つ

1)レポートのほうの敬称欄は非連結テキストボックスにして
=Choose([敬称ID],"様","先生",・・・)

2)レポートのほうの敬称欄もコンボボックスに変えフォームと同じ設定にする
(レポートでもコンボボックスは使えます、プルダウンボタンなんかは表示されません)

投稿日時 - 2008-03-18 12:34:22

お礼

ありがとうございます。
またいろいろ試してやってみます。

投稿日時 - 2008-03-18 15:12:57

あなたにオススメの質問