現在、普通に印刷をVB6からしようと思っています。その場合、DataReportというものがあるようですが、ネット上の記載を検索するとDBに必ず関連付け書かれています。私は、DBは扱わないで、普通にテキストファイルから読み込んだデータを編集して、決めた位置に挿入セットしたいのですが、どのようにしたらいいのですか?
DataReport は、印刷するための1つの手法です。「印刷するためには、DataReport が必要」というわけではありません。> テキストファイルから読み込んだデータを編集してテキストファイルから読み込むことはできているのですね?> 決めた位置に挿入セットしたいのですが何に対しての位置ですか?印刷する紙?エクセルのセル?印刷フォーマットの枠内??あと、開発環境は何ですか?OS,VBのバージョン(SP含め)を書いてください。様々な印刷手法があります。・サードパーティーの印刷支援ソフト(VSPrinterなど)を使う・ワードに挿入して印刷する・エクセルに落とし込んで、印刷する・テキストファイルの中身をそのまま印刷する・画面をキャプチャーして、その画像を印刷するなどなど。
ご返事ありがとうございます。説明が行き届かなくてすいません。プログラムをあまり作ったことがないので、説明が悪いのはお許しください。> OS,VBのバージョン(SP含め)を書いてください。 OS: Xpvb.netではCrystallReportがあり、その場合、CrystallReport上で印刷フォーマットを作り、datasetを作成して、印刷フォーマット上にフィールドを割り付けますよね!この動作をVB6で行う場合、VB6にもCrystalReportがあったのですが、ネットで搭載があまり無くてよくわかりませんでしたので、ツールボックスに標準であったDataReportを試してみた次第です。結局何がしたいかと申しますと、紙に印刷するのですが、列が3列あり、枠線を付けて行数は無制限、フッダにページ番号を付けて印刷したいだけなのです。このような場合にどのようにしたらいいのかがわかりません。また、ワードやエクセルが入っていないことを前提にする必要もあります。
> 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.htmhttp://www.hanatyan.sakura.ne.jp/logbbs1/wforum.cgi?mode=allread&no=9755http://www.hanatyan.sakura.ne.jp/logbbs/wforum.cgi?mode=allread&no=5850http://hanatyan.sakura.ne.jp/logbbs/wforum.cgi?mode=allread&no=5850&page=0http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200306/03060070.txthttp://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200805/08050004.txthttp://www.gizcollabo.jp/vbtomo/boards/vbchoshoqa.php?do=spread&num=1997
魔界の仮面弁士さんありがとうございました。早速、Recordsetというものを試してみます。
ご指示どおり、VSprinterの体験版をダウンロードして使用してみました。わかりやすいですねえ!ちなみに、フッダに 「現在ページ/総ページ」を印刷したいのですが、どのようにするのかわかりません。試行錯誤で、vp.Footer = "%d / " & vp.PageCountかと思い、印刷データを作成する場所で以下のような順番で書いてはみましたが、総ページが1のまま。よって、.EndTableの下に移動させたら、ページ番号が表示されません。どうしたらできるか、知っていたら教えてください。お願いします。−−−−−−−.StartTable.AddTablevp.Footer = "%d / " & vp.PageCount.EndTable−−−−−−−
> 普通に印刷を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=9755http://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
ご返事ありがとうございます。疑問点はミッキーさんの方に返信させていただきました。お手数でなければ、良いアドバイスをお願いします。