- ベストアンサー
Microsoft Accessについての質問です。
初めまして。 Microsoft Accessで金銭出納帳を作っていて、フォームで月単位の科目別入出金の情報を把握させたいのですがいまいちよく分かりません。 10月入出金情報 月 科目コード 内容 出金 入金 メモ 2009年10月 0001 食費 ¥15000 ¥0 2009年10月 0002 衣服費 ¥20000 ¥0 このような感じに10月と11月と月別で分けて表示したいのですが、どのようすればよいのでしょうか? Access初心者なので、詳しく教えていただければ幸いです。 よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
たぶんSQL文の貼り付け方に問題がある ようです。たとえば以下のSQL文は ブラウザに表示されている状態の ものを一度にコピーして貼り付けて ください。ブラウザ側の都合で途中から 改行されたりしますが、一続きの SQL文です。 SELECT Format([日付],"yyyy/mm") AS 月, tbl出納.科目コード, tbl科目.内容, Sum(tbl出納.出金) AS 出金の合計, Sum(tbl出納.入金) AS 入金の合計 FROM tbl科目 INNER JOIN tbl出納 ON tbl科目.科目コード = tbl出納.科目コード GROUP BY Format([日付],"yyyy/mm"), tbl出納.科目コード, tbl科目.内容 HAVING (((Format([日付],"yyyy/mm"))=[年月入力])); その他も同様です。 こちらでブラウザに表示されているSQL文を コピーしてクエリに貼り付けると正常に 機能することを確認しています。 どうでしょうか。
その他の回答 (6)
- piroin654
- ベストアンサー率75% (692/917)
エラーが出ているクエリのSQL文を すべてコピーしてそのまま提示してもら えませんか。貼り付けたSQL文に 問題があると思うのですが。 こちらで確認してみます。
- piroin654
- ベストアンサー率75% (692/917)
一度しかダイアログは開かないはず ですが。 新規にクエリをつくり、SQLビューにし、 中の文を削除し、以下のSQL文を貼り付 けてください。 SELECT Format([日付],"yyyy/mm") AS 月, tbl出納.科目コード, tbl科目.内容, Sum(tbl出納.出金) AS 出金の合計, Sum(tbl出納.入金) AS 入金の合計 FROM tbl科目 INNER JOIN tbl出納 ON tbl科目.科目コード = tbl出納.科目コード GROUP BY Format([日付],"yyyy/mm"), tbl出納.科目コード, tbl科目.内容 HAVING (((Format([日付],"yyyy/mm"))=[年月入力])); うまくいったら、そのクエリを保存して ください。何かうまくいかないところが あれば書き込んでください。 。 フォームに表示するために、 同じように新規にクエリを起こし、 以下のSQL文をはりつけて、 そのクエリの名前をQ月別科目別と してください。 SELECT Format([日付],"yyyy/mm") AS 月, tbl出納.科目コード, tbl科目.内容, Sum(tbl出納.出金) AS 出金の合計, Sum(tbl出納.入金) AS 入金の合計 FROM tbl科目 INNER JOIN tbl出納 ON tbl科目.科目コード = tbl出納.科目コード GROUP BY Format([日付],"yyyy/mm"), tbl出納.科目コード, tbl科目.内容 HAVING (((Format([日付],"yyyy/mm"))=[Forms]![frm月別科目別集計]![tx年月])); フォームに表示する簡単な方法は以下 の通りです。 まず、フォームの新規作成のボタンを クリックします。ウィザードが現れる ので、もとになるクエリテーブルに Q月別科目別クエリを選択します。 次にオートフォーム表形式をダブル クリックします。ダイアログが表示 されますが、OKをクリックし、 フォーム名はfrm月別科目別として 一旦閉じます。 次にそのフォームをデザインビューで 開きます。詳細と書かれているバーの 上部にカーソルをあてます。カーソルが 十字になったら左クリックしてバーを 2センチくらい下げます。次に 月、科目コード、科目などのラベルを 下げたバーの上部にまで下げます。 次にフォームの上部のあいたところに テキストボックスを一つ、コマンドボタン を一つおきます。テキストボックスの 名前はtx年月とします。コマンドボタン のプロパティシートを出し、その クリック時のイベントにコードビルダ を選択し、クリックします。 コード表が出てくるので、そこに Private Sub コマンド1_Click() End Sub と書かれたコードがでてきます。 そのコードの真ん中に、 Me.Requery を入れて Private Sub コマンド1_Click() Me.Requery End Sub となるようにしてください。これで フォームを保存して閉じればでき 上がりです。フォームを開き、 2007/10 あるいは 2007/11 と テキストボックスに入力し、ボタンを クリックするとデータが表示されます。 以上です。何かあれば書き込んでください。
補足
毎回質問に答えてくださって、本当にありがとうございます。 答えてもらったとおりに入力したのですが、フォームを開く際にダイアログが「科目コード」「内容」「日付」「科目コード」と4つ出てしまいます。 コマンドボタンを押しても、フォームを開く際と同じダイアログが表示されてしまいます・・・。 何回も質問してしまって本当にすみませんが、よろしかったら答えてもらえると助かります。 よろしくお願いします。
- piroin654
- ベストアンサー率75% (692/917)
書き込んで気がついたのですが、 任意の月を表示したいのであれば、以下のSQL文を貼り付けてクエリを ひらいてください。 SELECT Format([日付],"yyyy/mm") AS 月, tbl出納.科目コード, tbl科目.内容, Sum(tbl出納.出金) AS 出金の合計, Sum(tbl出納.入金) AS 入金の合計 FROM tbl科目 INNER JOIN tbl出納 ON tbl科目.科目コード = tbl出納.科目コード GROUP BY Format([日付],"yyyy/mm"), tbl出納.科目コード, tbl科目.内容 HAVING (((Format([日付],"yyyy/mm"))=[年月入力])); そうするとダイアログが出てくるので、 そこに2007/10と入力すると2007年10月 のデータが出てきます。 あるいは、最初のクエリの月の抽出条件に "2007/10"と書き込んでクエリを 開くと10月分がでてきます。
補足
質問に答えてくださって、ありがとうございます。 教えてもらったとおりこのSQL文を貼り付けてみたのですが、開くと日付などを問う質問が出てきて科目コードは2回問われてしまいます。 あと、クエリではなくフォームで月ごとに表示させたいのですが・・・。 たびたび質問してしまって、すみません。 よろしくお願いします。
- piroin654
- ベストアンサー率75% (692/917)
科目コードがあるということは 科目テーブルが別途あるという ことですね。その科目テーブル の名前をtbl科目とします。 次に日々入力されるデータが おさめられているテーブルをtbl出納 とします。tbl出納のフィールドは 提示されたデータ通りとします。 新規のクエリを適当につくります。 そのクエリをデザインビューで 開き、ツールバーの表示から SQLビューを選択します。すると クエリが反転してSQLビューが表示 されます。そのSQLビューに以下の SQL文を貼り付けます。 SELECT Format([日付],"yyyy/mm") AS 月, tbl出納.科目コード, tbl科目.内容, Sum(tbl出納.出金) AS 出金の合計, Sum(tbl出納.入金) AS 入金の合計 FROM tbl科目 INNER JOIN tbl出納 ON tbl科目.科目コード = tbl出納.科目コード GROUP BY Format([日付],"yyyy/mm"), tbl出納.科目コード, tbl科目.内容; クエリをデザインビューにして 保存して閉じてクエリを 開くと集計が行われています。 メモは集計には入らないので省略 します。 このクエリは少し複雑ですが、 クエリをいろいろ使うように なると理解できるようになります。 わからないところがあれば書き込んで ください。 では。
- umazanpai
- ベストアンサー率38% (53/137)
月 科目コード 内容 グループ化 グループ化 グループ化 出金 入金 合計 合計 メモ 最大 こんな集計クエリで多分。
お礼
質問に答えてくださって、ありがとうございます。 教えてもらった通りに集計クエリでやってみたいと思います。 今回は本当にありがとうございました。 また分からないことがあったら質問するので、教えていただければ幸いです。
- mnabe
- ベストアンサー率33% (427/1283)
どんなDB構造を作っているのか解らないと何とも言えないと思います。 まずは、書籍などを読んでみて、Access の使い方を覚えた方が近道だと思いますよ。 やりたい事は、クエリを作成して、レポートを組み込めば出来るのですが、Access の使い方や DB 構造の話になってしまうので、全部説明するのは困難です。 例えば、DB構造だけでも解れば、クエリのアイディアを出す事は出来るのですが、上記質問ですと如何様にも出来てしまうので、もう少しデータを出されるか、書籍などのサンプルを参考にするなどの方が近道だと思います。
補足
質問に答えてくださって、ありがとうございます。 説明不足ですみません。 元のデータは 日付 科目コード 内容 出金 入金 メモ 2009/10/1 0001 食費 ¥500 ¥0 2009/10/2 0002 衣服費 ¥3000 ¥0 2009/10/2 0003 娯楽費 ¥2000 ¥0 2009/10/2 0004 交通費 ¥1000 ¥0 2009/10/3 0005 書籍費 ¥2000 ¥0 2009/10/4 0006 交際費 ¥2000 ¥0 2009/10/5 0007 雑費 ¥1000 ¥0 2009/10/6 0008 お小遣い ¥0 ¥10000 2009/10/25 0009 給料 ¥0 ¥80000 このような感じで、11月15日まで続きます。 科目は上に挙げたものが全部です。
お礼
もう一度見直してやり直してみたところ、ちゃんと動きました。 今回はとても丁寧に何回も質問に答えてくださって、とても助かりました。 本当にありがとうございました。