- PR -

Dataviewの複製方法?

1
投稿者投稿内容
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2007-03-12 11:45
VB2005+ActiveReportsNETで開発しています。
レポートにDataviewを渡しますが
Dataview = gv.GetDvGP
rpt.DataSource = vw

Dataview = gv.GetDvGP(この文を何とか不要にしたい)
rpt.Dv = Dataview

レポートのDataSource用とパラメータ(Public Property)で渡すものと
2回 Dataviewの取得(GetDvGP)を実行しないと

Dataview = gv.GetDvGP
rpt.DataSource = vw
rpt.Dv = Dataview       
               Dataview は1回のみ取得

レポートでパラメータで受け取ったDataviewを1度フィルタをかけると
次のDataSource を読み取らず、1件で終了してしまいます。

何とかDataviewを取得するのは1回だけにして
複製か何かで対応させたいのですが・・・

何かよい方法はありませんか?



じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-03-13 09:02
どなたも答えないようですので、

引用:

未記入さんの書き込み (2007-03-12 11:45) より:

VB2005+ActiveReportsNETで開発しています。
レポートにDataviewを渡しますが
Dataview = gv.GetDvGP
rpt.DataSource = vw

Dataview = gv.GetDvGP(この文を何とか不要にしたい)
rpt.Dv = Dataview

レポートのDataSource用とパラメータ(Public Property)で渡すものと
2回 Dataviewの取得(GetDvGP)を実行しないと

Dataview = gv.GetDvGP
rpt.DataSource = vw
rpt.Dv = Dataview       
               Dataview は1回のみ取得


変数 'vw' というのが唐突に出てきていますが、これは何者でしょうか?
GetDvGP メソッド (プロパティ?) が、DataView のインスタンスを返してそうなので、
vw == Dataview という理解で問題ないのでしょうか?

そうだと仮定して、

引用:

レポートでパラメータで受け取ったDataviewを1度フィルタをかけると
次のDataSource を読み取らず、1件で終了してしまいます。


確認ですが、"1 件で終了" というのは、貴方の環境 (データ) でそうなっているだけであり 「例」 ですよね。
正しくは 「フィルタ後、カレントに表示されている行だけが出力される」 ではないでしょうか?

同一インスタンスである以上、RowFilter を解除するか、RowStateFilter プロパティの値を変更しない限りは、
ActiveReports 側としては 同じものしか出力せざるを得ない でしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2007-03-13 09:48
返答ありがとうございます。

全てご察しの通りです。
vwは、Dim vw As New System.Data.DataViewとコーディングしたDataViewです。
GetDvGPは、Public Function GetDvGP(ByVal pSQL As String) As DataView
  SQL文を実行してDataViewを返す
      End Function 

そこでもう1度書きますとDataViewを1回取得して
レポートのDataSource用とレポートの中でフィルタをかけ件数を取得する
パラメータ(Public Property)のDataviewにセットし
レポートを実行しフィルタをかけるとじゃんぬねっとさんの言われる通り

「フィルタ後、カレントに表示されている行だけが出力される」
になってしまいます。

DataSource用とパラメータ用を
rpt.DataSource = vw
rpt.Dv = vw   
とコーディングしたのではフィルタをかけた結果が
レポートのDataSourceにも影響されてしまうのでしょうか?
ここがよく解らなく・・・

RowFilter を解除するとありますが、解除方法を
教えて頂けませんか?

宜しくお願いします。





    
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-03-13 11:11
未記入さん、こんにちは。

引用:

未記入さんの書き込み (2007-03-13 09:48) より:

DataSource用とパラメータ用を
rpt.DataSource = vw
rpt.Dv = vw   
とコーディングしたのではフィルタをかけた結果がレポートのDataSourceにも影響されてしまうのでしょうか?
ここがよく解らなく・・・


影響されているからこその '今の結果' ではないでしょうか?

引用:

RowFilter を解除するとありますが、解除方法を教えて頂けませんか?


RowFilter に Nothing か System.String.Empty を格納すれば良いのではないでしょうか?

ActiveReports 的には DataSource に指定されたものは、Load によって再読込みされます。
これによって、フィルタリングされていない結果が表示されることをここでは期待しています。

これは、3rd パーティ製品側の実装を推測した回答です。
これでダメであれば、また再度投稿してください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2007-03-13 12:10
すごい!!
OKです。ありがとうございます。
1

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