• ベストアンサー

access2013でのDsum関数で質問です

フォームにてテーブルの合計を出そうとしているのですが、テキストボックスに =DSum("実収","車","店名='本社' And 集荷日=#" & Date() & "#") と、入力するときちんと反映されるのですが、 =DSum("実収","車","店名<>'本社' And 集荷日=#" & Date() & "#") と、入力すると空欄になってしまい期待する数値が出てきません。 もちろん元のデータは '本社' 以外のレコードもあるのですがその数字が反映されないのです。 どこが間違っているのか指摘していただけないでしょうか?

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

  • ベストアンサー
  • mando
  • ベストアンサー率66% (2/3)
回答No.1

簡単なプログラムを作ってテストしてみましたが、両方ともうまく動きました。 何か他の所に問題があるのではないですか。 DSum関数の直後に関数で取得した値をメッセジボックスで表示してみるとどうなりますか?  A = DSum("実収", "車", "店名='本社' And 集荷日=#" & Date() & "#")  MsgBox (A)  A = DSum("実収", "車", "店名<>'本社' And 集荷日=#" & Date() & "#")  MsgBox (A)

kima0691
質問者

お礼

お返事遅くなり申し訳ありません。 今、=DSum("実収","車","店名<>'本社' And 集荷日=#" & Date() & "#") を入力したところ、期待した結果が表示されました。 正直何が悪かったのかわかりませんが、ご回答いただきありがとうございました。

関連するQ&A

  • ACCESS VBAのDSUMを使ってUPDATE

    よろしくお願いします。 通貨型のACCESSデータベースのレコードにDSUMを使ったUPDATE文で更新をしたいのですが、 うまくいきません。 イミディエイトウィンドウで出力したSQLをACCESSのクエリーで実行したところ、 "1個のフィールドで型変換エラー"となります。 実行したSQLは下記のようなものです。 UPDATE テーブル名 SET フィールド名 = DSUM(フィールド名,"テーブル名",コードI = '0000' AND コードII BETWEEN '5110' AND '5410') WHERE コードI = '0000' AND コードII = '5980'; 因みに、更新元テーブルと更新先テーブルは同じテーブルです。 行いたいのは、コードII列の「5110」~「5410」の合計値を、「5980」の場所にUPDATEを させようとしてます。 よろしくお願いします。

  • アクセス クエリ DSum関数

    testテーブル 日付     金額 2009/04/30  1 2009/05/01  2 2009/05/02  3 2009/06/30  4 このデータを元にクエリを作成して 4/1~5/30までの合計を新フィールドに表示させたいです。 日付     金額   4,5月合計 2009/04/30  1      6 2009/05/01  2      6 2009/05/02  3      6 2009/06/30  4    (表示なし) としたいのですが 4,5月合計: DSum("[金額] ","test",[日付]>=#2009/04/01# And [日付]<=#2009/05/30#) とすると 日付     金額  4,5月合計 2009/04/30  1     10 2009/05/01  2     10 2009/05/02  3     10 2009/06/30  4   (表示なし) となってしまいます。 「2009/4/1~2009/5/30のレコードに金額の合計を表示させる」のではく、 「2009/4/1~2009/5/30の金額の合計を表示させる」 にはどうすればいいですか? 表示についてはIIF関数で対応できると思っています。 よろしくお願いします。

  • MS ACCESSのDSUM関数の設定について

    お世話になっております。 以下の点についてアドバイスをお願いします。 ・「製品テーブル」、「売上テーブル」と「生産テーブル」を作って、在庫の累計計算をしたいと 考えております。 ・作成したテーブルに基づき、添付画像にあるクエリを作成しました。 ・このクエリで以下の数式を入力して在庫の累計計算をしようとしたのですが、エラーがでて、計算式の入力を 完了できません。数式をどのように変更すればよいかアドバイスをお願いします。 DSum(“[生産数]-[売上数]”,”B”,”製品コード=”&[製品コード]&”AND年月<='"&[年月]&"'") よろしくお願いします。

  • DSum 検索する値がないなら

    アクセスvbaで Sub test() i = DSum("[合計]", "テーブル1", "[計上日] Between #2015/02/13# And #15/02/13#") End Sub このようなコードを作り、 テーブル1の計上日フィールドが2015/02/13のレコードの合計の値を返したいのですが、 そもそもテーブル1の計上日フィールドに2015/02/13がない場合は、 実行時エラー94 Nullの使い方が不正です。 と表示されてしまいます。 このエラーを発生させないためにはどういうコードを作ればいいのでしょうか? まず、テーブル1に2015/02/13のレコードがあるかどうかを取得したいのですが、 その取得はどうすればいいでしょうか? その後、あるならIFステートメントで条件分岐したいです。

  • ACCESSについて質問です。

    最近Office2010に変えて、以前使用していた2003のときとは違うような気がするのでおしえてください。 テーブル(T1)とそれを元にしたフォーム(F1)があるのですが、F1で入力したデータは他のレコードに移動したりしなければT1に反映されないのでしょうか? 2003の時にはそうでなかったような気がするのですが・・・

  • Access アクセス VBA レコード追加

    Access フォームからのレコードの追加方法を教えてください。 テーブル1 ・ID(主キー) ・窓口 ・コストセンター ---------- テーブル2 ・コストセンター(主キー) ・目的 ---------- リレーションシップ テーブル1のコストセンターとテーブル2のコストセンターを一対多 ---------- メインのフォームに”ID”を入力したときにテーブル1に一致するレコードがない場合、新規登録用のフォームが表示されるようになっています。 新規登録用のフォームにレコードを入力してもテーブルに反映されません。 新規登録用のフォームは下記のように作成しています。 また、フォームに”コストセンター”を入力したときに入力したレコードがテーブル2にあっても自動で”目的”が表示されません。 メインフォームにはサブフォームで各テーブルが表示されています。 フォーム ・ID(初期値•••メインで入力したID) ・窓口 ・コストセンター ・目的 ・コストセンター(非表示) 上から順に ・テーブル1 ・テーブル1 ・テーブル2 ・テーブル2 ・テーブル1

  • アクセス 自動入力方法

    超超超初心者です。 もし教えていただけるのなら、子供に教える気持ちで教えて頂きたいのですが・・・。 結論から言いますと、900店舗近くあるテーブルリストがあります。 そこであるフォームに店舗コードを入力すると自動的に業態名、店名が表示されるようにしたいのですが、どの様にするば可能でしょうか。 全店リスト(業態名、店名、店舗コード) 受付テーブル→受付フォーム(店舗コート、"(◎店名)現在は直接入力"、"(◎店名)現在は直接入力") 以上のフォームにある◎業態、◎店名 を全店リストから引っ張り受付テーブルに反映させつつ、受付フォームにも表示させたいものであります。 説明も分かりづらく申し訳ありませんが、何卒よろしくお願いします。 なんどもしつこいようですが、どに更にどを付けたいくらいど素人です。

  • 【Access】DSUM関数をサブクエリに【SQL

    Accessで、DSUM関数を使っているものを、サブクエリに変更したいです。クエリでは、3/15の原料ごと・部署ごとの使用量と、3/15時点での原料ごとの残量を出します。どのようにすればよいでしょうか。よろしくお願いします。 【原料テーブル】 原料ID 使用可能量 1 1000 2 2000 【使用履歴テーブル】 原料ID 使用部署 使用量 使用日 1 1 20 2022/03/02 1 2 10 2022/03/02 1 1 30 2022/03/08 1 1 110 2022/03/15 1 2 120 2022/03/15 2 3 130 2022/03/15 【クエリ】 SELECT 使用履歴.原料ID, 使用履歴.使用部署, 使用履歴.使用量, 使用履歴.使用日, [使用可能量]-Nz(DSum("使用量","使用履歴","原料ID=" & [使用履歴].[原料ID] & "AND 使用日<#2022/3/15#"),0) AS 使用可能残量 FROM 使用履歴 INNER JOIN 原料 ON 使用履歴.原料ID = 原料.原料ID WHERE (((使用履歴.使用日)=#3/15/2022#)) ORDER BY 使用履歴.原料ID, 使用履歴.使用部署; 【実行結果】 原料ID 使用部署 使用量 使用日 使用可能残量 1 1 110 2022/03/15 940 1 2 120 2022/03/15 940 2 3 130 2022/03/15 2000

  • Access2000のフォームで番号を入力するとその他の情報が表示されるようにするには?

    入力フォームで番号を入力すると、名前などが同じフォームに表示される。 というのを作っているのですが。 テーブル1:ID・番号 テーブル2:番号・名前など(エクセルとリンク) クエリーで番号を1→2と繋ぎ、番号はテーブル2を使用。 (1)テーブル1が空欄だと何も表示されない。 (2)テーブル1に入力すると表示されるが、フォームで番号の入力はできない。 (3)新しいレコードも作製できない。 数年前に似たようなものを作った筈なのですが、そもそも出来ないのでしょうか。 宜しくお願いします。

  • Accessでメイン、サブフォームへの入力について

    accessほぼ初心者です。 取引先の会社情報を管理するために、access2007で顧客管理を作成しています。現在、取引先本社情報とその支店情報を登録するフォーム「会社登録フォーム」を作成していますが、次のようなことで困っています。 <問題としていること>: 「サブフォーム」をクリックした瞬間に、テーブルにレコードが追加されてしまう。 <改善したいこと>: 本社テーブルの会社名が未入力ならば、上記の操作でレコードを追加しない。(会社名に主キーは設定していません。) <会社登録フォームの環境>: 会社の本社情報をメインフォーム、その会社の支店情報をサブフォームに、単票形式のタブコントロールで複数画面にして支社ごとに分けて入力できる登録フォームを作成しました。本社テーブルの会社IDを主キーに、支店テーブルの支店IDを主キーにしてリレーションシップを設定しています。 <会社情報の入力に関して行っていること>: ・メインフォームに「新規」「更新」「削除」ボタンを設置。 ・新規ボタンでメインフォームの「会社ID」に自動採番。 ・会社(本社)名がないと困るので、未入力の状態で「新規」「更新」及び「サブフォーム」をクリックされた際に「会社名が未入力です。」のメッセージを表示され「OK」で元の状態にもどります。 ・会社(本社)名が入力済みならば、「更新」ボタンで、メッセージ「OK」「キャンセル」が表示され、「OK」ならば本社テーブルにレコードが追加され「キャンセル」ならばそのままの状態になります。 上記の<問題としていること>の補足ですが、新規ボタンで新規登録フォームに会社IDが自動採番(末番)されるのですが、「会社名」を入力せず、先にサブフォームの支店情報から(タブ名「支店(1)」)入力しようとした場合、「会社名が未入力です。」のメッセージを表示されますが、この時点で本社テーブルに、この採番でレコードが追加されてしまいます。入力者がそのまま会社名(本社)から入力するも、途中でキャンセルした場合、再度新規登録をする際、登録フォームの自動採番がキャンセルされた採番の次の番号になります。 キャンセルされた会社情報空白のレコードができるということになります。これを回避したいのです。 出来るだけ詳細をとおもい説明が長くなりましたが、よろしくお願いいたします。

専門家に質問してみよう