我正在尝试将Visual Collection中的所有记录导出为excel。
我的代码如下:
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
显示网格中的记录已导出。 有没有办法获取所有查询记录?
代码在屏幕命令栏执行代码中写入。
EDITED
关于你的观点1,3在Yann回答:
屏幕有2个查询:MAIN_QUERY和LOOKUP_QUERY。
第一个MAIN_QUERY绑定到网格。
LOOKUP_QUERY是查询MAIN_QUERY字段值的查询(自动完成BOX上的选项)。
对于每个循环迭代LOOKUP_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
每个产品不包含至少一行,则导出时会遗漏某些产品。
答案 0 :(得分:2)
Matt Evans在Visual Studio LightSwitch - General Questions论坛上回答:
您想要查看与数据对应的实体集 服务器。 VisualCollection是网格的后备存储 在屏幕上。
如果您的内部数据库中有一个名为" Customer"的实体 (ApplicationData)这将向客户展示:
for each c in Me.Dataworkspace.ApplicationData.Customers
rowCount += 1
excel.Cells(rowcount, 1).Value = c.Name
答案 1 :(得分:1)
如果您使用包含参数的查询来填充网格,并且您已启用分页,那么网格将随时只有一个“页面”数据。这就是为什么你没有得到所有的记录。
最简单的方法是禁用集合上的分页,但当然如果有大量记录,那么这样做可能不是一个好主意。然后你又想要导出所有的记录,所以无论你是否将它们分页,它们都会被拉到客户端。
另一种方法是以编程方式对代码中的页面进行排序(但您也可以使用方法一)。
或者您可以使用填充网格的相同查询,但是在代码中而不是使用网格集合(并且再次将所有记录拉到客户端)。
< / LI> 醇>答案 2 :(得分:1)
Yann,我知道这已经过了一段时间,但我只想澄清一件事。如果我需要遍历此网格查询中的每个记录(具有分页),我可以执行以下任一操作:
感谢您对LS的所有贡献。