- PR -

データセット等のグローバル変数

1
投稿者投稿内容
どら
ベテラン
会議室デビュー日: 2004/08/18
投稿数: 63
投稿日時: 2006-07-31 15:17
vs2005 vb winxp

いつも拝見しております。

1つご教授願いたいところがあります。

今、グローバル変数、グローバル関数、マスタ等をすべてプロジェクトで分け、マスタのほうから参照し、データ接続だったり、データセットに値を入れたりとかをグローバル関数でやってあげようと思います。

そうすると、各画面単体単体は、正常に動作すると思うのですが、同時にマスタを何画面も開いたときに、データセットの値等が変わってしまうと思います。

そこで、グローバル変数、関数の参照をやめて、すべてのマスタごとのプロジェクトにグローバル変数、関数クラスを作成して使うか、今のままで、グローバル関数で得たデータセットを、各フォームで新しく宣言したデータセットにいれなおすかで、迷っています。

************************************************************
Dim ××ますた_DataSet As New DataSet()

call データセット受け取り処理 '別プロジェクトの関数

××ますた_DataSet = グローバル_DataSet
××マスタ.DataSource = ××ますた_DataSet
***********************************************************

みたいな感じです。

みなさまは、どのようにしてますでしょうか。初歩的な質問だとは思いますが、ご教授お願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-31 16:13
引用:

どらさんの書き込み (2006-07-31 15:17) より:

今、グローバル変数、グローバル関数、
(snip)
同時にマスタを何画面も開いたときに、データセットの値等が変わってしまうと思います。


戻り値で返しているとして、関数 (メソッド) は関係ないですよね。
問題となりえるのは、'グローバル変数' と仰っている部分でしょう。

これは、定義している場所とアクセスレベルが、非常にまずいということです。
'グローバル変数' と仰っているのは、Public な静的変数とほぼ同義だと考えられます。
各々で値が変わる仕様なのであれば、明らかにおかしい定義をしていることになりますよね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-07-31 16:37
引用:

どらさんの書き込み (2006-07-31 15:17) より:
vs2005 vb winxp

みなさまは、どのようにしてますでしょうか。初歩的な質問だとは思いますが、ご教授お願いいたします。


みなさまは、(たぶん)グルーバル**という発想自身をあまりしないのだと思います。

引用:

どらさんの書き込み (2006-07-31 15:17) より:

そうすると、各画面単体単体は、正常に動作すると思うのですが、同時にマスタを何画面も開いたときに、データセットの値等が変わってしまうと思います。


これは、データの整合性が取れないという意味でしょうか?


[ メッセージ編集済み 編集者: R・田中一郎 編集日時 2006-07-31 16:37 ]
どら
ベテラン
会議室デビュー日: 2004/08/18
投稿数: 63
投稿日時: 2006-07-31 17:47
R・田中一郎さん。じゃんぬねっとさんありがとうございます。

引用:

これは、データの整合性が取れないという意味でしょうか?



グローバルで、データセットを宣言しちゃうと、開いたマスタごとに、データセットが変わってしまうってことですね。

今まで、開ける画面は、1つと仮定してつくってましたので、グローバルのが楽かなとおもってそう作成していました。


引用:

各々で値が変わる仕様なのであれば、明らかにおかしい定義をしていることになりますよね。



そうですよね。値がかわるのは、グローバルにすべきではないですよね。
データセットはフォーム単位ですべきですよね。

データセットは、フォームで宣言し、データ抽出とかは、引数で関数に渡し、戻ってきた値をフォームに連結するということで、作成してみます。

ありがとうございました。

1

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