dポイントプレゼントキャンペーン実施中!

フォーム上にレポートのプレビューボタンをつけました。
複数のスタッフがデータ入力をしていて、自分が現在入力したデータをプリン
トアウトしたいと思っています。
テーブルに『プレビュー』というチェック項目を作り、そこにチェックがはい
っているデータをレポートに表示させるようにしていて、プレビューボタンを
クリックした時のイベントを以下のように設定していますが、『コマンドまた
はアクション'レコードの保存'は無効です。』というエラー表示が出てしまい
ます。
どのように書き換えればよいかご存知の方がいたらお教えください。
また、他に『現在自分がフォームを使って入力しているデータのみをプリント
する』良い方法をご存知の方がいらっしゃったらお教えください。


Private Sub レポートのプレビュー_Click()
On Error GoTo Err_レポートのプレビュー_Click

Me!プレビュー = True
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

Dim stDocName As String

stDocName = ChrW(12463) & ChrW(12524) & ChrW(12540) & ChrW(12512) & ChrW(20966) & ChrW(29702) & ChrW(31080) & ChrW(40) & ChrW(12503) & ChrW(12524) & ChrW(12499) & ChrW(12517) & ChrW(12540) & ChrW(41)
DoCmd.OpenReport stDocName, acPreview

Exit_レポートのプレビュー_Click:

Me!プレビュー = False
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

Exit Sub

Err_レポートのプレビュー_Click:
MsgBox Err.Description
Resume Exit_レポートのプレビュー_Click

End Sub

A 回答 (3件)

>フォーム上で自分が今開いているデータだけプレビューさせる方法はないものでしょうか



簡単にやるにはフォーム上にある主キーなど一意のキーでOpenReportのWhereConditionに抽出条件を設定すれば出来ます。
例えばIDというキーがありそのレコードだけレポートに表示する場合は

IDの値がテキストの場合は
DoCmd.OpenReport stDocName, acPreview, , ,"ID ='" & Me!ID & "'"
IDの値が数値の場合は
DoCmd.OpenReport stDocName, acPreview, , ,"ID =" & Me!ID

とすればフォームに表示されているレコードだけプレビューすることが出来ます。(IDの部分は該当するフィールド名とコントロール名に変更してください。)
または
もっと簡単ですがボタンのイベントはそのままでレポートに抽出条件を入れてしまう。
クレーム処理票(プレビュー)がフォーム上のレコードしか表示しないのであればプロパティのレコードソースでSQLステートメントを開きキーになるフィールドの抽出条件に
=Forms!フォーム名!コントロール名
とすれば出来ます。
    • good
    • 0
この回答へのお礼

ありがとうございます!お勧め(?)の『もっと簡単な方法』で無事解決しました^^!
今まで悩んでいたのがうそのように完璧に解決です!!

お礼日時:2006/05/16 17:01

下記の記述だけで行けませんか。



Private Sub レポートのプレビュー_Click()
On Error GoTo Err_レポートのプレビュー_Click

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Dim stDocName As String

stDocName = "クレーム処理票(プレビュー)"
DoCmd.OpenReport stDocName, acPreview

Exit_レポートのプレビュー_Click:
Exit Sub

Err_レポートのプレビュー_Click:
MsgBox Err.Description
Resume Exit_レポートのプレビュー_Click

End Sub

ちなみにstDocNameにセットされるのが クレーム処理票(プレビュー) となっていますが()付きでレポート名にしているのですか?

この回答への補足

ご回答ありがとうございます。
でも、うまくいきませんでした・・・。
プレビューボタンを押したら、データ全てが表示されて数百ページのプレビューになってしまいました・・・。
フォーム上で自分が今開いているデータだけプレビューさせる方法はないものでしょうか・・・?


それで今は以下のような方法でトライしています。

テーブル『クレーム処理票』に『プレビュー』項目(Yes/No型)を作り、フォーム『クレーム処理票』にも表示させる。
レポート『クレーム処理票(プレビュー)』の表示(抽出)条件を、『プレビュー』項目が『True』のものだけ表示させるように設定。

スタッフはプレビューしたい時、『プレビュー』項目にチェックを入れて、保存ボタンを押した後プレビューさせる。


これだと面倒なので、プレビューボタンを押した時に自動で上記作業をしてくれるコードを組みたいと思っています・・・。

補足日時:2006/05/15 13:11
    • good
    • 0

複数のスタッフが使用しているということは、アクセスのデータがサーバー上にあるということですか。


アクセスで共有する場合、テーブルのみサーバー上に置き、クライアントにはクエリー・レポートなどを置きます。

参考URL:http://www.mahoutsukaino.com/ac/ac2000/ac2000/ga …

この回答への補足

ご丁寧にURL付で教えてくださってありがとうございますm(_ _)m

見てみたのですが、あまり理解できませんでした^^;
下のほうの『メニューバー[ファイル]→[外部データの取り込み]→[テーブルのリンク]』のところでしょうか?
この作業は無事できました。ありがとうございます!

補足日時:2006/05/15 13:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!