以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  数据导出EXCEL  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=188789)

--  作者:hopestarxia
--  发布时间:2023/10/19 6:50:00
--  数据导出EXCEL
老师,请问我窗口中查询表,想导出EXCEL,但是导出时想实现5000行生成一个EXCEL文件,即如果窗口表中如果有3万条数据,点导出则自动拆分成6个EXCEL文件。请问如何实现。
--  作者:有点蓝
--  发布时间:2023/10/19 8:28:00
--  
对查询表做分页加载,每页5000行:http://www.foxtable.com/webhelp/topics/2269.htm

然后加载一页就导出一页:http://www.foxtable.com/webhelp/topics/1145.htm


--  作者:hopestarxia
--  发布时间:2023/10/19 9:09:00
--  
老师,大概明白了点意思又没全明白,我是想窗口中的查询表(有多少条记录每次不一样),查询出来后,点一个导出按钮,就按5000行一个EXCEL文件就直接全导出来了,例16000条就一下导出来4个文件,可以叫001,002,003,004,一下子就全部导出来了,
不要点下一页导出一个,再点下一页再导出一个。操作多次。谢谢老师再给详细的说说这样的做法。

--  作者:有点蓝
--  发布时间:2023/10/19 9:27:00
--  
先生成第一页,然后通过TotalPages判断总共有几页:http://www.foxtable.com/webhelp/topics/1928.htm,按总页数做个循环逐页导出

With DataTables("订单") 加载第一页
    .
LoadTop = 5000
    .
LoadPage = 0
    .
Load
End With
这里是导出数据的代码
for i as integer = 1 to DataTables("订单").TotalPages 从第2页开始遍历
With DataTables("订单")
    .
LoadTop = 5000
    .
LoadPage = i
    .
Load
End With
这里是导出数据的代码
next

--  作者:hopestarxia
--  发布时间:2023/10/20 0:44:00
--  
谢谢老师,前面导出第一页实现了,但是后面的循环没起作用,执行不出来结果。
--  作者:有点蓝
--  发布时间:2023/10/20 8:32:00
--  
代码?
--  作者:hopestarxia
--  发布时间:2023/10/21 8:16:00
--  
老师,代码如下:只导出了第一页的20行,后面的就不导出了。窗口的表是查询表。

With DataTables("CCCC_Table1") 
    .LoadTop = 20
    .LoadPage = 0
    .Load
End With

Dim flg As New SaveExcelFlags
Tables("CCCC_Table1").SaveExcel("D:\\明细" & format(Date.now,"yyyyMMddHHmmss") & ".xls","xmmb",flg)


For i As Integer = 1 To DataTables("CCCC_Table1").TotalPages
With DataTables("CCCC_Table1") 
    .LoadTop = 20
    .LoadPage = i
    .Load
End With

Dim flg2 As New SaveExcelFlags
Tables("CCCC_Table1").SaveExcel("D:\\明细" & format(Date.now,"yyyyMMddHHmmss") & ".xls","xmmb",flg2)

Next

--  作者:有点蓝
--  发布时间:2023/10/21 9:06:00
--  
要设置一下LoadOver

With DataTables("CCCC_Table1") 
    .LoadTop = 20
    .LoadPage = 0
    .LoadOver = "某个值不重复的列,比如编号"
    .Load
End With

……
For i As Integer = 1 To DataTables("CCCC_Table1").TotalPages
With DataTables("CCCC_Table1") 
    .LoadTop = 20
    .LoadPage = i
    .LoadOver = "某个值不重复的列,比如编号"
    .Load
End With

--  作者:hopestarxia
--  发布时间:2023/10/21 9:53:00
--  
老师,我这里没有主健,我查询代码里虚拟了一个行的序号作为主健也不可以,.我在 LoadOver = "某个值不重复的列,比如编号"  这里要主表与明细表结合才能组成不重复的值,即A表+B表。我放两个上总报错,提示B表的不存在。请问如何放两个值正确?
--  作者:有点蓝
--  发布时间:2023/10/21 10:16:00
--  
用了什么sql?代码?