カテゴリー別アーカイブ: Access(アクセス)

レポートの行数が定まらないときの対処法

レポートを印刷するときに、詳細タブでVBAコードで印刷する行数を指定しているにも関わらず、
うまく表示できない場合がよくあります。

こんな感じです。本来なら2枚目に収まるはずが、3枚まで枚数が増えていて、尚且つ
2枚目は空白が多いです。

これでは使い物にならないので、調整が必要になります。

ではどこを調整するのかというと、デザインビューでレポートを開きます。
最初に手を付けるところは、改ページのプロパティの高さを調整します。

ここを0.〇ミリ単位で微調整していくと、直るときがあります。
まずは詳細タブの改ページの高さを調整してみてください。

多くの場合はこれで直るのですが、それ以外にも
レポートヘッダーやフッター、請求書NOヘッダーやフッターの幅(高さ)も調整してみてください。

いろいろ試していくうちに、下の図のようにうまくまとまる設定が見つかります。

経験上、20分くらいいろいろ高さを直しているうちに直るケースが多いです。
何故VBAのコードで行数を指定しているのに、そうならないのか理由は分かりません。
一発で上手くいくケースの方が少ないです。

大事なことはあきらめず調整し続けることです。

===========================================
コロナ期間中税務調査も自粛でしたが、10月1日から解禁となります。
ただ今まで実地調査が基本でしたが、密の関係で、今までと違った税務調査の
やり方が始まりそうです。

こちらからしてみると、調査の立ち合いは正直暇で仕方がないので
さっと終わる形になるといいなと思います。

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

請求明細から請求書を作る①概要

この前、知り合いからExcelの明細から請求書を作れないか?という相談があり
やってみました。なかなかの出来栄えでしたので、そのやり方を解説します。

概要としてはこんな感じです。
Excelにとあるシステムから掃き出した請求明細があります。

続きを読む

レポートの行数を指定するコードを読む②

レポートの行数を指定するときの、肝の部分を解説します。
まず前提として下の画像をご覧ください。

下の言い回しがよく出てきますが、オブジェクトの名前とテキストボックスが一致している
ことがわかると思います。

最初に行数を指定します。
If i Mod 18 = 0 Then
18が行数です。20行にしたいなら18を20としてください。
ここで、iが18で割り切れるときとそうでないときに大きな違いがあります。
18で割り切れるときは通常改ページをします。
でもデータの数が18個の場合、ちょうど1ページで収まります。
19の場合は次のページに1行表示されます。
それがこの違いです。
If i = j Then
 Me![日付].Visible = True
 Me![項目].Visible = True
 Me![使用量].Visible = True
 Me![料金].Visible = True
 Me![消費税].Visible = True
Me![税込金額].Visible = True

ElseIf i < j Then Me![bpage].Visible = True
Me![日付].Visible = True
Me![項目].Visible = True
Me![使用量].Visible = True
Me![料金].Visible = True
Me![消費税].Visible = True
Me![税込金額].Visible = True

i=jのときは改ページのコードがありません。
ij)のときはもう次のレコードがないのでFalseになります。
これが大まかな流れです。

次によく出てくる言い回しを解説します。

Me![日付].Visible = True
Me![項目].Visible = True
Me![使用量].Visible = True
Me![料金].Visible = True
Me![消費税].Visible = True
Me![税込金額].Visible = True

レポートにテキストボックスがあるのにVBAコードにない、となるとエラーになります。

ここで
Me![日付].Visible = True
これを詳しく読み解くと
日付のテキストボックスの表示を見える状態にします。

Me![日付].Visible = False
この場合はVisbleがFalseなので見えない状態になります。

ではどういう場合にTrueになって、どういう場合にFalseになるのか?
というと、一番大きな違いは、
表示するレコードがあるかどうか?ということです。
当然レコードがあれば、表示はTrueになるし、なければFalseになります。

表示するレコードがあるかどうかの判定は
iがjより小さい場合はTrueになります。
iはループする回数で、jは表示するレコードの数です。
i=jならVisibleはFalse
となります。

非常に分かりにくいですが、ずっと見ているとなんとなく言わんとしていることが
分かってくると思います。頭の中でiを回しながら、いまどんな状態なのか、イメージ
してみてください。
============================================
10年間整体に通うことなく走り続けた体は、かなりバキバキに固くなっていました。
いま週2で整体に通って体をほぐしてもらっています。やはり体の手入れは大事だなと
思う今日この頃です。

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

レポートの行数を指定するコードを読む

Accessでレポートを印刷する場合、何も指定しないと尻切れトンボの請求書
が出てきます。

Excelなら行を挿入して簡単に手直しができるのですが、
Accessの場合はこれをプログラミングで制御しなければいけません。

Accessの難しさは個人的にはここに集約されると思います。。
続きを読む

レコードを選択して集計する

Accessを使っているとテーブルにどんどんレコードが追加されていきます。

Accessに入力したデータで集計もしくは新たな資料を作る場合、何もしなければ
クエリやVBAの指示は全レコードに及び、ほんの一部の処理が全レコードに及びます。
特に重たい処理(DLookup関数やDsum関数)を使うときは如実に遅くなります。
続きを読む

源泉徴収税額の計算方法が変わりました

給与計算をする上で、源泉徴収税額表が変わりました。

源泉徴収税額表(国税庁のHP)

大きな変更は、高額の給与の計算が細かくなったことでしょうか。
これをクエリで組むと、なかなかのクエリになりました。

このデータベースは大人数の給与計算を想定していないので、多少重くなっても
問題ないかなと思います。
続きを読む