[三流君] −−> [VBAで楽しく] −−> [バックナンバー一覧]
−−> No.076 Access レポート Me.NextRecord = Falseで移動を止める

Access レポート Me.NextRecord = Falseで移動を止める

メルマガ発行内容

<Access レポート Me.NextRecord = Falseで移動を止める>

こんにちは、三流プログラマーKen3です。 今回は、 Access レポートで、 Me.NextRecord = False を使用して、レコードの移動を止めて見たいと思います。 メルマガの中身はふざけてる言葉が多いけど、 サンプルは真剣に作ったので、 http://www.ken3.org/vba/lzh/vba076.lzh にtest076.mdb(Access97版)が保存されています。 テストで使ってみてください。

/* * 1.今回のキッカケ */

No.74 Access 列型レポートの左端に印刷したい http://www.ken3.org/backno/backno_vba15.html#74 で、内容は、 --- >  アクセスで列型のレポートを作りたいのですが、困っていることが > あります。列型のレポートそのものは作れるのですが、ラベルがうまく > いきません。 >  作りたいのは縦4列のデータを出力し、左端にラベルをつけるとい > うものです。 >  詳細にラベルを置くと繰り返し出力してしまいます。結局解らなく > て、現在はラベルと罫線と、データを分けて二重に出力するという面倒 > な方法をとっています。 >  何か解決方法はないものでしょうか? ---- 列型のレポート、外枠に何か書きたい、、のかぁ、、 上下はページのヘッダー、フッターがあるけど、 左右はそれらしいの無いしなぁ。今回使いたいのは左側に何か書きたいときかぁ。 で、余白に無理やり書いて、IIfでかわしてみる方法を書いたんだけど、 やはり、印刷部分が長くて、かわせなかったみたい、う〜ん。。。 の続きです。

/* * 2.アプローチの方法を変える */

さてと、余白から攻めてみても、あの子は落とせなかったかぁ。 次のアプローチ方法を考えないとなぁ。 できたら手をかけないで、女の子落としたいよね(目的を達成したいよね) みんながやってない斬新な方法がいいけど、なかなか思いつかない。 ※くだらない恋愛テクニックはネットに転がっているけど、  自分に合うテクニックが無いんだよなぁ。。。じゃなくってVBAテクね。 なんて書いてると、女性読者とマジメ君が解除ボタンを押すので、 路線を戻してと、(あまり戻ってなく、いつもの三流的な文章だけど) 昔のメルマガ印刷系のサンプルで、 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Me.NextRecord = False で、レコードを進ませないで、印刷データの複製を作ったなぁ。 ※元ネタは有名な、マイクロソフトサポート技術情報の  最後まで罫線を引くで覚えたMe.NextRecord = Falseだけど。 次の構想、 ^^^^^^^^^^ [1111111111] [2222222222] [3333333333] [4444444444] [5555555555] [6666666666] と続く印刷を Me.NextRecord = False を使用して、 [1111111111] [1111111111] [2222222222] [3333333333] [4444444444] [4444444444] [5555555555] [6666666666] として、左側の重複データの時、可視のON/OFFでラベル的データを表示する。 そんな戦略で作ってみたいと思います。 ※なんだ、昔の女に使った技を応用するのか?  まだ言ってるよ(スミマセン、独り言多くって(笑)) 下準備、仕込みで、わかり易くするために 作成したコントロールのcntA(カウンタ)を見えるようにしてと、 (Mod 3) 3で割って余りが1の時はデータを進ませるのを止めるか。
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
    If (Me![cntA] Mod 3) = 1 Then  '右端なら
        Me.NextRecord = False  'レコードの移動を止める
    End If
End Sub
よし、プレビューするかな。 あっ、画面全体に同じ結果が(笑)レコードが頭から動かないので(笑) ※印刷ボタンを間違って押したら、無限に印刷するので、  テスト時は注意して下さい。 そっか、 レコードが進まないから、カウンタも1のままなのか。 ^^^^^^^^^^^^^^^^^^^^^^ では、フラグ使って、コントロールしますか。 Private pFLG As Boolean '印刷制御フラグ
Private Sub ページヘッダー_Format(Cancel As Integer, FormatCount As Integer)
    pFLG = False  '印刷してないに設定する
End Sub
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
    If (Me![cntA] Mod 3) = 1 Then  '左端なら
        If pFLG = False Then 'まだラベルエリアを印刷してなかったら
            Me.NextRecord = False      'レコードの移動をまず止める
            pFLG = True  '印刷フラグを立てる
               'ここにラベルのOn/Off処理を入れる
            
        End If
    Else
        pFLG = False  'その他の時
    End If

End Sub
これで、左端のレコードだけ、2重で印刷することができました。 ↑プレビュー結果 おいおい、 2重に印刷してどうするの? ~~~~~~~~~~~~~~~~~~~~~~~~~~ 質問は、左端にラベルを印刷したいだろ? まぁまぁ、あわてないでよ。 次に印刷したいラベルデータと実データの切り替えを行います。 また、=IIF使うんだろ? それだと、芸が無いし、大変なので、 有名なプロパティ、.Visible = True/Falseを使用します。 まず、ラベルに印刷したい固定文字をレポートに貼ります lab01,lab02とコントロール名を付けます。 可視は、Falseにしておきます ↑ラベルの配置(中身見て笑わないでね) 印刷する各コントロールに対して、 .Visible = True/Falseを使用して、印刷する/しないを切り替えます。 Private pFLG As Boolean '印刷制御フラグ
Private Sub ページヘッダー_Format(Cancel As Integer, FormatCount As Integer)
    pFLG = False  '印刷してないに設定する
End Sub
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
    If (Me![cntA] Mod 3) = 1 Then  '左端なら
        If pFLG = False Then 'まだラベルエリアを印刷してなかったら
            Me.NextRecord = False      'レコードの移動をまず止める
            pFLG = True  '印刷フラグを立てる
               'ここにラベルのOn/Off処理を入れる
            Me![lab01].Visible = True
            Me![lab02].Visible = True
               '実データをOff
            Me![ID].Visible = False
            Me![WrietTime].Visible = False
            Me![F_TITLE].Visible = False
            Me![F_MEMO].Visible = False
        Else
               'ここにラベルのOn/Off処理を入れる
            Me![lab01].Visible = False
            Me![lab02].Visible = False
               '実データをOff
            Me![ID].Visible = True
            Me![WrietTime].Visible = True
            Me![F_TITLE].Visible = True
            Me![F_MEMO].Visible = True
        End If
    Else
        pFLG = False  'その他の時
    End If

End Sub
ポイントは、 Me.NextRecord = False でレコードの移動をまず止める。 印刷対象レコードの移動の制御ができたら、次は、 左端の時は、ラベル関係を表示、実データ関係を非表示にしただけです。 ~~~~~~~~~~ ↑左側にラベルを無事?に表示できました。

/* * 3.構想の穴(笑) */

この作戦でばっちり、女の子を落とせればいいけど (まだ、言ってるよ、目的を達成できればいいけど) この構想には、弱点があって、 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [1111111111] [2222222222] [3333333333] [4444444444] [5555555555] [6666666666] と続く印刷を Me.NextRecord = False を使用して、 [1111111111] [1111111111] [2222222222] [3333333333] [4444444444] [4444444444] [5555555555] [6666666666] として、左側の重複データの時、可視のON/OFFでラベル的データを表示 もう、気がつきました? [1111111111] [1111111111] [2222222222] [3333333333] が 5cm,5cm,5cm,5cm の等間隔だったら、レコードを進ませない姑息な手段でアプローチも可能だけど、 [lablab] [1111111111] [2222222222] [3333333333] と 3cm,5cm,5cm,5cm なんて感じで、ラベルエリアは3cmデータエリアは5cmだと、 この手は使えないんですね。。。。 大丈夫だって、たぶん、女の子、男の子を落とすとき、 本人なりに告白は(VBAは)アレンジして使ってくれるって。 レポートって、普通余白があるから、 [余白2cm] [1111111111] [1111111111] [2222222222] [3333333333] [余白2cm] [1111111111] [1111111111] [2222222222] [3333333333] って感じのレポートなら、余白を0.5や0にして [0.5] [1.5あけてlab3 ] [1111111111] [2222222222] [3333333333] とか、余白をなくして、 5cm,5cm,5cm,5cm の左端5の中で、自分でラベルをずらせば(2.0+3.0で5にしたり)なんとかなるかも。 この小細工アプローチで、(いつもの正面から行かない逃げ手で) 女の子、うまく落とせるといいけど。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ あれ?質問者って、男性?女性?どっちだったっけ? まぁイイヤ、たぶん私のメルマガ女性はあまり読んでないだろうし(笑)

/* * 4.おわりの挨拶 */

今回は、Accessのレポートで、 ・Me.NextRecord = False を使用してレコードの制御 ・.Visible = True/Falseを使用して印刷(表示)の切り替え って話でした。 メルマガの中身はふざけてる言葉が多いけど、 サンプルは真剣に作ったので、 http://www.ken3.org/vba/lzh/vba076.lzh にtest076.mdb(Access97版)が保存されています。 テストで使ってみてください。 拾い読みして、 1つでも何かの参考となれば幸いです。 Excel/Access大好き、三流プログラマーKen3でした。 ※評価は↓で投票してね。感想は掲示板かメールでくださいね。


ページフッター

ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、

種類別のリンク や 広告など

気になったジャンル↓を選択してください。

人気記事(来場者が多いTOP3):
[VBAでIE,WebBrowserを操作]・・・VBAでIE,WebBrowserを操作する サンプルです
[Access から Excel 連携 CreateObject("Excel.Application")]・・・AccessからExcelを操作したりデータの書き出しなどです
[VBAでOutlookの操作 CreateObject("Outlook.Application" )]・・・VBAからOutlookを使い、メール関係を処理するサンプルです
↑上記3つみたいなCreateObjectで他のアプリケーションを操作するサンプルが人気です。

Excel関係:
[Excel UserFormを操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
[ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
[Excel関係 関数、その他]・・・その他Excel関係です

Access関係:
[Access UserForm/サブフォーム 操作]・・・アクセスでフォームを使ったサンプルです
[Access レポート操作]・・・レポートを操作してみました
[Access クエリーやその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です

その他:VBAの共通関数やテキストファイルの操作など
[VBAでテキストファイル(TextFile)の操作]・・・普通のテキストファイルを使ったサンプルです
[VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます

開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う]

仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力]

※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。
※※読んで、気分を悪くされたらスミマセン。

Blogとリンク:[三流君の作業日記]/ [VBAやASPのサンプルコード]/ 広告-[通販人気商品の足跡]



[三流君(TOP ken3.org へ戻る)] / [VBA系TOPへ] / [VBA系バックナンバー目次へ移動]