過去ログ

                                Page      91
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼フォームのプレビューを閉じる時にウィンドウも閉じたい  あおやま 02/10/31(木) 9:52
   ┣追記  あおやま 02/10/31(木) 10:32
   ┗Re:≠回答  YU-TANG 02/11/1(金) 23:16
      ┗Re:≠回答  あおやま 02/11/2(土) 2:12
         ┗今度は回答  YU-TANG 02/11/2(土) 14:07
            ┣ありがとうございました!  あおやま 02/11/5(火) 5:40
            ┗疑問  あおやま 02/11/5(火) 5:47
               ┗Re:疑問  YU-TANG 02/11/5(火) 22:43
                  ┗ありがとうございます  あおやま 02/11/7(木) 1:14

 ───────────────────────────────────────
 ■題名 : フォームのプレビューを閉じる時にウィンドウも閉じたい
 ■名前 : あおやま
 ■日付 : 02/10/31(木) 9:52
 -------------------------------------------------------------------------
   こんにちは。お世話になっております。

今回は、自動的に集計して表に書込んで印刷するツールを作ろうとしています。

起動時に「○○を印刷します」等の確認画面を出し、
OK釦クリックで自動的に集計を行ってプレビュー画面を出し、
ここで、ユーザーが印刷釦をクリックすれば印刷、
「閉じる」釦(印刷プレビュー用のツールバー)を押せばプレビューを閉じる、
としたいのです。

しかし、レポートのテキストボックスへは、コードで値の代入はできませんでした。
レポートに出す値は、テーブルになっている必要があるようですね?
(これができればそれで解決なんですが、どうなんでしょう)

そこで、フォームで作って、フォームをプレビュー表示にしたのですが、
これだと、印刷プレビュー用ツールバーの「閉じる」釦クリックでは、
プレビューは閉じるけれどもウィンドウはなくならず
フォーム(フォームビュー)を開き直してしまう…というか切り替わってしまうんですね。
でも、フォームは出てきて欲しくないのです。
(ユーザーが迷うから、ということもありますが、
集計を書込む都合上テキストボックスが編集可能になっているため)
ウィンドウの右上の×釦なら、ウィンドウごと閉じてフォームは出ないのですけれども
ユーザーが必ずそこをクリックしてくれるとは限りませんので。

で、
・編集はフォームに行い、プレビューはフォームをプレビューで開き、
プレビューが閉じるときにはウィンドウも閉じる
か、
・レポートに編集を行う
か、したいのです。

解決の道はありますでしょうか?

 ───────────────────────────────────────  ■題名 : 追記  ■名前 : あおやま  ■日付 : 02/10/31(木) 10:32  -------------------------------------------------------------------------
   すみません、書き忘れました。
フォームで「名前をつけて保存」をやるときに、
レポートで保存するってことができますよね。
これはVBAでできますか?
これをVBAでできれば、
フォームを編集して、レポートとして保存し、
フォームを閉じ、レポートをプレビュー表示、
とか出来そうだなと思ったのですが…

 ───────────────────────────────────────  ■題名 : Re:≠回答  ■名前 : YU-TANG <yu-tang@my.tramonline.net>  ■日付 : 02/11/1(金) 23:16  -------------------------------------------------------------------------
   > しかし、レポートのテキストボックスへは、コードで値の代入は
> できませんでした。

できませんか?
通常できるはずなので、どのような状況で「できない」と判断したのか
詳しく説明すれば、あっさり解決するかもしれませんよ。

もし Access 2000 をお使いなら、付属のサンプル NorthWind.mdb の
たとえば売上順受注高レポートを見れば、詳細セクションの印刷時
イベントでマクロを使ってページフッターの非連結テキストボックスに
値を代入している実例を確認することができるはずです。

 ───────────────────────────────────────  ■題名 : Re:≠回答  ■名前 : あおやま  ■日付 : 02/11/2(土) 2:12  -------------------------------------------------------------------------
   YU-TANGさん、アドバイスありがとうございます。

>通常できるはずなので、
そうなんですか!できるものだったのですか。
するとやり方が間違っていて動かせないでいたのに、
そうこうする間にできないと勘違いしてしまったんですね。
(VBのように、テキストボックス.Textに代入しようとして、
フォーカスがないとエラーになり、フォーカスを与えようとしたら
サポート外とエラーが出たのでした)
お騒がせしてすみません。
サンプルは生憎持っていないのですが、まずはやり方を探し直してみます。
やはりわからないとなったらまた書きますので、どうぞ改めてお伺いさせて下さい。
勿論、出来てもご報告に来ます。

 ───────────────────────────────────────  ■題名 : 今度は回答  ■名前 : YU-TANG <yu-tang@my.tramonline.net>  ■日付 : 02/11/2(土) 14:07  -------------------------------------------------------------------------
   > (VBのように、テキストボックス.Textに代入しようとして、
> フォーカスがないとエラーになり、フォーカスを与えようとしたら
> サポート外とエラーが出たのでした)

なるほど、そういうことですね。

Access のテキストボックスは VB と違って Text プロパティではなく
Value プロパティに値を代入します。
Value プロパティはテキストボックスの既定のプロパティなので、省略
可能です。

× テキストボックス.Text = "hogehoge" ←フォーカス取得時のみ可
○ テキストボックス.Value = "hogehoge"
○ テキストボックス = "hogehoge"

Textプロパティはフォーカス取得中、一時的に表示文字列を格納しておく
プロパティで、VB のそれとは意味が違います。こいつはコントロールに
フォーカスが無いとエラーになるのですが、レポートではコントロールに
フォーカスを移せないので、それで無理だと思われたのでしょう。

この Text と Value の使い分けは、VB から移ってくると必ずハマる
お約束のような罠なので、私はこれについて訊かれたら「Access へ
ようこそ」^^)と言うことにしています。

 ───────────────────────────────────────  ■題名 : ありがとうございました!  ■名前 : あおやま  ■日付 : 02/11/5(火) 5:40  -------------------------------------------------------------------------
   まずは、お礼をば。
できました!
ありがとうございました。本当に助かりました。

アハハ、お約束だったんですか〜。
まんまとハマってしまいました。
TextとValueに使い分けがあったとは、勉強させていただきました。

 ───────────────────────────────────────  ■題名 : 疑問  ■名前 : あおやま  ■日付 : 02/11/5(火) 5:47  -------------------------------------------------------------------------
   お礼の方に書き落としてしまいましたが、
YU-TANGさん、再度のお返事ありがとうございました。

この件で疑問ができてしまいまして、
もしよろしければ、お答え願えませんでしょうか。

始め、Report_Openイベントで数値を代入しようとしたら、
「実行時エラー'2448':このオブジェクトに値を代入することはできません。」
と言われてしまいました。
(実はここでかなり焦りました)
そこで、あれこれ試したあと、一旦絶望しかけたところへ、
ふとイベントの種類がいけないのかなあ、と思い至り、
何となくそれらしい(笑)Report_Activateイベントに変えたら
上手く行きました。

OpenとActivateとわざわざ別々に設けてあるわけですから
違いがあってもっともなわけですが、どう違うのやら。
これもReportのお約束なんでしょうか。
そういう違いはどこらへんを調べるとわかるのですか?
お答えいただけますと幸いです。

 ───────────────────────────────────────  ■題名 : Re:疑問  ■名前 : YU-TANG <yu-tang@my.tramonline.net>  ■日付 : 02/11/5(火) 22:43  -------------------------------------------------------------------------
   > OpenとActivateとわざわざ別々に設けてあるわけですから
> 違いがあってもっともなわけですが、どう違うのやら。
> これもReportのお約束なんでしょうか。
> そういう違いはどこらへんを調べるとわかるのですか?

各イベントの意味と違いについては、私がここで中途半端な説明を
するよりヘルプを直接ご覧になった方がよいでしょう。
Access 2000 の場合は、ヘルプの目次タブから
[プログラミング情報]-[イベント]
あるいは
[プログラミング情報]-[Microsoft Access Visual Basic リファレンス]-[イベント]
から参照できるはずです。

レポートのイベントは、よく言えばデリケート、悪く言うとかなり
偏屈で、設定するイベントを間違えると予期しない結果になること
が多く、しばしばイベントを変えては試し、変えては試しのトライアル
アンドエラーを迫られます。

# 私だけかもしれませんが。(^ ^;)

余談ですが、特にイベントを通るたびに変数をインクリメント/デクリ
メントするような処理を行なうときは、セクションの Format 時イベント
とPrint 時イベントの使い分けに御注意ください。

 ───────────────────────────────────────  ■題名 : ありがとうございます  ■名前 : あおやま  ■日付 : 02/11/7(木) 1:14  -------------------------------------------------------------------------
   YU-TANGさん、ご返答ありがとうございます。

ヘルプの教えていただいた部分とその周辺、勉強いたします。
ポイントを示して下さってありがとうございました。

YU-TANGさんのご経験では
レポートのイベントは試行錯誤になりがちとのこと、
それからインクリメント・デクリメント時の件、
肝に銘じておきます。

細かいところまでのお心遣い、本当に感謝します。
がんばります!

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 91