明細に集計行を追加する③

小計まで出したら、追加で消費税と税込金額も明細に追加することができます。
こんな感じで。

やることは、小計行の数字に0.1掛けた金額を追加クエリで追加します。

基本は前回の小計を追加するクエリをコピペして、編集します。
変わる点は、小計にのみ税率をかけるので、単位のフィールドに抽出条件として
“小計”のみ計算対象にします。

追加クエリを実行すると印刷用のテーブルは下の通りになります。

同じ要領で次に小計と消費税をたして税込金額のレコードを追加します。

次は集計対象を”小計”と”消費税”で抽出し、Sum関数で合計します。

追加クエリの実行結果です。

あとはこのテーブルを印刷するのですが、印刷を押したときのコマンドボタンのコードに
今回の追加した二つのクエリを実行する分も追加します。

Private Sub コマンド49_Click()
DoCmd.OpenQuery “Q見積明細印刷用削除”
DoCmd.OpenQuery “Q明細追加”
DoCmd.OpenQuery “見積印刷小計追加”
DoCmd.OpenQuery “見積印刷消費税追加”
DoCmd.OpenQuery “見積印刷税込追加”

DoCmd.OpenReport “見積書”, acViewPreview, , “見積書NO=” & Me!見積書NO & “”
End Sub

こんな感じです。クエリの順番は必ずこの順番になります。

このやり方であれば、テーブルにないレコードを印刷しようとしたときに、必要なレコードを
作成し、追加クエリで追加すれば、自由に設定をすることができます。

====================================
昨日は長女の大学入試の共通テストでした。
自己採点の結果は、実力は発揮できたかなと思います。
この先1か月、私立の受験も始まり本格的な受験シーズンに
突入します。
高校受験と違った緊張感が我が家では漂っています。

本日も最後までお読みいただきありがとうございます。

明細に集計行を追加する②

下の図のようにフォームで入力した見積書を印刷します。

こんな感じで小計行を明細行の最後に付けます。

このやり方は、印刷用に別のテーブルを用意して、一度そちらに印刷する明細の
レコードをコピーします。
まずは最初にレコードをコピーするテーブルを作ります。

こんな感じで、明細テーブルをコピーして、テーブルの構造のみをコピーします。

次に印刷の指示をかけるたびに、印刷用のレコードをいったんすべて削除します。
その削除クエリを作ります。

クエリデザインの削除をクリックして、見積明細印刷用テーブルを選択し、全レコード「*」を
フィールドに設定します。

削除したら印刷したい明細をレコードに追加します。

追加したいレコードはフォームで表示されている見積書NOの見積明細です。
抽出する見積書NOは、抽出条件で

[forms]![見積書メイン]![見積書NO]

と指定します。

次に、小計を見積明細印刷用テーブルに追加します。
図のように追加クエリを設定します。

見積書NOについては、
式3: [Forms]![見積書メイン]![見積書NO]
と指定します。

この3つのクエリを実行すると見積明細に小計が表示されます。

印刷ボタンを押したときに、次のコードを追加します。
DoCmd.OpenQuery “Q見積明細印刷用削除”
DoCmd.OpenQuery “Q明細追加”
DoCmd.OpenQuery “見積印刷小計追加”
クエリを実行する順番は必ずこの順番で実行してください。

========================================
先日フルマラソンを2年ぶりに走ってきました。
結果は3時間11分42秒で自己ベストを21秒更新しました!
西風が常に強く吹く劣悪なコンディションでしたが、その状況での自己ベストは
自信になります。サブスリー目指してまだまだ頑張ります。

本日も最後までお読みいただきありがとうございます。

明細毎に原価と粗利を計算する②

明細毎に複数の原価を集計するために、まずはデータを入れるテーブルを作成します。

最初にメインフォームとなるテーブル。

とりあえず見積明細の見積明細NOが入れるだけです。

次に原価明細を入れるテーブル。

これは必要に応じて項目を作ってください。必要になるのはメインフォームと
サブフォームの関係にしたいので、見積明細NOは必須のフィールドです。

この二つのテーブルを基にフォームを二つ作り、原価明細の方をサブフォームで
とします。連結するのは見積明細NOです。

あとは見積書フォームを開いて、見積明細のコマンドボタンのプロパティの
イベントタブのクリック時に次のVBAコードを入れます。

Private Sub コマンド7_Click()
Me.Refresh
DoCmd.OpenForm “F見積接続”
Forms!F見積接続!見積明細NO = Forms!F見積書.F見積明細!見積明細ID
End Sub

コマンドボタンをクリックしたタイミングでT見積接続に現在参照している
見積明細NOがレコードとして入ります。

あとは明細をひたすら打っていきます。

とりあえずこれで見積明細とその原価明細が繋がりました。

========================================
人生初のダイエット(糖質制限)が3週間経ちました。
その間、米、パン、麺類はほぼほぼ食べず、主食は豆腐と化しました。
コンビニ行っても買えるものは、コーヒーとゆで卵とナッツだけ。。
世の中糖質で溢れてますね。というか糖質しかない!!
食事が面倒です泣

本日も最後までお読みいただきありがとうございます。

明細毎に原価と粗利を計算する①概要

見積書を作るときに、原価を計算するときがあると思います。

通常は見積金額と原価のレコードが1対1であれば、見積明細に「原価」というフィールドを
用意して、そこに金額を入れれば、差し引きで簡単に粗利が出てきます。

ただそれだと単純な取引なら問題ありませんが、見積金額と原価のレコードの比が1対多の
場合対応できません。

特に製造業や建設業、サービス業ではこういうケースが多いのではないでしょうか?

概要はこんな感じです。
一見通常の原価の金額です。

これは4つの原価明細の合計が見積の原価に反映しています。

こんな感じです。

原価用のテーブルを用意して、見積明細CDに対してサブフォームを開いてそこに原価の
明細を入れていき、その合計を見積明細に戻します。

これであれば、見積の段階で、ある程度の積算ができて、その明細履歴も残るので
その後の実際原価との比較も簡単にできます。

必要であればこの機能を見積明細作成システムに入れてみてください。
方法はこれから解説していきます。

=======================================
厚底シューズからうす底に戻してから、ふくらはぎの張がひどい。。
色々な方が言っていますが、厚底一辺倒は問題がありますね。
メディアがメーカーの言いなりになっているような気がして残念です。
練習はうす底シューズでないと本当の実力は付きません。。

レースだけ厚底履いても消費はあまり生まれませんからね。

本日も最後までお読みいただきありがとうございます。

AccessRuntime版のリンク先の更新

Accessを共有するとき、データベースの分割を使って、テーブルを切り離して使うことが
あります。

分割をする際に、テーブルだけとなったAccessファイルをどこに置くのか指定します。
そして常にその指定した場所にデータを見に行くので、万が一保存場所を変えてしまうと、データを
参照できなくなり、Accessファイルが使えなくなります。
続きを読む

電子書籍を出版しました!

電子書籍を出版しました。

以前出版したAccessクエリビジネス活用辞典が絶版になったので、ワードの原稿を焼き直し
ました。Accessクエリで仕事でよく使う項目をまとめました。
また経理業務のための Accessマクロで作るデータベース入門はこの書籍の項目を使って、データベースを組み立てています。
クエリについて細かく解説しておりますので、クエリっていまいちイメージしにくいとか
理解しにくいと感じている方にはお勧めです。

これは以前電子書籍として出版していましたが、経理業務のための Accessマクロで作るデータベース入門を出版
した関係で、内容がかぶる部分があると思い、販売を中止しました。

しかし
経理業務のための Accessマクロで作るデータベース入門はクエリとマクロでデータベースを
組んでいるのに対し、
Accessで経理実践編は、すべてAccessVBAで組んでいます。

クエリとマクロで作っても、VBAで作ってもできるデータベースに大きな違いはありません。
ただ、より使い勝手の良いデータベースの機能を作るには、やはりVBAの知識はあった方が
いいです。

クエリをある程度マスターして、VBAにもチャレンジしたいという方にお勧めです。

是非是非ご一読下さい。

フォームの作成③~抽出条件を加える

できたままのフォームでは使い物になりません
これを形を整えて、②のフォームのようにしていきます。


デザインビューで開いて下の図になるようにテキストボックスをまずは手直しします。
最初はテキストボックスを並べ替えます。
次は集計用のテキストボックスを作成します。

詳細の費用合計は、テキストボックスを配置して次の算式をコントロールソース
に入れます。
=Nz([家賃])+Nz([広告宣伝費])+Nz([その他])+Nz([消耗品費])+Nz([人件費])+Nz([仕入高])
粗利益については、同じくテキストボックスを配置して次の算式をコントロールソース
に入れます。

=[売上高]-[テキスト26]
※配置したテキストボックスの名前は異なるので、実際に作成してテキストボックスの
名前を使って算式を組んでください。以下同じ。

クロス集計クエリでは科目名ではなく、集計科目を使います。

科目名をそのまま使うと、横に広く枠が取れなくなってしまうので、集計科目という
フィールドを作り、そこに科目名を当てはめます。

フォームの上部に、抽出用のテキストボックスとコマンドボタンを配置します。
日付の横のコマンドボタンには次のVBAコードをクリック時に入れます。
Private Sub コマンド17_Click()
Me.Filter = “日付2='” & Me!テキスト15 & “‘”
Me.FilterOn = True
End Sub

店舗名はコンボボックスから店舗を選択できるようにします。
コンボボックスを貼り付ける際には、コントロールウィザードを起動して設定します。
①テーブルから値を選択
②T店舗を選択
③店舗CDと店舗名をフィールドに追加
④次の画面はそのまま次へ
⑤キー列を表示しないにチェックが入っていることを確認して完了

隣のコマンドボタンには次のVBAコードを入れます。
Private Sub コマンド22_Click()
Me.Filter = “店舗CD=” & Me!コンボ20 & “”
Me.FilterOn = True
End Sub

これで月毎、又は店舗毎に抽出できるようになりました。

==================================
昨年の1月からマラソンのトレーニングには某社の厚底シューズを履いて
いましたが、時々薄底シューズを履くと、筋力の衰えを感じました。
色々調べると、以前から厚底シューズによる筋力低下は問題になっているようです。
そんなわけで厚底シューズはレースまで温存し、練習は薄底に変えました。

足への負担が軽い分、筋肉は付きにくいということですね。
当たり前といえば当たり前ですが、気付かなかったー

最後までお読みいただきありがとうございます。

フォームの作成②

F経費入力で経費を入力していくと、下のようにテーブルにレコードがたまって
行きます。

この貯めたデータを店舗ごとに集計していきます。
クエリの設定は下の通りです。
集計にはクロス集計クエリを利用します。
集計と行列の入れ替えは図の通り設定してください。

注意が必要なのが、日付です。データは月毎に集計したいので
年月で集計できるように
日付2: Format([日付],”yymm”)
として形式を整えます。
Q経費集計で保存します。

実行すると下の図のようになります。

このクエリを元に、フォームを作り店舗ごとの収益を表示できる
ようにします。

フォームの作り方は、フォームウィザードから
①Q経費集計のすべてのフィールドを選択
②表形式を選択
③完了で編集します。
とりあえず下の図がウィザード完了後のフォームです。

ここから形を整えていきます。

クロス集計クエリはExcelで言うところの、ピボットテーブルに似ている機能です。
AccessではExcelほど、クロス集計クエリは使いませんが、Excel的な集計を
Accessでやろうとするのであれば、非常に重宝します。

======================================
やっとコロナワクチン2回目接種完了しました。
これでコロナにかかりにくいし、仮に罹っても重症化することもないと思うと
安心です。
副反応も1回目よりも2回目の方が軽かったな。
こんなこともあるんですね。

本日も最後までお読みいただきありがとうございます。

明細に集計行を追加する①

請求書の小計・消費税・合計金額の出し方は大きく分けて二通りあります。

①一番下の行に表示させる場合

②明細行の一番下に表示させる場合

どちらにするかは使う方の好みの問題ですが、私が現場で選択をする場合
やはり経営者の好みに合わせて使い分けています。

実際に動作の設定は、①よりも②の方が圧倒的に面倒です(笑)

①の設定で面倒なのは、枠の行数を固定することで、データの出力自体は
特に設定は不要です。

②の設定は、出力する項目をいったん違うテーブルにデータを掃き出して
それを元にレポートで印刷します。
集計項目もクエリで計算してテーブルのレコードにしてしまいます。
そうすることで自由に設定ができるようになります。

一度出力したレコードは次の印刷時にすべて削除して、新しいレコードに
差し替えます。

流れ的には
追加クエリでレコードを追加し、
削除クエリでレコードを削除し、新たに追加クエリで追加する
こんな感じです。

これをマクロでするのか、VBAでやるのかです。マクロでも十分できます。

==========================================
最近業務改善の仕事をいくつか頂けるようになりました。
いくら書籍等で学んでも、現場で学べることには敵わないと感じます。
これからもまだまだ知識を増やして、お役に立てる情報を発信していきます!

本日も最後までお読みいただきありがとうございます。