- ベストアンサー
accessのレポートで…
レポート(テーブル1から作成)にあるフィールド1には「1・2・3…」という数字が入っています。 この1・2・3はテーブル2(ID・名前)とリンクしています。 フォーム上ではコンボボックスにして、テーブル2の名前も表示するようになっています。 (テーブルに値としては入っていません) これでレポートを作成した場合、テーブル2の名前を表示させたいのですが、テキストボックスで Iif([フィールド1] = "1","****",Iif(… というようにしてしまうと、せっかくリンクにしたのにデータが固定になってしまうのを避けたいんです。 フォームだとコンボボックスの更新後処理とレコードの移動にコードをかけば最新の情報を表示することができたんですが、レポートでもこのようなことはできるんでしょうか? (コードをかいて処理したいです) Access2000です。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。maruru01です。 レポートもコンボボックスにすればいいと思います。 (もちろん連結で) コンボボックスの各プロパティを、 [コントロールソース]:連結するフィールド [値集合ソース]:テーブルB [列数]:2(IDと名前) [連結列]:1(ID) として[列幅]プロパティで、 「0cm;3cm」 のように、1列目(ID)の幅を「0cm」にすれば、名前だけを表示出来ます。 これだと、特にコードを書く必要はありません。
その他の回答 (2)
- maruru01
- ベストアンサー率51% (1179/2272)
No.1です。 お礼欄の件。 未入力は「Null」ということになります。 したがって、IsNull関数を使用しましょう。 If IsNull([生年月日]) Then MsgBox "ありません" Else MsgBox [生年月日] End If
お礼
そうでした!AccessではIsNullでしたね。 無事できました。 ありがとうございました。
- mshr1962
- ベストアンサー率39% (7417/18945)
方法1.#1さんの言われる通り、コンボボックスを使用する。 方法2.元になるレコードソースでテーブルを連結させたクエリを使用する。 方法3.Dlookup関数で表示する。 =Dlookup("名前","テーブル2","[ID]='"&フィールド1&"'") の様にすれば表示できます。
お礼
回答ありがとうございます。 今回は、#1の方のコンボボックスの方法でいこうと思います。 他にもいろいろなアイディアがあるんですね。 ありがとうございました。
お礼
なるほど!! 「0;3」というのがポイントですね!! 無事に表示できました♪ ついでにもう一つ質問なんですが、[生年月日]というフィールドがあります。 これは入力がされていたり、されていなかったりするんですが、これを使いたいと思って、試しに if [生年月日] = "" then msgbox "ありません" else msgbox [生年月日] end if としたら、Nullが正しくない、というエラーが出てしまいました。 どこが違うのでしょうか? よろしくお願いします。