- - PR -
RowFilter の奇妙な現象
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-01-15 18:32
こんばんは。
どうしても解決できないことが、もう1点だけありまして お力添えをお願いします。 VB2005+ActiveReportNET2.0の環境です。 DataViewをFilterして その結果をサブレポートに渡し印刷します。 そこで奇妙な現象が起こってしまうのです。 まずコードです。 DataView .RowFilter = Nothing Dim Subr As New RPTSub ' DataView.RowFilter = "KMK = '" & fldKMK.Text & "'" If DataView.Count > 0 Then Subr.DataSource = DataView Me.SubrKMK.Report = Subr END IF 処理としましては fldKMK.Textが A の時 Aの値でDataView.RowFilterし、データをサブレポートに渡します。 次に fldKMK.Textが B の時 Bの値でDataView.RowFilterし、データをサブレポートに渡します。 どうい時に奇妙な現象が起きるのかといいますと DataViewにAのデータが無い時、BはFilterはかかるのですが印刷されないのです。 サブレポートのReportStartイベントが発生しないのです。 If DataView.Count > 0 ThenとEND IFをコメントすると 正しくBのサブレポートは印刷されます。 またA,Bのデータが両方ある場合はA,Bとも正しくサブレポートは印刷されます。 DataView.CountはMsgBoxで表示させても6件になります。 今まで何度かDataView .RowFilteを使ってきましたが、このような現象は初めてです。 どういうことなのでしょうか? | ||||||||
|
投稿日時: 2008-01-15 18:44
これだけですと Filter のせいなのかサブ レポートのせいなのか切り分けが難しくないでしょうか。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2008-01-15 19:05
じゃんぬねっとさん、すいません。
Detail_Formatで記述しているコードです。 If DataView.Count > 0 Then '** DataView.Count をMsgBoxで表示させると6と表示 Subr.DataSource = DataView Me.SubrKMK.Report = Subr END IF サブレポートの RPTSub_ReportStartイベントでDebug.Print("ReportStart")と してもDebugされません。 If DataView.Count > 0 ThenとEND IFをコメントすると Debugされます。 すいません、解りにくく・・ すいません、説明不足で・・ | ||||||||
|
投稿日時: 2008-01-15 19:15
このご説明ですと "If DataView.Count > 0 Then" の行と "End If" の行をコメントアウトしようとしよまいが、
の 2 行は実行されているということになります。 確かにそれはヘンですね。 奇妙です。 ありえるとすれば MessageBox を表示されている間に非同期な箇所が同期してうまくいっている (ように見える) というところでしょうか。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2008-01-15 19:26
ありがとうございます。
If DataView.Count > 0 ThenとEND IFをコメントする、しないだけですので Subr.DataSource = DataView Me.SubrKMK.Report = Subr の2行は必ず実行されます。 それとA,B両方ある場合は If DataView.Count > 0 ThenとEND IFをコメントしなくても 印刷します。 どういうことなのでしょうか・・・ |
1