DataTableでLINQを使用し行配列を取得、変数に設定して、その変数を別アクティビティで使用するとエラーになってしまいます。
やりたいことは
1.AsEnumerable.WhereにてEnumerableRowCollection型の変数(Val)を取得
2.Val.Anyにて件数確認 >>> ここでエラー
3.Val.CopyToDataTableにて別のDataTable変数にセット
です。
エラーの内容は以下の通りです。
「このパブリックな場所参照は、アクティビティ ‘1.43: VisualBasicValue<EnumerableRowCollection>’ にのみ有効であるため、アクティビティ ‘1.28: VisualBasicValue’ からはアクセスできません。パブリックな場所参照を取得したアクティビティのみがそれを使用できます。」
下記で代替できるのは確認しました。
・If 演算子を使って一つのアクティビティでフィルタ後のDataTableを取り出す
・コードを呼び出しアクティビティを使ってフィルタ後のDataTableを取り出す
複数のアクティビティでEnumerableRowCollection型を使う事はできないのでしょうか?
Yoichi
(Yoichi)
2
こんにちは
手元の環境(2018.4)では問題なく動作しそうですが...
(型の定義が異なりますでしょうか?)
動かないxamlをupいただいた方が良いかもしれません。
こんにちは
ご返信、ありがとうございます。
型はEnumerableRowCollectionです。
環境は2019.5.0です。
Xamlをアップしておきます。
よろしくお願いいたします。
Process3.xaml (14.3 KB)
エラーメッセージが一部抜けていたので張りなおしておきます。
「このパブリックな場所参照は、アクティビティ ‘1.43: VisualBasicValue<EnumerableRowCollection>’ にのみ有効であるため、アクティビティ ‘1.28: VisualBasicValue’ からはアクセスできません。パブリックな場所参照を取得したアクティビティのみがそれを使用できます。」
すみません‘1.28: VisualBasicValue’ のところ、‘1.28: VisualBasicValue<Boolean>’です。
貼り付けたときにBooleanのところが抜け落ちてしまうので全角で表記しておきます。
Yoichi
(Yoichi)
6
こんにちは
ファイルありがとうございます。
本質的にはこちらで検証したものと同じですね。入力DataTableとLINQ部分を書き換えて試してみましたがこちらの環境ではやはり再現しませんでした。
過去からcollectionに関する同様のケースが稀にあるみたいですので、特定条件下で発生する何らかのbugが直りきっていないのかもしれません。
検証いただきありがとうございました。
気づくのが遅くなって申し訳ございません。
過去の事象、参考にさせていただきます。