• ベストアンサー

access 条件文についての質問

accessのフォームの表設定で質問です。 テーブルAがあります。 カラムは下記です。 TYPE ,NO ,初診日 ,次診断日 あるフォームに、テーブルAの全テーブルを表示したいです。 内容は、TYPE, NO , 最新診断日。 最新診断日には、次診断日か、空であれば、初診日の日付をいれたいです。 コントロールソースには、既に TYPE, NOは入ってます。 最新診断日のコントロールソースを、どのように設定すればよいでしょうか。 =IIf(A.次診断日 Is Null,A.初診日,A.次診断日)で試してもダメで、 クエリ作成し、上記のようにしても、データが全件表示されません(半数ぐらい)。 上記で、全件でる方法か、コントロールソースの設定方法はわかりますでしょうか? (条件文違いでしょうか)

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

テーブルAをレコードソースとしたフォーム上の、テキストボックスのコントロールソースへの記述、になりますか。 レコードソースが設定されていれば、コントロールソース部分はコンボボックスの様に何を指定できるか一覧で確認することができます。 その一覧に表示されているものを使って記述していきます。 > =IIf(A.次診断日 Is Null,A.初診日,A.次診断日) ↓ =IIf([次診断日] Is Null,[初診日],[次診断日]) にしてみて、どうなりますか。

ownmart
質問者

お礼

すみません、こちらで解決しました。 ありがとうございました。

その他の回答 (5)

  • pontaacc
  • ベストアンサー率0% (0/1)
回答No.6

コントロールソースにいれるなら =IIf(IsNull([次診断日]=True) Or [次診断日]="","初診日","次診断日") だと表示されると思います

ownmart
質問者

お礼

こちらでもできました。 とりあえず下記で解決しました。 ありがとうございました。

  • meteo2
  • ベストアンサー率0% (0/1)
回答No.5

連投で失礼します。 さっきの回答に間違いがありました。 フォームのコントロールソースへは、さっきの記述ではエラーになります。 正) =nz([次診断日],DateValue([初診日])) クエリのフィールド値ではどちらでもエラーにならないようです。 最新診断日: nz([A].[次診断日],DateValue([A].[初診日])) 最新診断日: nz([次診断日],DateValue([初診日]))

ownmart
質問者

お礼

ご丁寧にありがとうございました。 こちらもためしたところ、表示が遅くなりました。 とりあえず下記で解決しました。 ありがとうございました。

  • meteo2
  • ベストアンサー率0% (0/1)
回答No.4

> 最新診断日には、次診断日か、空であれば、初診日の日付をいれたいです。 最終的な回答ではないと思いますが、上記を実現するだけならば次の方法もあります。 = nz([A].[次診断日],DateValue([A].[初診日])) 参考までに。 (Access2000 にて動作確認。)

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.3

> =IIf(A.次診断日 Is Null,A.初診日,A.次診断日)で試してもダメで、 こちらで確認した限りでは、再現できませんでした。 (意図通り、次診断日がNullなら初診日が、Nullでないなら次診断日が、  それぞれ表示されました) そこで、気になるのが > データが全件表示されません(半数ぐらい)。 の実際の状態なのですが、これは  a)テーブルにあるレコードの半数程度しか、フォームに表示されない  b)フォームにはテーブルにある全レコードが表示されるが、そのうちの   半数程度は最新診断日が空白になる のどちらでしょうか。 もしも「a)」の方なら、何らかのフィルタが掛かってしまっているということ ですので、コントロールソースの式の問題ではないことになります。 フォームのレコードソースが本当に『A』テーブルになっているか(→抽出 条件を指定したクエリになっていないか)、念のため確認してみて下さい。 一方、「b)」の方でしたら、空白に見える『次診断日』のデータが、 本当に全て「Null」なのか、を確認してみてください。 (例えば、もしも『次診断日』が日付/時刻型ではなくテキスト型なら、  スペースや空文字だったりして(つまり「次診断日 Is Null」の結果が  False)、『最新診断日』としてそれらが表示されている、という  可能性があるのではないか、と) ※この場合は、IIF関数の中の「A.次診断日 Is Null」を、   「Trim(A.次診断日 & "")=""」に変更すれば、目的の結果が  得られるかと思います。  (アンダースコア(_)などが入っていた場合には非対応です(汗)) ・・・以上、参考になるかわかりませんが(汗)

ownmart
質問者

お礼

なるほどです。 全てよまさせて頂き勉強になりました。 ありがとうございました。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

ご苦労様です。 元テーブルにID(主キー、オートナンバー)を 入れています。NOが何を意味するかわからない ので一応。以下のクエリ、 SELECT A.ID, A.TYPE, A.[NO], IIf([A].[次診断日] Is Null,[A].[初診日],Nz([A].[次診断日])) AS 最新診断日 FROM A; これで最新診断日が表示されます。 このクエリをQ診断日などで保存。 このクエリをソースとして 表形式でフォーム作成ウィザード を選択すればうまく表示される とおもいますが。何かあれば 書き込んでください。

ownmart
質問者

お礼

参考にさせて頂きました。 ありがとうございました。

関連するQ&A