Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共11 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:[求助]父表与子表不能同步加载(已解决)

1楼
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编辑过]
2楼
狐狸爸爸 发表于:2011/11/6 20:11:00
没有办法。
3楼
yyzlxc 发表于:2011/11/6 20:18:00
这就惨了,明细表每个月要增加3000多条数据,全部加载简直是个灾难,狐爸老师,能否考虑采取其他方法来解决?谢谢狐爸老师的回复!!
4楼
狐狸爸爸 发表于:2011/11/6 20:20:00

呵呵,一个订单的订单明细,和一个月的订单明细有什么关系?

一个订单会有3000个明细?

也许你的设计有问题,或许你的理解有问题。

 

5楼
yyzlxc 发表于:2011/11/6 20:47:00

我只是打个比方,实际情况是共20多个单位,每个单位100多个员工,每个月3000多条数据,一年就是近4万条数据,如果五年的数据就是20万,太恐怖了。

现在的方案是,每次只加载一个月的数据,也就是3000来条,应该问题不大,再次谢谢狐爸老师。

6楼
yyzlxc 发表于:2011/11/6 21:41:00

代码好像有点问题,报酬明细表不能加载,不知问题在哪里,请各位老师指教,谢谢!!

 

 


[此贴子已经被作者于2011-11-6 22:04:48编辑过]
7楼
狐狸爸爸 发表于: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()

 

8楼
yyzlxc 发表于:2011/11/6 22:03:00
谢谢狐爸老师,代码运行正常。再次感谢!!
9楼
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编辑过]
10楼
狐狸爸爸 发表于: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')
共11 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03027 s, 2 queries.