• ベストアンサー

Access 前のレコードを元に計算をしたいです。

元々エクセルで管理していた日計表をデータベースに変換しています。 その項目の中に、「残高」という項目があり、計算方法が、前日の残高から当日の合計をプラスして、支払をマイナスするというものです。 エクセルだと、C1+B2-A2というような計算式でした。 テーブルは、日付を主キーにして合計はクエリで作っています。 前の方の質問も見てみたのですが、よく分からず質問しました。よろしくお願いします。

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

>一番最初の残高をどのように設定するのかという問題 >DLookup("残高","Table","日付 = #" & DMax("日付","Table","日付<#" & [日付] &"#") & "#") この式でDMaxがNullの時(一番最初のレコードの時)、外側のDLookupがエラーになりますね それを防ぐにはNullの時にはあり得ない日付になるようにNz関数を使います DLookup("残高","Table","日付 = #" & Nz(DMax("日付","Table","日付<#" & [日付] &"#"),#1900/1/1#) & "#") >エクセルだと簡単なのですが、 やろうとしていることがExcelでのやり方そのままだからです Access(データベース)で帳簿をつける場合はもっと違ったやり方をします

rain_kouji
質問者

お礼

できました。 しかし、おっしゃる通りこのやり方はあまりよろしくないようです。 いろいろ考えたのですが、私がやろうとしている計算は、「合計」の累計-「支払」の累計=残高になると思いつきました。 いろいろ試してやってみます。ありがとうございました。

その他の回答 (1)

noname#110201
noname#110201
回答No.1

つまり、ポイントは、前日の残高をどう参照するか、ですね。 DLookup("残高","Table","日付 = #" & DMax("日付","Table","日付<#" & [日付] &"#") & "#") ちょっと、日付の書き方が自信ないのですが、ポイントは DLookUp関数 で参照できる、ということです。 「前日」はDMax関数を使って、現在のレコードの日付より前で、もっとも最近の日付を見ています。 これらのD系の関数(定義域集合関数)について詳しくは、ヘルプを読んでください。私がぐちゃぐちゃ書くより、ずっときちんとかいてあります。

rain_kouji
質問者

お礼

すいません。 うまくいかなかったのは、私の設定ミスでした。 ありがとうございました。

rain_kouji
質問者

補足

ご回答ありがとうございます。 関数をあてはめてみたのですが、うまくいきませんでした。 残高はクエリで作っているのですが、一番最初の残高をどのように設定するのかという問題にもぶつかってしまいました。 エクセルだと簡単なのですが、思っていたより難しいです。

関連するQ&A

  • Access2000での日数の計算

    データベースの素人です。訳あって、データベースを作成することになりました。 ソフトはAccess2000を使用しております。 例えば「本体」というテーブルのフィールド項目に ID 荷物の受注日   荷物の発送日   所要日数 という項目があります。 同じくフォームにもこのとおりの項目があります。 「荷物の受注日」と「荷物の発送日」を手入力するのですが、「所要日数」だけは自動で計算をしたいのです。 マニュアル本とにらめっこをしながら、当初、フォーム上の「所要日数」の入力場所のプロパティ→データタブのコントロールソースに DateDiff("y",[荷物の受注日],[荷物の発送日]) と入力しました。 これで確かにフォームに入力した日付データに対して「所要日数」も表示されました。 しかし、「本体」テーブルのデータには、手入力した日付データは登録されているものの、「所要日数」は登録されていませんでした。 手入力した日付データを残したまま、今度はクエリを用いて「本体」テーブルのクエリを作ってみました。 クエリにて「所要日数」のところのフィールドに 所要日数: DateDiff("y",[本体]![荷物の受注日],[本体]![荷物の発送日]) と入力して、クエリを実行すると、確かにクエリの中の「所要日数」のところにはデータが出てきます。 しかしながら「本体」テーブルにも、フォーム上にもデータは出てきません。 いったいどのようにすれば、フォーム上にて手入力をした日付データに対して、所要日数を自動で計算し、そのデータが「本体」テーブルにも記録されるのでしょうか? どなたかお分かりになるかた、宜しくお願いいたします。

  • Accessのクエリー 計算について

    N番号をキーに容積を計算するクエリを作成しています。 それには条件があり、種別が1の場合はマイナスして計算、種別が2の場合はプラスして計算という風にしたいです。 単純にSUM関数を使用するだけではできないと思うのでやり方を教えて下さい。 条件を含めていないSQLは・・・ SELECT DISTINCTROW 種別, N番号, Sum(容積) AS 合計容積 FROM テーブル名 GROUP BY 種別, N番号; となっています。

  • ACCESSで残高計算

    今回もぜひアドバイスをお願いします。 未請求の売掛金の残高を計算させたいのですが、うまくいきません。 [T受注] 受注CD(主キー) 工事番号 受注日 受注金額 受注内容 [T請求] 請求CD(主キー) 工事番号 請求日 請求金額 請求内容 上記のテーブルを基に下記のクエリを作成 [Q受注金額合計] 工事番号 受注金額合計: (受注金額の合計) [Q請求金額合計] 工事番号 請求金額合計:(請求金額の合計) 上記のクエリでさらにクエリ [Q請求残高] 工事番号 受注金額合計:Format(Nz([Q受注金額合計].[受注金額合計],0),"\\#,##0") 請求金額合計:Format(Nz([Q請求金額合計].[請求金額合計],0),"\\#,##0") 請求残高: Format([受注金額合計]-[請求金額合計],"\\#,##0") これを基に一覧のフォームをつくり、請求漏れなどをチェックしたいのですが...。 受注・請求双方に入力があれば問題はないのですが、請求側に入力がなければ 請求残高に反映されない(逆パターンも)ので困っています。 クエリで請求側の全工事番号に¥0を入れることも考えましたが、もう少し スマートな方法があればと思います。 どうかよろしくお願いします。

  • Accessで累計計算する方法を教えてください。

    現在Access2000で、在庫管理をしています。 添付ファイルのように(1)~(3)のようなテーブルがあります。商品を発注するにあたり(3)現在庫の確認と(2)発注済み分の確認、(1)受注内容の確認などと効率の悪い状況です。 そこで各商品ごとに入出庫をみることができるレポートを出力できるようにしたいと思います。例えば、商品Bであれば(4)のようなレポートを出力したいと思います。 (1)と(2)のテーブルのフィールドをユニオンクエリーで結合させるところまでは何とかできたのですが、肝心な"在庫累計"をうまく計算できません。添付ファイルの(A)と(B) 色々調べると、Dsum関数があるようなのですで、このユニオンクエリーをもとに選択クエリーをつくりこの関数を使ってみたのですが(4)のレポートのようにはいきません。"期日"を条件にしたのですが同じ日だとすべて合計されてしまします。また、出力するレコードの順番は日付で昇順、同じ日付のレコードは入庫(プラスのレコード)を上位に、続いて出庫(マイナスのレコード)の順番にしたいです。 (4)のようなレポートが作成できれば方法は問わないです... なにかいい方法をアドバイスをいただけますでしょうか。 宜しくお願いいたします。

  • Access クエリ このレコードセットは・・・

    いつもお世話になります。 Accessで下記の様にクエリを作成しましたが、”このレコードセットは更新できません”と出てしまいます。 ■テーブル1  ・顧客ID(主キー)  ・顧客名  ・住所  ・TEL ■テーブル2  ・顧客ID  ・取引ID(主キー)  ・請求金額 ■クエリ1(集計クエリ)  ・顧客ID グループ  ・請求金額合計: Sum(請求金額) 合計 ■クエリ2(実際に使用するクエリ)  ・顧客ID(テーブル1)  ・顧客名(テーブル1)  ・住所(テーブル1)  ・TEL(テーブル1)  ・請求金額合計(クエリ1) このクエリ2を開いて更新しようとしても、”このレコードセットは更新できません”と左下に表示されて更新できません。 ・請求金額合計(クエリ1)を除けば問題なく更新できます。 ですが1顧客に対して通算で幾ら請求をしたかとその顧客のデータを同一クエリで表示・更新したいので、意味をなさなくなってしまいます。 どなかた良い方法をご教授下さいませ。

  • アクセスのレコードが計算されない・・・・

    windows2000/Access2000 レンタカーというテーブルがあって、そこから売上年が2003年、売上月が2月のデーターをフォームフィルタで検索かけてレコードを抽出し、エクセルにOfficelinksを使って出力しました。 SUMを使って請求書計の合計を計算させようとしましたが、計算されず0になってしまいます。 フォームフィルターなど検索かけずに全てレコードを出力した場合は計算されるのですが・・・? フィルターを使って検索抽出したデーターはエクセルに出力して計算させる事って出来ないのでしょうか?

  • アクセスでエクセルみたいに前後の値で計算

    アクセスでエクセルみたいに、前後の値で計算はできますか? 例えばアクセスに 日付     金額 2013/06/30     ¥1,000 2013/07/31     ¥1,500 2013/08/31     ¥1,800 というテーブルがあり、 クエリで新しいフィールドを作り、 2013/07/31 500 2013/08/31 300 を表示させることは可能ですか? エクセルなら =B3-B2 でできますが、アクセスのクエリでこういう事をする場合、どうすればよいでしょうか? 添付画像はエクセルの例ですが、実際にやりたいのはアクセスです。

  • アクセスについて教えてください。

     1.クエリーのビルドで計算をして四捨五入をしたいのですがどうしても   方法がわからないので、教えてください。プロパティで表示形式を   変えても、エクセルにエクスポートをすると戻ってしまいます・・・    2.クエリーで計算をし、そのクエリー1、クエリー2を一つのクエリーに   したときに、(1,2のテーブル結合は一方を全部表示させるものにしてま   す)項目で空欄になっているものは、計算されないのでしょうか?   なにか良い方法がありましたら、教えてください。   宜しくお願いします。

  • アクセス、クエリでの計算

    恐らく、すごく初歩的な質問で申し訳ないのですが、 是非皆さんの知恵をお借りしたく質問させていただきます。 アクセスで見積や請求などをする場合、商品ごとの値段の合計を[単価*数量]で出すことはできるのですが、結局ある見積書に対して、いくつかの商品の合計金額の総合計金額の出し方が分からなくて困っています。 クエリでのこの計算の仕方はどうすれば良いのでしょうか? フォーム上での計算は本に載っていたのですが、やはりクエリ上でもdsum関数を使うのですか? きっとまだまだデータベースの構造が把握できてないのでこんな事で壁にぶつかってしまうのだと思うんですが。。 お力を貸していただけると幸いです。どうぞよろしくお願いします。

  • 残高を表示したい

    今までEXCELだった銀行口座データをACCESSで管理しようと思っています。 テーブルの構造は[ID][日付][内容][入金][出金][残高]です。 残高の計算は前日までの残高+入金-出金です。 クエリで計算すると思うので、色々やってみたのですがうまくいきません。 ご回答宜しくお願いいたします。