• ベストアンサー

Accessフォームのコントロールソースについて

こんにちは。お世話になります。 分からないので押していただけると助かります。 Accessのフォームでテキストボックスに表示するデータについて何ですが、 テーブルT1の項目名[住所]が、Nullの時に、[電話番号]を表示する形にしたいのですが、 コントロールソースに =IIF([ID]is null ,[仮ID],[住所] =Nz([ID],[仮ID]) のどちらを入力しても、#エラーになります。 そこで、そのようなことってできるのかどうかを教えていただきたいのです。 また、できたとして、新規入力する時には、T1のテーブルの[ID]欄に入力するようにしたいのですができますか? レコードソース=T1 です。 すみませんがよろしくお願いいたします。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

さらに疑問点があります。 [T1]テーブルに、[ID]と[仮ID]というフィールドがあるのですね。 その場合、[仮ID]を表示するコントロールはフォーム上にはないのでしょうか。 [ID]と[仮ID]が両方入力されているデータはあるのでしょうか。 その場合の[仮ID]は表示しないのでしょうか。 また、質問のようにコントロールソースを設定したいということは、[ID]がNullの場合は自動的に、 [仮ID]→[ID] と代入するということでしょうか。 (コントロールソースを設定するなら当然そういう意図だと思いますが。) 新規入力する際、[仮ID]も新規入力することがあるのでしょうか。 いろいろ疑問点はありますが、一応対応策を。 [T1]テーブルの[ID]と[仮ID]フィールドに連結したテキストボックスをそれぞれ用意しておきます。 (テキストボックス名は、それぞれ[ID]、[仮ID]とします。) フォームのレコード移動時(Current)イベントに、 If Len(Me!ID.Value) = 0 Then   Me!ID.Value = Me!仮ID.Value End If とします。 [仮ID]を表示する必要がなければ、[可視]プロパティを「いいえ」にして、フォーム上のどこか邪魔にならないところに置いておけばいいでしょう。 これで、新規入力時も既存データ更新時も[ID]のテキストボックスに入力して、[ID]に入ります。

その他の回答 (2)

回答No.3

こんばんは。 1.表示だけならSWITCHで行うのはどうでしょうか? 例: =Switch(IsNull([住所])=False,[住所],IsNull([住所])=True,[電話番号]) しかし、この場合は入力できません。 2.テーブルに連結させたままでの表示。 ベタなやり方です。 住所と電話番号のテキストボックスを2つ作成して、 レコードが読み込まれるときに、住所のNullチェックを行い 必要なテキストボックスだけを表示するというのはどうでしょうか?

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 疑問点がいくつかあります。 まず、 [ID]=[住所] [仮ID]=[電話番号] でしょうか。 だとすると、 =IIF([ID]is null ,[仮ID],[住所] という式の意味がわかりませんが。 >新規入力する時には、T1のテーブルの[ID]欄に入力するようにしたい [ID]欄に何を入力したいのでしょうか。 住所?電話番号?

totis
質問者

補足

ゴメンナサイ。 ちゃんと確認せずに投稿してしまいました。 大変失礼をいたしました。 [ID]=[住所] [仮ID]=[電話番号] です。(住所、電話番号は記入ミスです。忘れてくださいすみません) =IIF([ID]is null ,[仮ID],[住所] →IIF([ID]is null ,[仮ID],[ID]) の記入ミスです。ゴメンナサイ。 [ID]の欄にはIDを入力したいのです。 訳の分からない文章のまま質問してしまい申し訳ございません。

関連するQ&A