• ベストアンサー

ACCESSのレポートに売上の累計を計算させましたが・・・・

ACCESS2002についてです。 テーブルに"売上日" "売上金額"とある中で"売上累計"を明細行毎にだそうと、本に書いてある下記のように入力しましたが、ページが変わってしまうと"売上累計"が合わなくなってしまいます。どうしたら解決できますか???? Option Compare Database Option Explicit Private curRuikei As Currency Private Sub Report_Open(Cancel As Integer) End Sub Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer) '累計のクリア curRuikei = 0 End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) '累計の加算 curRuikei = curRuikei + Me!売上金額 Me!売上累計 = curRuikei End Sub です。

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

レポートのフォーマットというのは ページ内に収まるかどうかを調べるために一度フォーマットしてみて 収まらないと分かるとやりなおすというように 結構複雑な処理をしています つまりフォーマットというのは必ず1回行われるというものではないのです アップされたコードのようにフォーマットするたびに加算していたのでは 結果が狂ってくるのは当然ですね FormatCountが1のときだけ加算するようにすれば逃げられるかも分かりませんが ちょっと自信ないです それよりレポートなら[集計実行]という機能がありますから 売上をもうひとつ置き、2つ目の[集計実行]を[全体]とするだけでいいのでは

itiba_2007
質問者

お礼

有難うございます。 早速試してみます。

その他の回答 (2)

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.2

[売上累計] の 「コントロールソース」 を [売上金額] の 「コントロールソース」 と同じにします。 [売上累計] の 「集計実行」 を 「全体」 にします。 以上で出来ます。 VBA は必要ありません。

itiba_2007
質問者

お礼

納得できました。 有難うございました。

noname#182251
noname#182251
回答No.1

>"売上累計"を明細行毎にだそうと の意味が良く判りませんがMS-ACCESSならば ・グループフッター ・Sum 関数 などを使用すれば、もっと楽にできるのではと考えます。

関連するQ&A

  • アクセス レポート バックカラーの変更方法

    現在レポートで1行ごとにバックカラーを変えて印刷しておりますが、それをチェックボックスにチェックがはいった行だけをカラーにするよう変更したいと考えておりますが、よくわかりません。現在のコードをコピーしました。お手数ですがご指導願います。 Option Compare Database Dim bline As Integer Private Sub Report_Open(Cancel As Integer) End Sub Private Sub ページヘッダー_Format(Cancel As Integer, FormatCount As Integer) bline = 0 End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) bline = bline + 1 If bline Mod 2 Then Me.Section(0).BackColor = 16777215 Else Me.Section(0).BackColor = 12663225 End If End Sub

  • Access2003 レポートの合計の出し方

    お世話になっております。 Access2003のレポートで下記のようなコードで価格の合計を求めようとしています。 1ページですとこれで合計は表示されるのですが、レポートが2ページ以降になると最終ページの合計が表示されます。 最終ページの最後にすべての合計を出したいと思っています。 ご教授いただければ幸いです。よろしくお願いいたします。 Option Compare Database Dim a As Variant Private Sub ページヘッダーセクション_Format(Cancel As Integer, FormatCount As Integer) a = 0 End Sub Private Sub グループヘッダー3_Print(Cancel As Integer, PrintCount As Integer) a = a + Me.価格 End Sub Private Sub レポートフッター_Print(Cancel As Integer, PrintCount As Integer) Me.合計 = a End Sub

  • Accessのレポートについて

    Accessのレポートについて Access2002で作成した、あるシステムのレポートで、会社名と代表者名を印字するようにしています。 14文字ある氏名が13文字で改行されてしまいます。 15文字以上ある氏名は縮小されて、1行で枠内に収まって印字されます。 該当のレポートのプロパティを開き、イベントタブの「開く時」のイベントプロシジャを見ると下記のような表記があります。 下記の表記により、上記のようになるのではないかと推測していますが、素人な者で、下記を解読できずにおります。 どうか、下記について、ご教授いただけないでしょうか。 Option Compare Database '文字列の比較にデータベースで決められた形式を使用します。 Private Sub Report_Open(Cancel As Integer) End Sub Private Sub 詳細1_Format(Cancel As Integer, FormatCount As Integer) Call 氏名自動縮小(Me!氏名, 14, 9) End Sub

  • Accessのレポートで開くと「読み取り専用なので…」と出る。

    今まで通常通り表示できていたレポートを、詳細のところを白/グレーのストライプにしようと思い、以下のコードを追加しました。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) Count = Count + 1 If Count Mod 2 = 1 Then Me.Section(0).BackColor = 16777215 Else Me.Section(0).BackColor = 12632256 End If End Sub すると 実行時エラー'2135' このプロパティは読み取り専用であるため、設定できません。 と出てしまいました。 どこがダメなのでしょうか?

  • Access レポートの詳細Formatに複数の式

    いつもお世話になっています。 レポートの詳細に結婚して姓が変更になった場合、旧姓に取り消し線を引く という式を作成しました。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If 新姓 <> "" Then Me.取り消し線1.Visible = True Me.取り消し線2.Visible = True Else Me.取り消し線1.Visible = False Me.取り消し線2.Visible = False End If End Sub 今回は、住所も変更になって新住所が入力されたら、旧住所に取り消し線を引きたいと 思います。 ただし、変更にならない場合もあるので、別のIF文になります。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If 新住所 <> "" Then Me.取り消し線3.Visible = True Me.取り消し線4.Visible = True Else Me.取り消し線3.Visible = False Me.取り消し線4.Visible = False End If End Sub レポートの詳細_Formatに複数の条件を設定することができるのでしょうか。 お力添えをお願いいたします。

  • アクセスレポートのグループごとのページ付番について

     Accessレポートのグループごとにおける、ページ付番についてお聞きします。  私なりにインターネットで調べて、下記モジュールを記述しました。レポートの状況は、次のとおりです。 ①グループ化している項目は「全体管理番号」で、ページはページフッターに「GPページ数」名のテキストボックスに表示しています。 ②「Pages」を参照するテキストボックス(コントロールソース =[Pages])を「総ページ取得」名で、ページフッターに非表示配置しています。 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ Option Compare Database Dim d As Object Dim brk As Variant ------------------------------------------------------------------------------- Private Sub Report_Open(Cancel As Integer) Set d = CreateObject("scripting.dictionary") End Sub ------------------------------------------------------------------------------- Private Sub ページフッターセクション_Format(Cancel As Integer, FormatCount As Integer) If Me.全体管理番号.Value <> brk Then Me.Page = 1 brk = Me.全体管理番号.Value End If If Me.Pages > 0 Then Me.GPページ数 = Me.Page & "/" & d(Me.全体管理番号.Value) & "ページ"  End If End Sub ------------------------------------------------------------------------------- Private Sub 全体管理番号_フッター_Format(Cancel As Integer, FormatCount As Integer) If Me.Pages = 0 Then    d(Me.全体管理番号.Value) = Me.Page End If End Sub -------------------------------------------------------------------------------  この内容で印刷プレビューをした結果、複数ページになる場合は正しく表示になるのですが、複数ページにならない1ページのみの場合はなぜか「1/5ページ」や「「1/3ページ」となり、「1/1ページ」となりません。  「1/1ページ」表示となるようにするには、どこを修正すれば良いかお教え願いたいと思います。 どうぞよろしくお願いいたします。

  • Accessのラベル指定箇所印字について

    Window 7 Access2013 いつも、お教えいただき、誠にありがとうございます。お手数ですが、今ひとつお教えいただきたいと思います。 ラベル印刷で、開始位置を指定して印字する方法を検索して利用させていただいておりますが、 1枚のラベルを作成して指定したラベルに印字しようとして ・プレビューすると指定した印字位置にありますが ・実際印字すると 1枚目に印字されてしまいます コードは、引用させていただいた Option Explicit Dim i, k As Integer Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer) i = 0 k = InputBox _ ("ラベル印刷の開始位置を入力してください") End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If i < k - 1 Then Me.MoveLayout = True Me.NextRecord = False Me.PrintSection = False i = i + 1 End If End Sub としています。 何卒、よろしくお願いいたします。

  • Access レポートの直線の長さについて

    os: windows7 バージョン:Access2013 レポートに配した直線のコントロールの長さを調整する方法をご教示お願いいたします。 いつも、参考にさせていただいております。 レポートに配した直線のコントロールにつきまして、「ある条件で太さが変わる」方法 をこの質問箱でご教示いただきました。誠に、ありがとうございました。 それは、レポートの詳細セクションに「カウント」というコントロールを作成して 可視=いいえで Option Compare Database Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If Me.カウント = 1 Then Me.直線149.BorderWidth = 1 Else Me.直線149.BorderWidth = 0 End If End Sub となっていて、とても見栄えの良い書面が出来ています。 この直線149の長さは現在16.5cmあるのですが、上記と同じ条件で、 カウント= 1 のとき直線149の長さは現状のままの16.5cmで そうでないとき、 直線149の長さを「14.8cm」で「右詰」としたいのです。 どのように記述すれば良いか色々探してみましたが見つかりませんでした。 どなた様かご教示くださるよう、何卒、よろしくお願いいたします。

  • Access のレポート上のコントロールに、VBAで値を設定できる?

    こんにちわ Access のレポート上にテキストボックスが有ります。 レポート印刷時の Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) End Sub プロシージャー内で、上記テキストボックスに任意の文字列を設定する事は可能でしょうか? 以前 Access VBAでアプリケーション開発していた時には、出来たような気がするのですが.... これって出来ないのでしたっけ?

  • Accessレポートでの改ページ

    Accessのレポートで、明細行を必ず8行ずつ印刷したいのです。 8行に満たない場合は、8行になるまで空白行を加えます。 そして、ヘーダー部に明細の金額合計があり、最終ページはヘッダー部を含めて8行にしたいので、明細行が7行となります。 とりあえず↓ 印刷する明細行数を常に8の倍数になるように空白行を作り、8行ごとに改ページしてみました。 しかし、最初の1ページ目はちゃんと8行で改行されますが、2ページ目からは、1行ずつしか印刷されません。 例えば、明細レコードが9レコードの場合、空白行含めて15行の明細をつくりました。 それを以下のプログラムで実行すると、9レコード目から15レコード目までは、1ページに1行ずつしか印刷されません。 どうすればいいのでしょうか? どなたかよろしくお願いします。 ***************************************************** Private Sub ページヘッダー_Format(Cancel As Integer, FormatCount As Integer) '印刷行の初期化 cntPage = 0 End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) '印刷行を更新 cntPage = cntPage + 1 If cntPage = 8 Then '改ページ Me.Section(acDetail).ForceNewPage = 2 '印刷行の初期化 cntPage = 0 End If