[三流君] −−> [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でした。 ※評価は↓で投票してね。感想は掲示板かメールでくださいね。

フィードバック

VBA系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.076を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

ページフッター(リンクや広告など)


[三流君(TOP ken3.org へ戻る)]
-- [VBA系TOPへ]
---- [VBA系バックナンバー目次へ移動]
------ [VBAでIEを操作 CreateObject("InternetExplorer.application")]・・・実は当店一番人気、VBAでIEを操作するサンプルです
------ [VBAでOutlookの操作 CreateObject("Outlook.Application")]・・・Outlookを使い、メール関係の処理です
------ [Access から Excel 連携 CreateObject("Excel.Application")]・・・人気のAccessからExcelへデータ書き出しなどです
------ [AccessのUserForm/サブフォームを操作]・・・アクセスでフォームを使ったサンプルです
------ [Accessのレポートを操作]・・・レポートを操作してみました
------ [Access クエリー関係やその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です
------ [Excel UserForm(ユーザーフォーム)を操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
------ [ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
------ [Excel関係 関数、その他]・・・その他Excel関係です
------ [VBAでテキストファイル(*.txt,*.html,*.csv)の操作]・・・テキストファイルを使ったサンプルです
------ [VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます


広告
-- [通販系の売れ筋広告へ] ←主に楽天やAmazonのランキングです
blog
-- [三流君の作業日記] ← 日々の作業を少々
-- [通販あしあと] ← 通販ページの足跡を一覧で羅列

情報を探す

情報を探すならGoogleかな?

↓Web全体、サポート情報(support.microsoft.com)や三流君VBA(ken3.org)から検索する
Google
Web www.ken3.org
www.microsoft.com support.microsoft.com

あとは、項目別にMSでお勉強かな?
◆ マイクロソフト サイトの歩き方
◇ How-To インデックス
◇ FAQ インデックス
◇ スキルレベル別おすすめコンテンツ
◇ テクノロジ マップ
◇ テーマ別技術資料一覧

書籍の購入

Webだけじゃさすがに勉強しきれないので、プログラミング関係の書籍も読んでみては??

コンピュータ書籍の発送がハヤイ専門店

コンピュータの本・専門店
種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。
お奨め本の目次を見るだけでも勉強になったり

amazon.co.jpでキーワード別チェック

下記、私が設定したキーワードですが、こんな感じで資料や書籍を探ってみては?
[VBA全体を把握する] -- やはり全体をさらっと見たいですよね。
[SQL関連でDB力UP] -- システムはデータベース設計が重要
[ADO接続を探る] -- VBAなのでADO接続を押さえておく
[Windows APIを探る] -- さらにAPIになて知ってれば強力だ!
[.NETを探る] -- と言っても時代は.NETに流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・