C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: Access2007のレポート印刷(VB.NET2003)


(過去ログ 73 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■42954 / inTopicNo.1)  Access2007のレポート印刷(VB.NET2003)
  
□投稿者/ トッチー (9回)-(2009/10/24(Sat) 22:44:47)

分類:[.NET 全般] 

OSはXPで
VB.NET2003 Access2007です。
Access12.0 object library は参照設定済みです。

以下のソースで
レポート「帳票作成」の印刷ができます。

ただ、データ量が多くなると
印刷されるページ数が多くなります。

そこで、2ページ以上の場合は
最後と最後から2ページ目のみ印刷すればいい仕様にしたいです。

ページ数を取得すればいいような気がしますが、
半日かけても見つかりません。



Private Sub cmdReport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdReport.Click
Dim ac As Object

Try
ac = CreateObject("Access.Application")

' データベースを開く
ac.OpenCurrentDatabase(mdbpath)

' アプリケーションを表示しない
ac.Visible = False

'レポートを印刷する
ac.DoCmd.OpenReport("帳票作成")
  'ac.DoCmd.PrintOut("帳票作成" , PageFrom:=1, PageTo:=2) '1〜2ページ

'あとはページ数の設定だけ

ac.closeCurrentDatabase()
ac.Quit()

Catch ex As Exception
MsgBox("Error")
End Try

End Sub


なんとか.Pages(?) でページ数を取得すればできそうですが。


ご教授お願いします。
引用返信 編集キー/
■42956 / inTopicNo.2)  Re[1]: Access2007のレポート印刷(VB.NET2003)
□投稿者/ たくボン (280回)-(2009/10/24(Sat) 23:54:33)
No42954 (トッチー さん) に返信
> OSはXPで
> VB.NET2003 Access2007です。
> Access12.0 object library は参照設定済みです。
> そこで、2ページ以上の場合は
> 最後と最後から2ページ目のみ印刷すればいい仕様にしたいです。
> ac.DoCmd.OpenReport("帳票作成")
>   'ac.DoCmd.PrintOut("帳票作成" , PageFrom:=1, PageTo:=2) '1〜2ページ

長いことAccess VBAもしてないから半分忘れかけだけどAccessのVBA側で処理をすればいいんじゃないかな?
DoCmdで引数付けて渡せたと思うし。


と、言うより

> 最後と最後から2ページ目のみ印刷すればいい仕様にしたいです。

だから、直近のデータを出力したいみたいだから、そこら辺を何か条件指定できないのかな?例えば日付とかで。
引用返信 編集キー/
■42960 / inTopicNo.3)  Re[1]: Access2007のレポート印刷(VB.NET2003)
□投稿者/ やじゅ (1396回)-(2009/10/25(Sun) 09:58:44)
やじゅ さんの Web サイト
No42954 (トッチー さん) に返信
> そこで、2ページ以上の場合は
> 最後と最後から2ページ目のみ印刷すればいい仕様にしたいです。
>

Page数を取得するには、先ずレポートを作成する必要があります。
そうでないと総ページ数が求められないから。
非表示(acHidden)でプレビューして、総ページ数を取得して
すぐに閉じるなど、実際の印刷するには2段階の手間が発生します。
ページ数が多ければ、2倍時間がかかるよってことです。
http://hatenachips.blog34.fc2.com/blog-entry-103.html

> 最後と最後から2ページ目のみ印刷すればいい仕様にしたいです。
どういう仕様は分からないですけど、条件などで絞るとかで仕様を見直すべきかと
引用返信 編集キー/
■42962 / inTopicNo.4)  Re[2]: Access2007のレポート印刷(VB.NET2003)
□投稿者/ トッチー (10回)-(2009/10/25(Sun) 10:44:52)

> Page数を取得するには、先ずレポートを作成する必要があります。
> そうでないと総ページ数が求められないから。
> 非表示(acHidden)でプレビューして、総ページ数を取得して
> すぐに閉じるなど、実際の印刷するには2段階の手間が発生します。
> ページ数が多ければ、2倍時間がかかるよってことです。
> http://hatenachips.blog34.fc2.com/blog-entry-103.html

上記URLは質問前に見ましたが
Reports(ReportName).Pages
で下線部エラーがでてましたが、
Dim宣言してませんでしたね。
Dim宣言したら、下記のex.messageが拾えました。

オブジェクト変数または With ブロック変数が設定されていません。

>>最後と最後から2ページ目のみ印刷すればいい仕様にしたいです。
> どういう仕様は分からないですけど、条件などで絞るとかで仕様を見直すべきかと

仕様も変えますが、途中で投げると、今後この記事を参考にする人に失礼なので完結したいです。

引用返信 編集キー/
■42963 / inTopicNo.5)  Re[2]: Access2007のレポート印刷(VB.NET2003)
□投稿者/ トッチー (11回)-(2009/10/25(Sun) 10:47:19)

> 長いことAccess VBAもしてないから半分忘れかけだけどAccessのVBA側で処理をすればいいんじゃないかな?
> DoCmdで引数付けて渡せたと思うし。

AccessのVBAは考えてなかったです。
Accessの方は自分で一旦組むとして(わからなかったら聞きます)
VB.NETからVBAを実行するのは Run でしたっけ?

>
> だから、直近のデータを出力したいみたいだから、そこら辺を何か条件指定できないのかな?例えば日付とかで。

主キーで設定している項目でbetween範囲選択する仕様も作っていますが、
この仕様でも一応完結しようと思っています。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -