視覚的なコレクション、すべてのレコードを取得し、現在グリッドコントロールに表示されているだけでなく
-
28-10-2019 - |
質問
私はエクスポートしようとしています 全て 視覚的なコレクションからの記録への記録。
私のコードは次のように見えます:
Imports System.Runtime.InteropServices.Automation
Namespace LightSwitchApplication
Public Class Assignacions_GR_a_DPT_o_IR_manuals
Private Sub ExportacioExcel_Execute()
Try
...
For Each GR In Me.A_LIGHTSWITCH_QUERY
rowCount += 1
excel.Cells(rowCount, 1).Value = GR.ToString
しかし、現在のみです A_LIGHTSWITCH_QUERY
グリッドのレコードがエクスポートされていることを示しました。 すべてのクエリレコードを取得する方法はありますか?
コードは、スクリーンコマンドバー実行コードに書かれています。
編集
あなたのポイントについて1,3ヤンの答え:
画面には2つのクエリがあります:main_queryとlookup_query。
最初の1つ、Main_Queryはグリッドにバインドされています。
Lookup_Queryは、Main_Queryフィールド(オートコンプリートボックスの選択)のルックアップ値のクエリです。
ループごとにlookip_queryを繰り返します:
For Each GR In Me.LOOKUP_QUERY
また、画面に表示されるlooup_queryアイテムのみがループから取得されます。
サンプル:
MAIN_QUERY = ORDER LINE (QTY, Product, Order, ...)
LOOKUP_QUERY = PRODUCT (NAME, ...)
For Each P In Me.PRODUCT
Only retrieve product that appear in selected order, I need ALL products.
ページを無効にできることに注意してください order
各製品の少なくともラインは含まれていません。一部の製品は輸出時に見逃されます。
解決
回答による マット・エヴァンス で Visual Studio Lightswitch-一般的な質問 フォーラム:
サーバー上のデータに対応するエンティティセットを見たいです。 VisualCollectionは、画面上のグリッドのバッキングストアです。
「Customer」という名前のエンティティがある場合、本質的なデータベース(ApplicationData)では、顧客が表示されます。
for each c in Me.Dataworkspace.ApplicationData.Customers
rowCount += 1
excel.Cells(rowcount, 1).Value = c.Name
他のヒント
グリッドを入力するためのパラメーターを備えたクエリを使用し、ページングを有効にした場合、グリッドにはいつでもデータの「ページ」のみが1つしかありません。これが、すべてのレコードを取得していない理由です。
最も簡単な方法は、コレクションのページングを無効にすることですが、もちろん、多数のレコードがある場合は、そうすることは良い考えではないかもしれません。とにかくすべてのレコードをエクスポートしたいので、ページをページするかどうかにかかわらず、それらはすべてクライアントに引き下げられます。
別の方法は、コード内のページをプログラム的にシーケンスすることです(ただし、メソッド1を実行することもできます)。
または、グリッドを入力する同じクエリを使用することもできますが、グリッドのコレクションを使用する代わりにコードでは(そして、すべてのレコードをクライアントに引き下げます)。
Yann、これはスレッドがしばらくかかったことを知っていますが、私はただ一つのことを明確にしたいだけです。このグリッドクエリのすべてのレコードを反復する必要がある場合(これにはページネーションがあります)、これらのいずれかを実行できます。
- 別の画面クエリを作成し(同じフィルターを使用しますが、ページネーションはありません)、反復に使用します
- エンティティセット(つまりdataworkspace.applicationdata.tablename)に移動し、そこから適切なフィルターを適用して反復します
LSへの貢献に感謝します。