Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Home Premium : Access 2010)
レポート印刷の切り替えについて
投稿日時: 17/10/26 17:50:43
投稿者: MJ

こんにちは、いつもお世話になっております。
ちょっと長くて申し訳ありませんが
お知恵をいただけましたら幸いです。
 
2パターンのレポートの組み合わせを
条件によって切り替えて
印刷実行できるようにしたいです。
 
----------------------------------
★現在の設定
 
注文システムの中で、最後に注文書と送付状を
印刷するため、下記のように設定しています。
 
 
Private Sub cmd印刷2_Click()
    On Error GoTo Err_cmd印刷2_Click
 
Dim FK As Form
 
Set FK = Forms!Frm_kensaku
 
    '注文書レポートを開きます
     
    DoCmd.OpenReport "R_送付状", acViewPreview, , "注文書No='" & FK!txt注文書No & "'"
    DoCmd.OpenReport "R_注文書", acViewPreview, , "注文書No='" & FK!txt注文書No & "'"
     
    DoCmd.OpenForm "Frm_印刷実行", acNormal, , , acFormEdit
   
   
Exit_cmd印刷2_Click:
    Exit Sub
             
Err_cmd印刷2_Click:
    MsgBox Err.Description
    Resume Exit_cmd印刷2_Click
 
 
----------(説明)---------
【注文書】はメインレポートにサブレポートを組込んで
全部で3枚印刷するようにしています。※(注文書1〜3)
 
【送付状】これだけ横向き印刷のため、別レポートにして
【印刷実行】フォームのボタンをクリックすると、注文書と
一緒に印刷できるようにしています。
 
(※注文書はひとつのプレビュー画面で見れること、
ワンクリックで全ての帳票が印刷できることが必須に
なっています)
-----------------------------------------------------------------
★ご相談したいこと
 
今回、【注文書】に追加で2パターンの帳票を追加したいと思っています。
 
2パターンというのは、<表題>と右下位置の<担当者確認押印欄>が
違うだけで、それ以外の内容は同じです。
 
条件によって、注文書1〜3と 注文書Aまたは注文書Bが出力したいのです。
 
 表題例 :【注文書A】または【注文書B】
 押印欄例:【注文書A】は押印欄2個 【注文書B】パターンは押印欄3個
 
-----------------------------------------------------------------
1つレポートを作成し、元データになる項目【条件1】で
テキストボックスで設定した注文書Aと注文書Bの
表示非表示の切り替えを試み、こちらはうまくいきましたが
押印欄の切り替え方法がわからず断念しました。
 
押印欄は、エクセルで作成し、非連結OLE画像で貼り付けた上に
テキストボックスで項目名を記載して配置していました。
テキストボックスは切り替えることができましたが
画像ができませんでした。
 
それで別の方法を考えている途中なのですが
例えば【条件1】によって【注文書A】のパターン(帳票4枚)か
【注文書B】のパターン(帳票4枚)と、プラス送付状が
印刷できるようにとかできるのか。
 
もっと違う発想があるのか、調べているところで
はまっています。
 
もし良い方法があればご教示いただきたく
宜しくお願いいたします。

回答
投稿日時: 17/10/27 00:17:21
投稿者: hatena
投稿者のウェブサイトに移動

MJ さんの引用:
押印欄は、エクセルで作成し、非連結OLE画像で貼り付けた上に
テキストボックスで項目名を記載して配置していました。
テキストボックスは切り替えることができましたが
画像ができませんでした。

 
レポートの開くときイベントで非連結OLEコントロールのVisibleプロパティを設定すれば、表示/
非表示を切り替えることでできると思いますが。
 
Private Sub Report_Open(Cancel As Integer)
    If 【条件1】Then
        Me.非連結OLE0.Visible = True
    Else
        Me.非連結OLE0.Visible = False
    End If
End Sub

投稿日時: 17/10/27 09:25:19
投稿者: MJ

hatenaさん
 
返信をありがとうございます。
 
ご教示いただいたような形で私も最初は考えていたのですが
 
注文書Aの場合は、OLE画像X + 項目名1 + 項目名2 + 項目名3
注文書Bの場合は、OLE画像Y + 項目名4 + 項目名5 + 項目名6 で
 
 ※項目名はテキストボックス
 
どちらかの組み合わせが、同じ位置に表示されるということになり
どちらが表示されるかは条件による・・・ということになります
 
画像と項目名の組み合わせがちぐはぐにならないように
でも設定的には同じ位置に設定するので
(位置がずれないように)切り替える方法がわからず
グルーピングなどもできなかったので困っていました。
 
私はうまくできなかったのですが、やっぱり
全ての項目の表示、非表示を切り替えるという
方法でよいということでしょうか。
 
 
 

回答
投稿日時: 17/10/27 14:04:15
投稿者: hatena
投稿者のウェブサイトに移動

MJ さんの引用:
私はうまくできなかったのですが、やっぱり
全ての項目の表示、非表示を切り替えるという
方法でよいということでしょうか。

そういうとこになると思いますが、それではうまくできなかったのですか。
 
うまくいかなかったコードを提示してもらえますか。
 
あるいは、複数のコントロールが重なって配置されることになるので、そのレイアウトの設定が面倒ということでしょうか。
 
もし、そうなら、メインレポートの方は、注文書A用と注文書B用の2つ作成しておいて、条件によって開くレポートを変更するようにすればいいでしょう。サブレポートの方は、両方で共有できます。

投稿日時: 17/10/30 11:33:43
投稿者: MJ

hatena さん
 
すみません、返信いただいていることに気づかず
遅くなってしまいました。
 
色々やりすぎたのか、今まで動いていたところも
動かなくなってしまい、ちょっとはまってしまっていました。。
 
 
まず、最初に書いたレポートを開くところに追記してみたのですが
無反応で(一部はしょっています)
 
--------------------------------------------
Private Sub cmd印刷2_Click()
     On Error GoTo Err_cmd印刷2_Click
   
 Dim FK As Form
   
 Set FK = Forms!Frm_kensaku
   
     '注文書レポートを開きます
      
     DoCmd.OpenReport "R_送付状", acViewPreview, , "注文書No='" & FK!txt注文書No & "'"
     DoCmd.OpenReport "R_注文書", acViewPreview, , "注文書No='" & FK!txt注文書No & "'"
      
      If Me.契約形態 = "請負" Then
  
     Me.[OLE画像X].Visible = True
     Me.[項目名1].Visible = True
     Me.[項目名2].Visible = True
     Me.[項目名3].Visible = True
  
     Me.[OLE画像Y].Visible = False
     Me.[項目名4].Visible = False
     Me.[項目名5].Visible = False
     Me.[項目名6].Visible = False
  
 Else
  
 ※上記の逆
 
--------------------------------------------
 
対象のレポートのフォーマットのところに書かないといけないかな?と
思い、記入してみたのですが、
 
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
 
 If Me.契約形態 = 【条件1】 Then
  
※後は上記と同じです
 
 
ここで片面印刷設定のところになぜかエラーがでてしまい
動かなくなってしまいました。
 
Private Sub Report_Open(Cancel As Integer)
 
    Me.Printer.Duplex = 1
     
End Sub
 
理由がわからず、今、イチから作り直しているところです。
 
やっぱり表示がかぶると見えづらく設定しづらいところもありますので
今は、2種類作って条件によってレポートを変更する方法にしようかなと
思い始めています。
 
明日が期限なのでまたバタバタ質問させていただくかもしれませんが
その時は宜しくお願いいたします。
 
 
 
 

投稿日時: 17/10/30 13:06:25
投稿者: MJ

 
書いた後に気づきました。レポートの開くときイベントですよね。
書くところを間違っていました。
 
別の方法で途中までやりかけていたので、ちょっと考えて
再トライしてみます。

投稿日時: 17/10/31 15:28:26
投稿者: MJ

hatenaさん
 
こんにちは。
 
結局開くときイベントでは無反応で
できなかったのですが(泣)
 
さきほどレポートを条件によって変更する方法で
完成しました。
今日の締め切りに間に合ってほっとしています。
 
ありがとうございました。
また今後とも宜しくお願いいたします。