- PR -

Module部における DataSet 扱いについて

投稿者投稿内容
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-04-24 21:57
Jittaさん、テッテさん、お返事ありがとうございました。
ご回答や親切なご指導をいただきながら、どう返事を差し上げればよいか、戸惑い
投稿が遅れてしまったことをお詫びすると共に、これからは基礎知識を勉強してから
質問することにいたします。お二人にはつまらぬ質問で大変お手数をおかけしました
ことをお詫びいたします。

ご指摘やご質問いただいたことをお答えしなければいけないのでしょうが、答えれば
さらにご立腹されることと思われますのでこのままスレッドを終わりにさせてください。
ただ両先輩からの指摘されました私が何を「さびしい」と感じたのかだけを説明し、この
質問に対するお詫びとさせてください。

私はもともと人と付き合う場合や交渉する場合など、例えば相手からの攻撃や馬鹿に
された場合、さらには人を見下げたような態度を取られる時は、そのことに対して直接
反論したり逆襲するのではなく、もっと自分の内面で原因や理由を考えた上で私の
その事に対する率直な考えを伝えることに心がけています。

私が何を「さびしい」と感じたのかは2ヶ月ほど前にこのすばらしいサイトを見つけ、入門
者に対して先輩諸氏の親切な指導を拝見し、実際私も今まで大変助けられました。
またずっと以前( 2003-12-08 21:47 )たーぞうさんの下記スレッドを読ませていただき
感動させられ、私も質問する場合はそれなりに気をつけていたつもりでした。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=7978&forum=3

ご指導いただいた文面から読み取りますと、私もこのサイトで紹介している初心者と同じ
程度の知識しか持ち合わせていないことを「さびしい」と感じたしだいです。
少し長くなってしまいましたがJittaさん、テッテさん、ありがとうございました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-04-24 22:31
引用:

テッテさんの書き込み (2008-04-24 12:33) より:
標準モジュールだから(あるいはドラッグ&ドロップができないから)
TableAdapter を使ったデータの取得ができないというのはナンセンスです。


 相手が「標準モジュール」だけに、ここだけ、ちょっと疑問。

 なぜ標準モジュールを使うかというと、クラスに Shared 宣言したときと同様、インスタンスを作らなくてもメソッドが使えるからです。標準モジュールの中では、たいていの場合、クラスを作りません(作れるかどうか知らないので、こういう書き方)。つまり、インスタンスがないメソッドの中では Me が使えません。実は、これが「できないのですか?」という質問の理由じゃないか、標準モジュールを使うことで余計にわからなくしているんじゃないかと思ったり。。。

 もう一つ、One.netさんのコード、private なんですよね。単に外から見えなくなっちゃっただけなんじゃないの?と思ったりもする。
 VB2005 だったら My からたどれば規定のフォーム インスタンスにアクセスできるのだから、規定のフォーム インスタンスしか作ってなければ、Public なメソッドは、ちょっと長くなるだけで、標準モジュールに宣言してあるのと変わらないアクセスができるし。。。

 いや、もう、それもこれも、全部併せて「体系的に勉強し直してよ」なんだけど(^-^;


One.netさんへ:
ステップアップしてくだされば、仕事仲間として、とてもうれしく思います。

私は、「明日、この人と仕事をすることになるかもしれない」と思いながら、返信を書いています。一緒に仕事をする人が、現状で満足するような人だと、とてもイヤです。

追加:
私の問いかけに対して、私は「両方」という返答を期待していました。「将来的なことも大事だけれど、目の前の仕事も大事だ」と。それぐらい貪欲でいいと思います。
ちなみに、この投稿には、ほぼ答えを含んだつもりです。

[ メッセージ編集済み 編集者: Jitta 編集日時 2008-04-24 22:34 ]
テッテ
ベテラン
会議室デビュー日: 2008/03/16
投稿数: 91
投稿日時: 2008-04-24 23:37
引用:

Jittaさんの書き込み (2008-04-24 22:31) より:
引用:

テッテさんの書き込み (2008-04-24 12:33) より:
標準モジュールだから(あるいはドラッグ&ドロップができないから)
TableAdapter を使ったデータの取得ができないというのはナンセンスです。


 相手が「標準モジュール」だけに、ここだけ、ちょっと疑問。

 なぜ標準モジュールを使うかというと、クラスに Shared 宣言したときと同様、インスタンスを作らなくてもメソッドが使えるからです。標準モジュールの中では、たいていの場合、クラスを作りません(作れるかどうか知らないので、こういう書き方)。つまり、インスタンスがないメソッドの中では Me が使えません。実は、これが「できないのですか?」という質問の理由じゃないか、標準モジュールを使うことで余計にわからなくしているんじゃないかと思ったり。。。


なるほど。よく読んでみるとそれも考えられますね。
標準モジュールのメソッド内だろうがクラスのメソッド内だろうが
ローカル変数として宣言すれば使えるわけですから。
私が伝えたかったのはそういうことです。

引用:

 もう一つ、One.netさんのコード、private なんですよね。単に外から見えなくなっちゃっただけなんじゃないの?と思ったりもする。


あ、確かに…そこは全然気づいていませんでした(^_^;)

結局、One.net さんがどこでつまずいていたのかはわからなかったので
これ以上考えても仕方がないでしょうけど。


Jitta さん、フォローありがとうございました。
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-04-25 21:22
Jittaさん、テッテさん、ありがとうございました。
大変参考になりました
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-05-06 14:32
スレッド主のOne.netです。Jittaさん、テッテさん、にご指導いただき色々試みていました。
最初は「印刷のPrintString部を何回も使用(記述)することになり、「Module1.vb」に記述
して使おうとしています。」と考え ModuleでのDataSet生成を試みていましたが、全く逆に
Moduleに記述してコードを共有するより、アプリケーションの全ての印刷関連処理を1つ
の「印刷.vb」フォームにまとめて記載し、共通化を試みたほうがはるかに有効であること
に気づき、その内容と有効性について以下に報告いたします。

・アプリケーションの印刷は各フォームに分かれて、それぞれの印刷処理部が記述して
いますが、これを全て「印刷.vb」フォームにまとめ、次のように処理しました。

引用:

【印刷.vbのLoad 時】
Me.仕入TableAdapter.Fill(MeDataSet1.仕入)
Me.販売TableAdapter.Fill(MeDataSet1.販売)
'--PrintDocumentオブジェクトの作成
Dim pd As New System.Drawing.Printing.PrintDocument
Dim PreviewPlug As Boolean = False '--プレビューフラグ
Dim psdPlug As String = "H" '--縦横印刷区分
'-----------------------------テスト印刷設定---開始----
'PreviewPlug = True '----------プレビューに出力
'P_Name = "N2" : fixed() '--印刷対象を設定
'-----------------------------テスト印刷設定---終了----
If P_Name = "N0" Then
Label1.Text = "ただいま販売明細を印刷中です。"
AddHandler pd.PrintPage, AddressOf N0pd_PrintPage
ElseIf P_Name = "N1" Then
Label1.Text = "ただいま仕入明細一覧の印刷中です。"
AddHandler pd.PrintPage, AddressOf N1pd_PrintPage
ElseIf P_Name = "N2" Then
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
ElseIf P_Name = "N3" Then
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
ElseIf P_Name = "N4" Then
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
End If

Dim psd As New PageSetupDialog '-----PageSetupDialogクラスの作成
psd.Document = pd '-----------------PrintDocumentを指定
psd.PageSettings.Margins.Left = 0 : psd.PageSettings.Margins.Right = 0
psd.PageSettings.Margins.Top = 0 : psd.PageSettings.Margins.Bottom = 0
If psdPlug = "V" Then '---横向き印刷
psd.PageSettings.Landscape = True
Else '------------------------縦向き一覧表示印刷
psd.PageSettings.Landscape = False
End If
Dim PreviewPlug As Boolean = True '--True-False
If PreviewPlug = True Then
Dim prv As New PrintPreviewDialog '--PrintPreviewDialogのインスタンス
prv.Document = pd '----------------PreviewするPrintDocumentを指定する
prv.Width = 800 '--------------印刷プレビューダイアログの表示サイズ600
prv.Height = 1200 '--------------印刷プレビューダイアログの表示サイズ
prv.PrintPreviewControl.Zoom = 1 '---表示倍率を1倍にする
prv.ShowDialog() '-------------------プレビューダイアログの表示
Else
pd.Print() '---------------印刷を開始する
End If
Me.Close()



このことによってFillの自動生成は勿論、次のようなメリットが生まれました。
1.次のようなフォント等の Public変数を設定して共通使用することが可能
引用:

Dim m10 As Font = New Font("MS 明朝", 10)
Dim m11 As Font = New Font("MS 明朝", 11)
Dim m12 As Font = New Font("MS 明朝", 12)
Dim g09 As Font = New Font("MS ゴシック", 9)
Dim g10 As Font = New Font("MS ゴシック", 10)
Dim g11 As Font = New Font("MS ゴシック", 11)
Dim pi As Integer = f9.Height + 3 '---------印刷ピッチ
Dim cnt As Integer = 0 '-----------------行カウンター
Dim SS As String = " " '-----------------印刷文字列


2.テスト印刷設定で印刷ページ(P_Name = "N3" 等)を指定するだけで
簡単にテスト印刷が可能で、fixed()にテスト印刷用の印刷内容を設定で
きます。
3.印刷デザイン時に に必要なPrintPreview機能をPreviewPlug = True
にすることによって全ての印刷に共通して対応できます。
4.pd_PrintPage部分の共通化を容易に検討できます。
5.「印刷.vb」の表示によって次のような印刷中の案内が可能となる
「ただいま販売明細を印刷中です。しばらくお待ち下さい。」

私は以上のよう17箇所もの印刷処理部を「印刷.vb」フォームにまとめて
記述し、各種の共通化と便利な機能を追加して正常に動作しています。
少し手前味噌な話になりましたが、見る人の参考になればと考えて
報告いたしました。

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