以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- [求助]父表与子表不能同步加载(已解决) (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=14057)
|
-- 作者:yyzlxc
-- 发布时间:2011/11/6 20:10:00
-- [求助]父表与子表不能同步加载(已解决)
根据帮助中的父表与子表同步加载案例,如果要求根据"订单"表的"订单ID"和"单位"两个条件对"订单明细"表进行同步加载,以下代码应该如何修改,请各位老师帮助指教,谢谢!!
If DataTables("订单").DataRows.Count = 0 Then \'如果订单表没有数据 DataTables("订单明细").LoadFilter = "订单ID Is Null" \'不加载订单明细 Else Dim ids As String For Each dr As DataRow In DataTables("订单").DataRows ids = ids & "," & dr("订单ID") Next ids= ids.Trim(",") DataTables("订单明细").LoadFilter = "订单ID In (" & ids & ")" End If DataTables("订单明细").Load()
[此贴子已经被作者于2011-11-8 8:02:53编辑过]
|
-- 作者:狐狸爸爸
-- 发布时间:2011/11/6 20:11:00
--
没有办法。
|
-- 作者:yyzlxc
-- 发布时间:2011/11/6 20:18:00
--
这就惨了,明细表每个月要增加3000多条数据,全部加载简直是个灾难,狐爸老师,能否考虑采取其他方法来解决?谢谢狐爸老师的回复!!
|
-- 作者:狐狸爸爸
-- 发布时间:2011/11/6 20:20:00
--
呵呵,一个订单的订单明细,和一个月的订单明细有什么关系?
一个订单会有3000个明细?
也许你的设计有问题,或许你的理解有问题。
|
-- 作者:yyzlxc
-- 发布时间:2011/11/6 20:47:00
--
我只是打个比方,实际情况是共20多个单位,每个单位100多个员工,每个月3000多条数据,一年就是近4万条数据,如果五年的数据就是20万,太恐怖了。
现在的方案是,每次只加载一个月的数据,也就是3000来条,应该问题不大,再次谢谢狐爸老师。
|
-- 作者:yyzlxc
-- 发布时间:2011/11/6 21:41:00
--
代码好像有点问题,报酬明细表不能加载,不知问题在哪里,请各位老师指教,谢谢!!
[此贴子已经被作者于2011-11-6 22:04:48编辑过]
|
-- 作者:狐狸爸爸
-- 发布时间:2011/11/6 21:57:00
--
表达式的日期应该用#可以起来:
If DataTables("数据汇总").DataRows.Count = 0 Then \'如果订单表没有数据 DataTables("报酬明细").LoadFilter = "日期 Is Null" \'不加载订单明细 Else Dim ids As String For Each dr As DataRow In DataTables("数据汇总").DataRows If ids > "" Then ids= ids & "," End If ids = ids & "#" & dr("日期") & "#" Next DataTables("报酬明细").LoadFilter = "日期 In (" & ids & ")" End If DataTables("报酬明细").Load()
|
-- 作者:yyzlxc
-- 发布时间:2011/11/6 22:03:00
--
谢谢狐爸老师,代码运行正常。再次感谢!!
|
-- 作者:yyzlxc
-- 发布时间:2011/11/7 10:17:00
--
狐爸老师,上述代码用在内部数据源,运行正常,但是在外部数据源(SQL)的条件下出错,将"#"号去掉,又不能加载明细表,代码应该如何修改?望指教,谢谢!!
If DataTables("数据汇总").DataRows.Count = 0 Then \'如果订单表没有数据 DataTables("报酬明细").LoadFilter = "日期 Is Null" \'不加载订单明细 Else Dim ids As String For Each dr As DataRow In DataTables("数据汇总").DataRows If ids > "" Then ids= ids & "," End If ids = ids & "#" & dr("日期") & "#" Next DataTables("报酬明细").LoadFilter = "日期 In (" & ids & ")" End If DataTables("报酬明细").Load()
此主题相关图片如下:s.png
[此贴子已经被作者于2011-11-7 10:19:33编辑过]
|
-- 作者:狐狸爸爸
-- 发布时间:2011/11/7 14:26:00
--
如果数据源是SQl SERVER,日期常量用单引号而不是#号括起来,例如: SELECT * FROM {订单} WHERE 日期 >= \'1/1/1999\' AND 日期 <= \'1/31/1999\' 如果是Oracle的数据源,必须用TO_DATE函数转换,例如加载1999年10月21日的订单: SELECT * FROM {订单} WHERE 日期 = TO_DATE(\'10/21/1999\',\'MM/DD/YYYY\')
|