あなたの映画力を試せる!POPLETA映画検定(無料) >>

受注管理システムを作っています。
受注一覧Rの最後に、完成高と未成工事高の合計をそれぞれ出したいのです。
フィールドに「工事完了日」というのがあります。
[工事完了日]が入力済みなら、完成高合計。未入力なら未成工事高合計。としたいのです。

未成工事合計の場合   IIF(IsNull[工事完了日],[テキスト42]=Sum([受注金額],"")  

だと演算子エラーになります。

アクセスは初心者です。ご回答お願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

未成工事合計のコントロールソース   


=Sum(IIf(IsNull([工事完了日]),[受注金額],0))

完成高合計のコントロールソース   
=Sum(IIf(IsNull([工事完了日]),0,[受注金額]))

直書き、間違っていたら御免。
    • good
    • 0
この回答へのお礼

無事解決しました。ありがとうございました!!引き続き質問がありますので、別トピック立てます!

お礼日時:2011/07/07 13:21

No1です。

括弧が抜けていました。

IIF(IsNull([工事完了日]),[テキスト42]=Sum([受注金額]),"")
    • good
    • 1
この回答へのお礼

ありがとうございました。()のせいだったんですね。

お礼日時:2011/07/07 13:20

オブジェクトの関係は不明ですが、IsNullの使い方としては



>IIF(IsNull[工事完了日],[テキスト42]=Sum([受注金額],"")


IIF(IsNull([工事完了日]),[テキスト42]=Sum([受注金額],"")


では?
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む

QSum関数の使いかたについて(ACCESS)

レポート上に商品A、商品B、商品Cというテキストボックスがあってそれぞれのプロパティのコントロールボックスには以下の設定がしてあります。
=DSum("[商品A]","[抽出クエリ]")
=DSum("[商品B]","[抽出クエリ]")
=DSum("[商品C]","[抽出クエリ]")
商品A~Cそれぞれの合計値は正常に表示されるのですが、商品A~Cの合計値を別に設けたテキストボックス(総計)に表示させたいのですが、何も表示されません。
総計のコントロールボックスには以下の記述をしました。
=Sum([商品A]+[商品B]+[商品C])
Web検索で関数の使い方等を調べましたが、原因が分かりません。
どなたか、サポートをお願いいたします。

Aベストアンサー

原因はNullでしたか~

値がNullの時値を変換する関数として
Nz()というのがありますので
DSumの関数自体をNz(DSum("[商品A]","抽出クエリ"),0)とすれば
Nullの場合でも ゼロ が返されるので 今度はうまく行くと思いますよ。

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

Qクエリで合計を出したい。。

こんにちは。
初歩的な質問で申し訳ありませんが、回答お願いします。
アクセスで売上をつけています。
地区ごとのクエリで合計を出したいのですが

社名  地区  売上
A社 ○○地区 1000
B社 ○○地区 2000 
C社 ○○地区 3000
D社 ○○地区 4000
E社 ○○地区 5000

という感じなんですが
どこかのセル(アクセスでもセルと呼ぶのでしょうか^_^;?)に売上の合計(ここでは15000です)が出るようにしたいのですが・・・。

Aベストアンサー

地区ごとの合計を出したいのなら、
クエリを作成し、該当するテーブルを選び
「地区」、「売り上げ」を選択して
右クリックして「集計」をクリックし
「地区」の集計を「グループ化」
「売り上げ」の集計を「合計」にする。

SQLビューで見ると

SELECT 地区名, Sum(売り上げ) AS 合計 FROM テーブル名 GROUP BY 地区名;

といった感じかな。

Qアクセスのフォーム上でのカウントについて

access2003を使用しています。

フォーム上で、A、B、C の3ランクをクエリから抽出して表示させています。

総件数はテキストボックスのコントロールソースに
=Count([ランク])

で、表示されるのですが、
ランクごとの小計が
=DCount([ランク],"A")では、フォームビューでは「#エラー」と表示されてしまいます。

記述が間違っているのでしょうか?それとも使用できないのでしょうか・・・。同じことをレポートで行おうとしたら、総件数も「#エラー」となってしまいました。

ランクごとの小計の出し方を教えてください。

Aベストアンサー

DCountはテーブルやクエリのレコードをカウントします
フォームのレコードをカウントするのなら普通の集計関数のほうがいいですね

=Sum(IIf([ランク]="A",1,0))

DCountでも出来なくはありませんが
DCount("クエリ名","*","(フォームで何らかの絞込みを行っていればその条件)")
と面倒なことになります

QAccessのレポートの集計に条件をつけたい

いつもお世話になります。
Access2010でレポートでの集計を行う際に条件をつけるには、どうすればよいか
教えて下さい。
レポートを作成した際、販売店コードでグループ化しています。
その中で消費者コードのレコードをカウントし、販売店コードフッターでカウント数を
プリントしています。
このレコード数をカウントする際に、すべてのレコードではなく、そのレコード内にある
売上額の欄が0円より大きい(売上がある)消費者の件数をカウントするようにしたいと
考えています。
明細行には売上のない消費者もプリントされるため、プリントされる行数とカウント数は
異なってきますが、それはかまいません。
また売上がない消費者も含めた全レコード数も必要ありません。
このような条件を指定するにはどうすればよいでしょうか?
よろしくお願いします。

Aベストアンサー

、販売店コードフッターに配置したテキストボックスのコントロールソースを下記のように設定してください。

=Sum(IIf([売上額]>0,1,0))

QACCESSで、EXCELのような、sumif関数のような関数ってありますか?

ACCESSで、EXCELのような、sumif関数のような関数っ
てあるのでしょうか?

現在サブフォームの中で、メインフォームで抽出した
ものを表示させているのですが、

サブフォームの[土日]フィールドに[●]印のつけられ
た部分の[売上]フィールドの売上合計を出したいと思うのです。

dsum関数を使うと、メインフォームで抽出されていな
いすべでのデータを足しているようなので、なにか方
法があれば教えていただきたく思います。

どうぞよろしくお願いいたします。

Aベストアンサー

Sum と IIF を組み合わせて使うとか。

=Sum(IIF([土日]="●",[売上],0))

QACCESS DCOUNTの抽出条件について

式1: DCount("コード","テーブル","コード=" & [テーブル]![コード])

結果の2以上のものを抽出したいのですが、どのように記述するのでしょうか?

>1または>=2またはnot 1でもいいですが・・・
記述方法が良く分かりません。

Aベストアンサー

No.3です。

> コード=の構文エラー 演算子がありません。
> 不明。
> とエラーメッセージが表示されます。

そのエラーメッセージの内容からすると、『コード』が「Null」(空白)のものがある、
ということだと思います(その事態は想定していませんでした)。
一応、こちらで作成したサンプルにて、DCountを使用した場合に、同様の
メッセージ(計2件)が表示されるのは確認しました。
(補足の文意を「集計クエリで解決はできたが、DCountの方はエラーとなる」
 と取りました。もしも集計クエリの方でも上記エラーが出ているようでしたら、
 元となるテーブルとクエリの情報(フィールド名とデータ型)をお知らせ下さい)
※なお、コードは数値型と想定しています。もしも文字列方の場合は、併せて
 式を「"コード='" & [テーブル]![コード] & "'"」と変更する必要があります。

上記のエラーを回避するには、DCountの第1引数を「*」にします。
また、コードがNullのレコードで、クエリの表示結果が「#エラー」となるのを
回避するためには、第3引数にNz関数を使用します。
(コードの最小値は0か1でしょうから、「最小値-1」(=-1か0)にするのがよいかと
 思います)

【Nullは重複数に含めない場合】
DCount("*","テーブル","コード=" & Nz([テーブル]![コード],-1))
※コードがNullの場合は、第3引数の結果がTrueにならない(Null=-1)ので
 0件扱いとなるため、抽出条件の「>1」で弾かれます。
 また、第3引数にNz関数を使用する代わりに、クエリの『コード』の抽出条件に
 「Is Not Null」を指定する(→最初から集計の対象外にする)方法もあります。

【Nullも1つのコードとして重複扱いする場合】
DCount("*","テーブル","Nz(コード,-1)=" & Nz([テーブル]![コード],-1))

No.3です。

> コード=の構文エラー 演算子がありません。
> 不明。
> とエラーメッセージが表示されます。

そのエラーメッセージの内容からすると、『コード』が「Null」(空白)のものがある、
ということだと思います(その事態は想定していませんでした)。
一応、こちらで作成したサンプルにて、DCountを使用した場合に、同様の
メッセージ(計2件)が表示されるのは確認しました。
(補足の文意を「集計クエリで解決はできたが、DCountの方はエラーとなる」
 と取りました。もしも集計クエリの方でも...続きを読む

QAccessでExcelのsumif関数の様なものは?

数種類の商品データが混在しているレポートを作成しました。
その商品別の合計金額をレポート上に表示させたいのですが、Excelにあるsumif関数のようなものはAccessにもあるのでしょうか?
ヘルプで見てみたのですが、検索条件が悪いのかわかりませんでした。
もし、そのような関数がない場合どのようにすればよいのかわかりましたら教えて下さい。お願いします。

Aベストアンサー

DSum("フィールド名","テーブルORクエリ名","条件")
です。

速度的には遅いんで、適切な集計クエリを作ったり、SQLを書いたりした方が良い場合もあります。

Qアクセスで#エラーを表示させない方法は?

アクセス2000を使用しています。フォームにテキストボックスを貼り付けて、計算式を入れています。計算できない数値になると、#エラーと表示されます。目障りなので、#エラー という表示を消したいのですが、どうしたらよろしいでしょうか?宜しくお願い申し上げ候。

Aベストアンサー

はじめは「IIF関数とIsError関数を使用して」と考えたものの、IIF関数は引数がエラーになった時点で
エラーが返されてしまう(=元の木阿弥)ので、どうしたものかと思ったのですが・・・
とりあえず、「見た感じ、何も表示されていないように見える」ということで、『条件付書式』での対応と
いうのはいかがでしょうか。

1)当該フォームをデザインビューで開く
2)当該テキストボックスを選択
3)メニューで「書式(O)→条件付き書式(D)」を選択
4)『条件付き書式設定』ダイアログが開くので、『条件1(1)』枠の左端にあるコンボボックスで「式」を選択
5)上記コンボボックスの隣が1つのテキストボックスになるので、そこに以下のような式を入力
 IsError([テキスト0])
 ※上記の式は当該テキストボックスの名前が「テキスト0」の場合です。
6)上記テキストボックスの下、右から2番目に「A」と表示された、文字色を指定するボタンがあるので、
 その左の小さな「▼」をクリックし、当該テキストボックスの背景と同じ色(既定では白のはず)を選択
7)『OK』ボタンをクリックしてダイアログを閉じる

・・・以上です。
これで、『テキスト0』の計算式がエラーになった場合は、文字色が背景と同じ色になるので、「#エラー」と
いう表示はされていないように見える、という状態にすることができると思います。

はじめは「IIF関数とIsError関数を使用して」と考えたものの、IIF関数は引数がエラーになった時点で
エラーが返されてしまう(=元の木阿弥)ので、どうしたものかと思ったのですが・・・
とりあえず、「見た感じ、何も表示されていないように見える」ということで、『条件付書式』での対応と
いうのはいかがでしょうか。

1)当該フォームをデザインビューで開く
2)当該テキストボックスを選択
3)メニューで「書式(O)→条件付き書式(D)」を選択
4)『条件付き書式設定』ダイアログが開くので、『条件1(1)』枠の...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング