- ベストアンサー
クエリからの別名フィールド(条件付き)の作成に関し
access初心者です。 以下のテーブルがあります。 ---------- 受付日 見積日 契約日 支払日 ---------- クエリでStatusという別名フィールドを作成して、 現在の進捗を表示させたいと思います。 受付日に日付が入力され、見積日がNullの場合:1 見積日に日付が入力され、契約日がNullの場合:2 契約日に日付が入力され、支払日がNullの場合:3 支払日に日付が入力された場合:4 あてずっぽで作成した式が以下になります。 Status: IIf([受付日]<>"" And [見積日]="",1,IIf([見積日]<>"" And [契約日]="",2,IIf([契約日]<>"" And [完了日]="",3,IIf([完了日]="",4,"")))) 複数条件で入れ子にしたいのですが・・・・ 当然のように #エラー となりました。 初歩的な問題で申し訳ありませんが、教示願います。
- みんなの回答 (5)
- 専門家の回答
関連するQ&A
- テーブル作成クエリ
指定の日付が来たらテーブル作成クエリを使い過去のデータ全て、自動で新しいテーブルを作成し過去のデータだけ移動したい。 SQL SELECT data.受付日, data.受付日, Year(DateAdd("m",-3,[受付日])) & "年度" AS 年度, Month([受付日]) AS 月, Int((Day([受付日])+Weekday(DateSerial(Year([受付日]),Month([受付日]),1))-2)/7)+1 AS 週日, IIf(Val(Right(Month([受付日]),1))>3,"上期","下期") AS 期, data.客先, data.発生部署, data.責任部署, data.客先クレーム対象, * FROM data WHERE (((data.受付日) Between Nz([受付開始日?],0) And Nz([受付終了日?],99999)) AND ((data.客先)=Nz([客先?],[客先])) AND ((data.責任部署)=Nz([責任部署?],[責任部署]))) ORDER BY data.受付日, data.客先;
- ベストアンサー
- その他(データベース)
- クエリーの抽出条件について
「作表条件」というフォームにテキストボックスとして「日付1」、「日付2」を設置しています。 元のテーブルには「日付」という項目があり、「日付1」から「日付2」までのデータを抽出するため、 クエリの条件式に Between Nz([Forms]![作表条件]![日付1],#1800/01/01#) And Nz([Forms]![作表条件]![日付2],#9999/12/31#) と記述しています。 ただ、元のテーブルの日付がNULL値の場合があり、その場合「日付1」および「日付2」が空欄だとNULL値のレコードが抽出されません。 「日付」がNULLの場合でも抽出できるようにするには、どのようにすればよいでしょうか? どなたか教えてください。
- ベストアンサー
- オフィス系ソフト
- Access 今日の日付の入力を省略するには?
Between~Andを使って、[受付日]の期間を指定してデータを抽出しています。 1.フォーム[F_メインメニュー]で非連結のテキストボックス[from]、[to]を作り2つの日付を入力します。 2.クエリで、[受付日]の抽出条件に以下を設定して、データを抽出します。 Between [Forms]![F_メインメニュー]![from] And [forms]![F_メインメニュー]![to] ここまでは問題ないのですが、[to]の入力を省略したら[今日の日付]が[to]の日付になるようにできないでしょうか? IIFを使って、クエリの[受付日]の抽出条件に以下のように書いてみました。(toがNullならfromから今日まで、入力されてたらfromからtoまで、と考えました。)→失敗しました。間違った式のようです。 IIF([forms]![F_メインメニュー]![to] = Null,Between [Forms]![F_メインメニュー]![from] And Date(), Between [Forms]![F_メインメニュー]![from] And [forms]![F_メインメニュー]![to]) ご存じの方、アドバイスをくださる方がいらっしゃいましたらどうぞよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Access 2003 iif [日付フィールド] is null のあとで<>がうまく働かない
Access 2003です。 [Start Date], [End Date]を入力するフォームで日付が入力されていなければ、 iif([Start Date] is null,<[End Date],>[Start Date]) のようにクエリ条件を設定したいのですが、 iif [Start Date] is null を使うと、続く条件の中で<>がうまく働かないという現象が起きます。 (クエリでなにも抽出されない) iif([Start Date] is nullの条件を入れなければ(つまり[Start Date],[End Date]はブランクにならないという前提ならば) 1. >[Start Date] 2. <[End Date] 3. Between [Start Date] And [End Date] などどれも問題なく動きますし、 iif([Start Date] is null~の条件を入れても続く条件の中で<>を使わなければ iif([Start Date] is null,[End Date],[Start Date]) はちゃんと動きます。 どうしてこのような現象が起こるのか、また回避する方法をご存知のかたがいらっしゃいましたら、どうぞご教示ください。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Access抽出クエリの基本的なこと
お世話になります。 初心者で苦労しながらもAccess2000でデータベースを作成しています。 非常に基本的な質問だと思うのですが、どなたかご教授願います。 日付を含むフィールドがあるテーブルがあり、クエリにてその日付から 年と月を拾っています。 ID 入力日 年:Year([入力日]) 月:Month([入力日]) 1 2001/07/06 2001 6 2 2002/06/07 2002 6 3 2002/07/19 2002 7 別に作成したフォームに年と月を絞り込むためのコンボボックスをそれぞれ配置し、 入力された値によって上記クエリの抽出条件に反映させたいのですが、コンボに何も 入力されていないときは全てのデータを表示したいんです。 「コンボ月=2002」&「コンボ月=6」でID=2のデータのみを、 「コンボ月=(Null)」&「コンボ月=6」でID=1と2のデータを表示したいんです。 (判りにくくてすみません。。) このような場合、抽出条件に記述する式はどのように設定したら良いのでしょうか? IIfでIsNullの条件式を組んだのですが、Nullの時に返す値が判りません。 どうかよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- クエリでの抽出条件について
クエリでの抽出条件について クエリで納品がまだ済んでいない物件について、抽出期間を設定して抽出したいのですが、うまくいかず教えてください。 抽出したいフィールドは、[納品日]、[部署]、[変更]の三つです。 フィールド[変更]は、[納品日]が変更になることがあるので、[納品日変更]というフィールドに日付が入っていたら、[変更]に[納品日変更]の日付が入るように、[納品日変更]に何も入っていなかったら、[変更]に[納品日]の日付が入るように、判定式を入れています。 [変更]の動作は、目的通りになっており問題無いのですが、いざ[納品日]、[部署]、[変更]で抽出条件を入れるとうまくいきません。 抽出条件の所に [納品日]には、Is Null [部署]には、抽出したい部署名 [変更]には、Between #2010/04/01# And #2010/05/31# それぞれAndで組んで入れていますが、何も抽出されません。 [納品日]の、Is Null と [部署]の、抽出したい部署名 のふたつだけでやると、[納品日][部署]での抽出は動作します。 しかし、この二つに[変更]をプラスし、期間を追加するとダメなようです。 [変更]のように、判定式で作ったフィールドは、抽出条件に使ってはいけないのでしょうか? それとも抽出条件のAndは二つまでとか制限があるのでしょうか? 全く別の基本的な問題が原因だと思うのですが、教えて頂きたく。
- ベストアンサー
- オフィス系ソフト
- フォームからクエリの抽出期間を指定するにあたって
フォームのテキストボックス(開始日付,終了日付)に入力された期間内の レコードをクエリで抽出するために、以下のような抽出条件を設定しています。 Between [Forms]![フォーム1]![from date] And [Forms]![フォーム1]![終了日付] ここまでは問題なく出来ています。 ですが、例えばテキストボックスに何も入力していないときに、 全ての期間から全件表示させるような方法はありませんでしょうか? IIf(IsNull([Forms]![フォーム1]![開始日付]),True,~ というような形で、IIfとIsNullの組み合わせも考えたのですが、 日付は直接フィールドでは無く抽出条件のため、 Trueより後が設定できずに悩んでおります。 出来ればVBAは使いたくないのですが、 何か良い方法はありませんでしょうか?
- ベストアンサー
- オフィス系ソフト
- クエリで日付型のIIF関数の使用
テーブル1にフィールド名→日付、データ型→日付/時刻型(主キーなし) を作成し、 クエリ1を作成し、フィールド1にテーブル1の日付フィールドをドラッグし、 フィールド2には「有無: IIf([日付]="","未",[日付])」 を入力しました。 「日付フィールドが空白なら有無フィールドは「未」、入力されているならその日付を表示する」 としたいです。 しかし画像のように 日付フィールドが空白→有無フィールドも空白 日付フィールドに日付が入っているなら→有無フィールドは#エラー になってしまいます。 何がだめなんでしょうか? よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- 集計クエリでの抽出条件
アクセスのクロス集計で質問なのですが・・・ 日付ごとの集計を行いたいのですが日付が21日締めで行いたいのです。 フォームで年と月を入れるとその月の集計を行いたいのです。 (例:フォームの日付入力2008/01と入力→集計クエリで2007/12/21~2008/01/20までの集計) この場合、抽出条件はどのように行えばよいのでしょうか
- ベストアンサー
- その他(データベース)
- 条件式について
access2007です。売上管理のDB作ろうとしています。顧客の〆日が末日でない場合、締切日を超えた時、翌月の請求分として集計・認識させるためにクエリのフィールドに入れる条件式の間違っている部分、または考え方を指摘していただきたいと思います。 伝票に[日付]"yyyy/mm/dd"を入力→[締切日]"dd"は顧客マスタを参照し、クエリーの[締切日]に"dd"を代入。[締切月]には[日付]("dd"のみ)<[締切日]の場合は入力した[日付]のmmをそのまま、[日付]>[締切日]の場合には翌月分という意味でmmに1を加えたものを返す・・というものです。 締切月: IIf(Format([日付],"dd")>[締切日],Format(DateAdd("m",1,[日付]),"mm"),Format([日付],"mm")) これだと、エラーが出てしまいます。 どこがおかしいのでしょうか?
- ベストアンサー
- その他(データベース)
お礼
kikuさん 仕事で徹夜続きだったっもので、回答遅れました。 ありがとうございます。できました!! いつも的確なご回答で、尊敬です。 また、最近気づいたのですが、 以前私の質問を、ご自身のブログに取り上げていただいたようで ありがとうございます。