dポイントプレゼントキャンペーン実施中!

元々エクセルで管理していた日計表をデータベースに変換しています。
その項目の中に、「残高」という項目があり、計算方法が、前日の残高から当日の合計をプラスして、支払をマイナスするというものです。
エクセルだと、C1+B2-A2というような計算式でした。

テーブルは、日付を主キーにして合計はクエリで作っています。

前の方の質問も見てみたのですが、よく分からず質問しました。よろしくお願いします。

A 回答 (2件)

>一番最初の残高をどのように設定するのかという問題



>DLookup("残高","Table","日付 = #" & DMax("日付","Table","日付<#" & [日付] &"#") & "#")
この式でDMaxがNullの時(一番最初のレコードの時)、外側のDLookupがエラーになりますね
それを防ぐにはNullの時にはあり得ない日付になるようにNz関数を使います

DLookup("残高","Table","日付 = #" & Nz(DMax("日付","Table","日付<#" & [日付] &"#"),#1900/1/1#) & "#")

>エクセルだと簡単なのですが、
やろうとしていることがExcelでのやり方そのままだからです
Access(データベース)で帳簿をつける場合はもっと違ったやり方をします
    • good
    • 1
この回答へのお礼

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

いろいろ試してやってみます。ありがとうございました。

お礼日時:2008/09/24 15:08

つまり、ポイントは、前日の残高をどう参照するか、ですね。



DLookup("残高","Table","日付 = #" & DMax("日付","Table","日付<#" & [日付] &"#") & "#")

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

この回答への補足

ご回答ありがとうございます。

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

補足日時:2008/09/22 17:51
    • good
    • 0
この回答へのお礼

すいません。
うまくいかなかったのは、私の設定ミスでした。

ありがとうございました。

お礼日時:2008/09/24 15:11

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

関連するカテゴリからQ&Aを探す