tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル印刷について教えてください。
記事No15172
投稿日: 2011/05/25(Wed) 15:41
投稿者オグ
現在、普通に印刷をVB6からしようと思っています。
その場合、DataReportというものがあるようですが、ネット上の記載を検索するとDBに必ず関連付け書かれています。私は、DBは扱わないで、普通にテキストファイルから読み込んだデータを編集して、決めた位置に挿入セットしたいのですが、どのようにしたらいいのですか?

[ツリー表示へ]
タイトルRe: 印刷について教えてください。
記事No15173
投稿日: 2011/05/25(Wed) 20:49
投稿者ミッキー
DataReport は、印刷するための1つの手法です。
「印刷するためには、DataReport が必要」というわけではありません。

> テキストファイルから読み込んだデータを編集して

テキストファイルから読み込むことはできているのですね?

> 決めた位置に挿入セットしたいのですが

何に対しての位置ですか?

印刷する紙?
エクセルのセル?
印刷フォーマットの枠内??

あと、開発環境は何ですか?
OS,VBのバージョン(SP含め)を書いてください。


様々な印刷手法があります。

・サードパーティーの印刷支援ソフト(VSPrinterなど)を使う
・ワードに挿入して印刷する
・エクセルに落とし込んで、印刷する
・テキストファイルの中身をそのまま印刷する
・画面をキャプチャーして、その画像を印刷する

などなど。

[ツリー表示へ]
タイトルRe^2: 印刷について教えてください。
記事No15175
投稿日: 2011/05/26(Thu) 11:13
投稿者オグ
ご返事ありがとうございます。
説明が行き届かなくてすいません。プログラムをあまり作ったことがないので、説明が
悪いのはお許しください。

> OS,VBのバージョン(SP含め)を書いてください。
 OS: Xp

vb.netではCrystallReportがあり、その場合、CrystallReport上で印刷フォーマットを作り、datasetを作成して、印刷フォーマット上にフィールドを割り付けますよね!

この動作をVB6で行う場合、VB6にもCrystalReportがあったのですが、ネットで搭載があまり無くてよくわかりませんでしたので、ツールボックスに標準であったDataReportを試してみた次第です。

結局何がしたいかと申しますと、紙に印刷するのですが、列が3列あり、枠線を付けて行数は無制限、フッダにページ番号を付けて印刷したいだけなのです。
このような場合にどのようにしたらいいのかがわかりません。
また、ワードやエクセルが入っていないことを前提にする必要もあります。

[ツリー表示へ]
タイトルRe^3: 印刷について教えてください。
記事No15177
投稿日: 2011/05/26(Thu) 13:26
投稿者魔界の仮面弁士
> vb.netではCrystallReportがあり、
VB2010 では標準バンドルを廃止していたと思います。
使えるのは VB4〜VB2008 ですね。


> VB6にもCrystalReportがあったのですが、
CrystallReport ではなく
Crystal Reports ですね(複数形)。

VB6 の場合、Professional 以上のエディションが必要になります(Learning Edition は不可)。
ただし、標準ではインストールされませんので、CD-ROM から別途セットアップする必要があります。
英語版と日本語版の両方が入っていますので、インストール時にはよく確認してください。
(英語版と日本語版を両方同時にインストールする事は出来ません)

また、ランタイムは無償で再頒布できますが、それにはユーザー登録が
必要とされていました。ただし、OEM の提供元が何度か買収されているため、
現在は状況が異なっている可能性もあります。使うのであればご確認を。
(現在の Crystal Reports のサポート先は SAP 社かな…)


> ツールボックスに標準であったDataReportを試してみた次第です。
DataReport は基本的に、DataEnvironment デザイナを前提とした設計になっており、
ヘルプのチュートリアルもそのようなサンプルになっています。

実際には DataEnvironment 無しでも使う事はできます。その場合には
実行時に、Recordset を DataSource に割り当てるようにすれば OK です。
非接続型の Recordset を使えば、データベースが無い状態でも使えます。

ただし、帳票側でのグループ化が不要な場合は、DataEnvironment を
使った方が良いでしょう。DataEnvironment なしでも、DataReport の
グループ化機能は使えるのですが、その場合には SHAPE コマンドを
習得する必要があるため、難易度がやや高くなります。

ですからまずは、DataEnvironment + Access mdb などの組み合わせで、
基本的な使い方を習得してみてください。データベース連携無しで使う
方法を学ぶのは、その後にしておいた方が良いと思いますよ。


> 列が3列あり、枠線を付けて行数は無制限、
> フッダにページ番号を付けて印刷したいだけなのです。
DataReport も CrystalReports も、罫線処理がさほど得意ではありません。
あまり複雑な帳票で無ければ問題ないとは思いますが、これらのツールで
目的を果たせるかどうか、事前によく試しておいてください。


> このような場合にどのようにしたらいいのかがわかりません。
DataReport の使い方の情報として:

http://homepage2.nifty.com/inform/vbdb/reportsample.htm
http://www.hanatyan.sakura.ne.jp/logbbs1/wforum.cgi?mode=allread&no=9755
http://www.hanatyan.sakura.ne.jp/logbbs/wforum.cgi?mode=allread&no=5850
http://hanatyan.sakura.ne.jp/logbbs/wforum.cgi?mode=allread&no=5850&page=0
http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200306/03060070.txt
http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200805/08050004.txt
http://www.gizcollabo.jp/vbtomo/boards/vbchoshoqa.php?do=spread&num=1997

[ツリー表示へ]
タイトル魔界の仮面弁士 さんありがとう
記事No15180
投稿日: 2011/05/26(Thu) 14:24
投稿者オグ
魔界の仮面弁士さんありがとうございました。
早速、Recordsetというものを試してみます。

[ツリー表示へ]
タイトルVSPrinterに関して
記事No15178
投稿日: 2011/05/26(Thu) 13:28
投稿者オグ
ご指示どおり、VSprinterの体験版をダウンロードして使用してみました。
わかりやすいですねえ!

ちなみに、フッダに 「現在ページ/総ページ」を印刷したいのですが、
どのようにするのかわかりません。
試行錯誤で、vp.Footer = "%d / " & vp.PageCountかと思い、印刷データを作成する場所で以下のような順番で書いてはみましたが、総ページが1のまま。
よって、.EndTableの下に移動させたら、ページ番号が表示されません。

どうしたらできるか、知っていたら教えてください。お願いします。
−−−−−−−
.StartTable
.AddTable
vp.Footer = "%d / " & vp.PageCount
.EndTable
−−−−−−−

[ツリー表示へ]
タイトルRe: 印刷について教えてください。
記事No15174
投稿日: 2011/05/26(Thu) 09:31
投稿者魔界の仮面弁士
> 普通に印刷をVB6からしようと思っています。
テキストファイルの印刷なら、RichTextBox の SelPrint メソッドを使う手もあります。

DataReport の代わりに、VB付属の Crystal Reports for VB6 を使って印刷する方法や、
Printer オブジェクトを使って、自分で座標指定しながら出力する方法もあります。
ミッキーさんが書かれているように、Office 経由で出力する手もあるでしょう。


> その場合、DataReportというものがあるようですが、
> ネット上の記載を検索するとDBに必ず関連付け書かれています。
一応、DataReport 上のラベルに直接文字列を渡すような使い方も可能なのですが、
行明細として出力したり、あるいはそれをグループ化したりといった作業には
ADODB.Recordset ないしは DataEnvironment 等が必要になります。

ですが、だからといってデータベースが必須というわけではなく、
オンメモリのレコードセットを用いることもできます。下記を参照してみてください。

http://www.hanatyan.sakura.ne.jp/logbbs1/wforum.cgi?mode=allread&no=9755
http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200306/03060070.txt


なお、DataReport を使うのであれば、最新の Service Pack を適用しておきましょう。
http://www.hanatyan.sakura.ne.jp/logbbs/wforum.cgi?mode=allread&no=5850

[ツリー表示へ]
タイトルRe^2: 印刷について教えてください。
記事No15176
投稿日: 2011/05/26(Thu) 11:15
投稿者オグ
ご返事ありがとうございます。
疑問点はミッキーさんの方に返信させていただきました。
お手数でなければ、良いアドバイスをお願いします。

[ツリー表示へ]