- PR -

DataGridViewの内容を印刷したい

1
投稿者投稿内容
未記入
会議室デビュー日: 2006/10/21
投稿数: 13
投稿日時: 2007-03-22 17:45
VB2005でWindowsアプリケーションで開発しています。
現在DataSetを使い、SQLServerに非接続のデータアクセスをしています。
(テキストファイルを読み込んで接続しています。
StreamReaderを用いていますのでConnectionオブジェクトは使っておりません。)

DataSetの内容をDataGridViewに表示しており、その内容を「印刷」したいのですが。

手持ちにあるTipsにはPrintDocumentクラスを利用して

'テーブルの内容を出力
Dim dr As OrderDataSet.GoodsRow
For Each dr In OrderDataSet.Goods.Rows
'1レコードを出力
e.Graphics.DrawString( _
dr.GoodsID.ToString.PadRight(10) & _
dr.GoodsName.ToString.PadRight(20, " ") & _
dr.Price.ToString.PadLeft(5), _
f, Brushes.Black, _
x, y + (cnt * pitch))

'印刷位置を更新
cnt = cnt + 1
Next

というコードになるのですが、これだとデータソースを追加しなければなりません。
データソースを追加せず、DataGridViewの内容を「印刷」したいのですがどうしたらよいのでしょうか?


[ メッセージ編集済み 編集者: 未記入 編集日時 2007-03-22 17:49 ]
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-03-22 17:59
OrderDataSet.Goods.Rows に対してループして
dr.〜のようにアクセスしている部分を、ちょっと変えればいいだけではないでしょうか?
自前のDataSet内のテーブルの行に対してループするとか、
DataGridViewのRowsに対してループするとかで。
未記入
会議室デビュー日: 2006/10/21
投稿数: 13
投稿日時: 2007-03-22 18:41
引用:

KIさんの書き込み (2007-03-22 17:59) より:
自前のDataSet内のテーブルの行に対してループするとか、
DataGridViewのRowsに対してループするとかで。



すみません、勉強不足のためループするという意味がよくわからないのですが・・・
要は

Dim dr As OrderDataSet.GoodsRow
For Each dr In OrderDataSet.Goods.Rows

の部分を

Dim dr As DataSet内のテーブルの行に対してループ?
For Each dr In DataSet内のテーブルの行に対してループ?

などに変えるということでしょうか?
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-03-22 19:15
For Each なり For なりを使って全行に対して処理を行うことを
「ループ」と言いました。

DataGridViewのみたまんまを印刷するだけなら、DataGridViewの行に対して
ループさせるほうが自然かも知れませんね。

コード:

For Each row As DataGridViewRow In [データグリッドビューの名前].Rows

    '1レコードを出力 
    e.Graphics.DrawString( _ 
    row("GoodsID").ToString.PadRight(10) & _ 
    row("GoodsName").ToString.PadRight(20, " ") & _ 
    row("Price").ToString.PadLeft(5), _
    f, Brushes.Black, _ 
    x, y + (cnt * pitch)) 

    '印刷位置を更新 
    cnt = cnt + 1

Next



DataSet 内のテーブルに対してループさせる場合も、
ほとんど似たようなコードになると思いますので、
上記を参考に、ご自分で考えてみてください。
1

スキルアップ/キャリアアップ(JOB@IT)