• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:LOOPやFor文で出来ないでしょうか。)

LOOPやFor文で出来ないでしょうか。

このQ&Aのポイント
  • 現在帳票出力のコーディングをしております。帳票は8レコードで一枚で、8レコード以下になると、罫線が印刷されないため、ブランクのデータを作ることで対応しようと思っています。
  • データ件数が8の倍数まで処理をつづけたいのですが、どのように記述すればいいか思案に苦しんでおります。
  • イメージとしては、件数カウントしている数値を8で割り、その答えが8の倍数でない場合は小数点が出ると思います。要するに、整数というか小数点が出なくなるまで加算させるという条件ができればいいのかなと思っているのですが、それをコーディングにするにはどうすれば。。。と思っている次第です。

質問者が選んだベストアンサー

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

8の倍数でストップすればいいんでしょ?だったら DATA/8 = INT(DATA/8) こいつが成立すれば止めればいい、ってだけなんじゃ?

shinnnn
質問者

お礼

ありがとうございます。 教えて頂いたとおりで処理されました。 INT型だと小数点が切り捨てられるという視点ですね。 簡単なことでも気が付かなかったです。 もっと精進いたします。

その他の回答 (6)

回答No.7

ページフッターに同じ位置に罫線を配置する手もあります。 Option Compare Database Const MaxRow = 8 Dim RowCount As Integer Private Sub ページフッターセクション_Format(Cancel As Integer, FormatCount As Integer)   RowCount = 0 End Sub Private Sub レポートフッター_Format(Cancel As Integer, FormatCount As Integer)   If RowCount = MaxRow Then     RowCount = 0     Me.MoveLayout = False     Me.PrintSection = False   Else     RowCount = RowCount + 1     If RowCount < MaxRow Then       Me.NextRecord = False       Me.MoveLayout = True     Else       RowCount = 0     End If   End If End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)   RowCount = RowCount + 1 End Sub

shinnnn
質問者

お礼

ありがとうございます。 とても興味深い内容でした。 レポートで制御できれば、データベースでブランクを作らずに済みますね。 次回是非ともこちらの方法も視野に入れていきたいと思います。

  • tkgoya
  • ベストアンサー率0% (0/1)
回答No.6

n の倍数を判定したい場合は剰余を計算する「Mod演算子」を使用します。 m が n の倍数なら、m ÷ n の余りは 0 になりますので、下記のようにします。 Do Until KANRI_TANA_KENSU Mod 8 = 0 ---- 中略 ---- Loop ※但し、KANRI_TANA_KENSU が 0 の場合にも剰余は 0 になりますので注意が必要です。

参考URL:
http://www.geocities.jp/cbc_vbnet/kisuhen/enzanshi.html
shinnnn
質問者

お礼

なるほど、IF文で<>0を条件に入れてやれば いけそうですね。 とてもシンプルなコードでわかりやすいです。

回答No.5

Do Until KANRI_TANA_KENSU Mod 8 = 0 でいいですね。 ただし、これは8件目でループを抜ける形になるので、 正しくは9かもしれません。 また、0から開始する場合は初回でループを抜けてしまう為、 宜しくありません。 (そこはロジックの書き方の問題)

shinnnn
質問者

お礼

ありがとうございます。 事前に条件文で絞り込んでこの処理を通せばクリアできそうです。 その辺はデバックしながら検証していきたいと思います。

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.4

#3です。計算を誤りました。 レコード件数がXだとすると、 7-((X+7) mod 8) で追加すべき空白レコードの件数が出ます。 For~Nextで回せばどうでしょうか。

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.3

レコード件数がXだとすると、 ((X+1) mod 8) -1 で追加すべき空白レコードの件数が出ます。 For~Nextで回せばどうでしょうか。

shinnnn
質問者

お礼

ありがとうございます。 訂正頂いた内容の物で一度検証してみたいと思います。

  • emsuja
  • ベストアンサー率50% (1065/2116)
回答No.2

KNRI_TANA_KENSU が整数なら If KANRI_TANA_KENSU Mod 8 = 0 Then Exit Do で Loop を抜け出せばいいのでは

関連するQ&A