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

解決済みの質問

accessのレポートで…

レポート(テーブル1から作成)にあるフィールド1には「1・2・3…」という数字が入っています。
この1・2・3はテーブル2(ID・名前)とリンクしています。
フォーム上ではコンボボックスにして、テーブル2の名前も表示するようになっています。
(テーブルに値としては入っていません)

これでレポートを作成した場合、テーブル2の名前を表示させたいのですが、テキストボックスで
Iif([フィールド1] = "1","****",Iif(…
というようにしてしまうと、せっかくリンクにしたのにデータが固定になってしまうのを避けたいんです。
フォームだとコンボボックスの更新後処理とレコードの移動にコードをかけば最新の情報を表示することができたんですが、レポートでもこのようなことはできるんでしょうか?
(コードをかいて処理したいです)

Access2000です。

よろしくお願いします。

投稿日時 - 2004-03-05 11:10:55

QNo.797445

困ってます

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

こんにちは。maruru01です。

レポートもコンボボックスにすればいいと思います。
(もちろん連結で)
コンボボックスの各プロパティを、
[コントロールソース]:連結するフィールド
[値集合ソース]:テーブルB
[列数]:2(IDと名前)
[連結列]:1(ID)
として[列幅]プロパティで、
「0cm;3cm」
のように、1列目(ID)の幅を「0cm」にすれば、名前だけを表示出来ます。
これだと、特にコードを書く必要はありません。

投稿日時 - 2004-03-05 11:52:54

お礼

なるほど!!

「0;3」というのがポイントですね!!
無事に表示できました♪

ついでにもう一つ質問なんですが、[生年月日]というフィールドがあります。
これは入力がされていたり、されていなかったりするんですが、これを使いたいと思って、試しに
if [生年月日] = "" then
msgbox "ありません"
else
msgbox [生年月日]
end if
としたら、Nullが正しくない、というエラーが出てしまいました。
どこが違うのでしょうか?
よろしくお願いします。

投稿日時 - 2004-03-05 12:01:14

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

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

回答(3)

ANo.3

No.1です。

お礼欄の件。
未入力は「Null」ということになります。
したがって、IsNull関数を使用しましょう。


If IsNull([生年月日]) Then
  MsgBox "ありません"
Else
  MsgBox [生年月日]
End If

投稿日時 - 2004-03-05 12:26:51

お礼

そうでした!AccessではIsNullでしたね。
無事できました。

ありがとうございました。

投稿日時 - 2004-03-05 13:05:10

ANo.2

方法1.#1さんの言われる通り、コンボボックスを使用する。
方法2.元になるレコードソースでテーブルを連結させたクエリを使用する。
方法3.Dlookup関数で表示する。
=Dlookup("名前","テーブル2","[ID]='"&フィールド1&"'")
の様にすれば表示できます。

投稿日時 - 2004-03-05 12:12:45

お礼

回答ありがとうございます。

今回は、#1の方のコンボボックスの方法でいこうと思います。
他にもいろいろなアイディアがあるんですね。

ありがとうございました。

投稿日時 - 2004-03-05 13:04:31

あなたにオススメの質問