「Web出版サイト」ベータ公開

Q&A集[?]

当サイトでのご質問の受付は終了しました

すべてのコンテンツを読み込み専用としたため、回答欄からも投稿できません

Apache OpenOffice/LibreOfficeのご質問はそれぞれのフォーラムへご投稿ください

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:1
昨日:0
総数:6136
現在:4


出納帳の残高を計算するクエリについて

ページOpenOffice.org FAQの登録ページ
投稿者どら
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2007-04-01 05:31:56 (日)
OSMe
依存するページ
バージョン
edit/refer

メッセージ

回答ページでは行末に「~」を付加する必要はありません

以下の7つのフィールド名を持つテーブル”出納帳” (ID、年、月、日、科目、摘要、入金、出金)  から 残高 を集計計算するクエリの作成方法を教えてください。 よろしくお願いします。


作成方法

M.Kamataki (2007-04-02 09:27:15 (月))

2.0.4以降なら、クエリーにクエリーで作成したテーブルを呼び出せるので、まず入金、出金フィールドの合計を求めるクエリー、そのクエリーをもとに残高を求めるクエリーを作成すればできます。

  1. 入金、出金フィールドの合計を求めるクエリーを作成し、「入金出金合計」として保存

    faq4_401_01.png

  2. クエリーデザインで「テーブルまたはクエリーの追加」ダイアログで「クエリー」を選び、「入金出金合計」クエリーを選ぶ
  3. 残高を求めるクエリーを作成

    faq4_401_02.png

2.0.3までのBaseでは、クエリーからクエリーを呼び出せないので、ビューにする必要があります。関連質問として、faq/3/199「テーブルのレコード内で計算は?」、faq/3/214「クエリーのデーターをテーブルとして使えますか?」もご覧ください。

行ごとの残高を計算する方法は

どら (2007-04-25 05:01:37 (水))

回答ありがとうございました。
お答え頂いたクエリーの作り方、参考になりました。
次に、出納帳テーブルに残高の列が加わった形で、行ごとの残高を計算する方法を教えてもらえませんか。参考にしているAccessの本ではダミーテーブル使う方法がのっていましたので、baseで試してみましたがうまくいきませんでした。
もしデザイン表示では不可能であればSQL文でのクエリー作成方法についてもサンプルをいただけると助かります。よろしくお願いします。

Re: 行ごとの残高を計算する方法は

M.Kamataki (2007-04-25 22:16:19 (水))

クエリーを作成されたのなら、おわかりかと思いますが、クエリーで合計欄を表示する際には、出納帳テーブルの入金、出金以外のフィールドは表示できません。したがって、単純なクエリーでは実現できません。

>出納帳テーブルに残高の列が加わった形で、行ごとの残高を計算する方法
具体的には、どういうイメージでしょうか。ある時期までの残高なら、時期をクエリーで抽出して上記のクエリーにする(これを1つのSQLにするのは可能かもしれません)。入力時に残高を知りたいというのなら、フォームになるのではと思います。

>Accessの本
具体的な名前がわかるとその本からヒントを得ることができるかもしれません。

calcのイメージを添付します

どら (2007-04-30 18:18:56 (月))

お世話になります。
イメージで申し訳ありませんが。
calcのスクリーンショットをご覧下さい。
1.png  テーブルのイメージ

1.png


2.png  残高の列が加わったクエリーのイメージ

2.png


残高を計算するクエリーを作るか、
ご指摘いただいたようにフォームでの入力が簡単か、
もあわせてご教授ください。よろしくお願いします。

なんとかできました

M.Kamataki (2007-05-01 21:02:50 (火))

>Accessの本
本屋の立ち読みでヒントを得ていろいろ調べたところ、テーブルに付加する形でクエリーが作成できました。「SQL表示でクエリーを作成」で下図のように定義します。編集する際も「SQL表示で編集」を選ぶ必要があります。

faq4_401_03.png

SQL文としては以下のようになります。

SELECT 
"t1"."ID", 
"t1"."入金", 
"t1"."出金", 
( SELECT SUM( "t2"."入金" ) - SUM( "t2"."出金" ) FROM "出納帳" AS "t2" 
WHERE ( ( "t2"."ID" <= "t1"."ID" ) ) ) AS "残高" 
FROM "出納帳" AS "t1"

ダミーテーブルの話がありましたが、テーブルの別名機能を使って、別のテーブルとして扱って計算してますね。このテクニックを使うとかなり表現力がアップします。残高だけでなく色んな計算フィールドをクエリーで作成できそうです。

なお、以下のページを参考にしました。ご覧になればわかりますが、Accessのテクニックがそのまま利用できました。
「Accessで現金出納簿を作りたいのですが。」
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1933466

デザイン表示で実現する方法

M.Kamataki (2007-05-02 11:27:32 (水))

デザイン表示で実現できると楽なので、下図のようなクエリーを作成してみましたが、うまくいきません。[出納帳].[ID]の値を0などにすると期待通りの結果になるので、こちらは不具合かもしれません。ちなみにAccessの画面ではありません。 :p

faq4_401_04.png

自分のテーブルを参照して連結するクエリーを「自己結合」と呼ぶようです。「自己結合」をキーワードに検索するとAccessや他のDBの面白いサンプルが見つかります。これらはBaseでも活用できると思います。

完了にしてください

どら (2007-05-03 00:42:07 (木))

M.Kamataki様 立ち読みまでして回答いただき感謝していま。教えていただいた方法を使いこなせるようトライしてみます。大変参考になりました、この質問は完了にしてください。本当にありがとうございました。

補足します

M.Kamataki (2007-05-03 17:48:57 (木))

完了になりましたが、もうひとつのクエリーについて補足します。残念ながらデザイン表示では期待した結果になりません。そこでデザイン表示をオフにし、「SQLコマンドを直接実行」をオンにすると下図のように期待した値となりました。ご報告します。デザイン表示で途中まで作成できるので、こちらのほうが楽だとは思います。

faq4_401_05.png

なお、SQL文を以下に置いておきます。

SELECT 
"出納帳"."ID", "出納帳"."入金", 
"出納帳"."出金", 
SUM( "出納帳_1"."入金" ) - SUM( "出納帳_1"."出金" ) AS "残高" 
FROM "出納帳" AS "出納帳", "出納帳" AS "出納帳_1" 
WHERE ( ( "出納帳_1"."ID" <= "出納帳"."ID" ) ) 
GROUP BY "出納帳"."ID", "出納帳"."入金", "出納帳"."出金" 
ORDER BY "出納帳"."ID" ASC
お名前:
題名:


添付ファイル: filefaq4_401_05.png 481件 [詳細] filefaq4_401_04.png 505件 [詳細] filefaq4_401_03.png 490件 [詳細] file2.png 971件 [詳細] file1.png 1020件 [詳細] filefaq4_401_02.png 582件 [詳細] filefaq4_401_01.png 568件 [詳細]