- PR -

データセットについて

投稿者投稿内容
だんく
常連さん
会議室デビュー日: 2006/02/06
投稿数: 47
投稿日時: 2006-02-13 04:06
フォーム1とフォーム2があるとして、始めにフォーム1が開きます。
そして、フォーム1にあるボタンなどでフォーム2が開きます。
フォーム1とフォーム2では、同じデータ(データセット)を扱います。
現状 コードで
Me.TableAdapter.Fill(Me.DATASET.Table)
という風に読み込んでいますが、
まず、フォーム1で読み込んで、
フォーム2を開く時にはまたMe.TableAdapter.Fill(Me.DATASET.Table)
としないとフォーム2では、表示されません。
結局2回読み込んでいることになるのですが、データの件数も多いため時間がかかります。
一回データセットに読み込んだデータをフォームをまたいで使うにはどうすればよいのでしょうか?よろしくお願い致します。
環境は VB2005エクスプレス WINXP です。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-13 08:51
引用:

だんくさんの書き込み (2006-02-13 04:06) より:

結局2回読み込んでいることになるのですが、データの件数も多いため時間がかかります。
一回データセットに読み込んだデータをフォームをまたいで使うにはどうすればよいのでしょうか?


Show メソッド、または ShowDialog メソッドの代わりとなるメソッドを、
Form2 に用意して、引数として受け渡せば解決するでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
だんく
常連さん
会議室デビュー日: 2006/02/06
投稿数: 47
投稿日時: 2006-02-13 16:18
http://dobon.net/vb/dotnet/form/accessanotherformdata.html
ここを参考にしようと思いましたが、
フォーム1のテキストボックスをフォーム2から操作するみたいで
自分がしたいのは、フォーム1のデータセットの内容をフォーム2でも
扱う事によって、フォーム2の起動時間が早くなるのでは
と考えておりますが・・・
全然わからないです。
もうしわけありません。
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2006-02-13 16:35
どこがどのように解らないのですか?
それを提示して下さらないと、ここを見ている人も「何が解らないのか」が解らないでしょう。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-13 16:44
引用:

だんくさんの書き込み (2006-02-13 16:18) より:

フォーム1のテキストボックスをフォーム2から操作するみたいで
自分がしたいのは、フォーム1のデータセットの内容をフォーム2でも
扱う事によって、フォーム2の起動時間が早くなるのではと考えておりますが・・・


普通は、呼び出された方から呼び出し側を見ません。
頻繁に使うにしても、引数で渡して参照として保持しておけばいいと思うんですが、
どうもスルーされたようで... (^-^;)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-02-13 16:50
「フォームのフィールド」とするからやり難くなるのです。
フォーム1からもフォーム2からもアクセスするデータならば、双方からアクセスできるようにすれば良いだけの話です。

コード:
class HogeHogeData
{
	private static DataSet _dataSet;

	public static DataSet DataSet
	{
		get
		{
			return _dataSet;
		}
	}
}



フォーム1、フォーム2で
コード:
if( HogeHogeData.DataSet == null )
{
	TableAdapter.Fill( HogeHogeData.DataSet );
}



やり方の一つですが、非常に単純に書くとこうです。適当なので変更が必要でしょう。
static にしてよいのかどうかはアプリケーションの仕様によって決めてください。というか普通はしちゃ駄目でしょうね。(いつまでたっても変更が反映されないから)

もちろん、じゃんぬねっとさんのやり方もやり方の一つです。
_________________
囚人のジレンマな日々
だんく
常連さん
会議室デビュー日: 2006/02/06
投稿数: 47
投稿日時: 2006-02-13 18:17
じゃんぬねっと様、
>引数で渡して参照として保持しておけばいい
まだ、言い訳にもなりませんが、初心者ですから、
今までは、サンプルコードに手を加える程度でしたので、
引数といわれましても、困惑しております。
申し訳ありません。

囚人様、これはVBなのですか?そのstaticというのがネックになりそうなんですね。
入力もしますので、変更が反映されないのは、困ります。

又、このように行うと処理自体は早くなる可能性はあるのでしょうか?
例えば、フォーム1でデータをデータセットに読み込んでいるので、
フォーム2を開くとき(開く時にデータセットから、データグリッドビューに表示)
スムーズに開くかどうか。
Yam
大ベテラン
会議室デビュー日: 2003/09/13
投稿数: 179
お住まい・勤務地: だんじり祭りの地
投稿日時: 2006-02-13 18:29
横から失礼します。

じゃんぬねっとさんの方法は大凡以下のような感じになります。
コード:
Public Class Form1
    public ホニャララ as DataSet

    private sub データ取得()
        Me.TableAdapter.Fill(Me.ホニャララ.Table) 
    End Sub
		
    private sub Form2を開く()
        Dim testDialog As New Form2()
        testDialog.ShowMe(ホニャララ)
    End Sub
End Class
	
Public Class Form2

    Public Sub ShowMe(ByRef ホニャララ As DataSet)
        Me.Show()

        後はホニャララを焼くなり煮るなりお好きなように
    End Sub
End Class


#質問の趣旨に関係ないコードは省略しています。
#文法的に正しいとは限りません^^;
_________________
音速の定時退社!

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