以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]sql 语句 中 如何 写 当月的条件?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=93915)

--  作者:111yangguojun
--  发布时间:2016/12/10 10:05:00
--  [求助]sql 语句 中 如何 写 当月的条件?
问题一: 比如   查询当月的销售额, 查询表中如何 写 当月的加载条件?

问题二: 如果统计每天的销售额,查询表中如何写每天的条件?

--  作者:有点蓝
--  发布时间:2016/12/10 10:25:00
--  
参考:http://www.foxtable.com/webhelp/scr/2720.htm
--  作者:111yangguojun
--  发布时间:2016/12/10 12:13:00
--  
Dim y As Integer = 2011 \'指定年份
Dim 
m As Integer = 6 \'指定月份
Dim 
dt1 As New Date(ym1)
Dim 
dt2 As New Date(ymDate.DaysInMonth(y,m)) \'获取该月的最后一天
Dim 
Filter As String
Filter
 = "日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#" 
Tables
("订单").Filter = Filter

这个代码我会用,我现在是想再查询表里直接写入 筛选当月的代码,不知道能不能实现?


--  作者:有点蓝
--  发布时间:2016/12/10 14:05:00
--  
道理一样。试试就知道。

具体上传代码和例子说明

--  作者:111yangguojun
--  发布时间:2016/12/12 10:37:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


项目上传
帮忙看下如何解决项目内碰到的问题

--  作者:111yangguojun
--  发布时间:2016/12/12 11:08:00
--  
图片点击可在新窗口打开查看这是个啥问题,怎么样可以取到正确的值
--  作者:有点蓝
--  发布时间:2016/12/12 11:17:00
--  
这个要代码处理一下

Dim jb As New sqlJoinTableBuilder("查询表1","表A")
jb.AddTable("表A","产品名称","表B","产品名称",JoinModeEnum.Left) \'添加统计表
jb.AddCols("{表A}.产品名称","订单金额",True)
jb.AddExp("回款金额","Sum({表B}.回款金额)")
jb.AddExp("运费回款","Sum({表B}.运费回款)")

jb.Distinct = True
Dim dt1 As fxDataSource

dt1 = jb.BuildDataSource()

Tables("窗口1_Table1").DataSource = dt1 \'将统计结果绑定到Table\'
Dim t As DataTable = Tables("窗口1_Table1").DataTable

Dim t2 As DataTable = DataTables("表C")
t.StopRedraw
t.DataCols.Add("垫付金额",Gettype(Double))
For Each dr As DataRow In t.DataRows
    dr("垫付金额") = t2.Compute("Sum(运费)","产品名称=\'" & dr("产品名称") & "\'")
Next
t.DataCols.Add("未回金额",Gettype(Double),"订单金额 - 回款金额")
t.DataCols.Add("运费未回",Gettype(Double),"垫付金额 - 运费回款")
t.ResumeRedraw

Tables("窗口1_Table1").SetColVisibleWidth("产品名称|102|订单金额|71|回款金额|59|未回金额|59|垫付金额|59|运费回款|59|运费未回|59")
Tables("窗口1_Table1").Filter = "未回金额 > 0 or 运费未回 > 0"

--  作者:有点色
--  发布时间:2016/12/12 11:24:00
--  

 你用这种统计方式本身就有错。多个表组合用这种方式

 

http://www.foxtable.com/webhelp/scr/2305.htm

 

 

Dim bd1 As New GroupTableBuilder("统计表1", DataTables("表A"))
Dim dt1 As fxDataSource
bd1.Groups.AddDef("产品名称")
bd1.Totals.AddDef("订单金额","订单金额")
dt1 = bd1.BuildDataSource()

Dim bd2 As New GroupTableBuilder("统计表2",DataTables("表B"))
Dim dt2  As fxDataSource
bd2.Groups.AddDef("产品名称")
bd2.Totals.AddDef("回款金额","回款金额")
bd2.Totals.AddDef("运费回款","运费回款")
dt2 = bd2.BuildDataSource()

Dim bd3 As New GroupTableBuilder("统计表3",DataTables("表C"))
Dim dt3 As fxDataSource
bd3.Groups.AddDef("产品名称")
bd3.Totals.AddDef("运费","运费")
dt3 = bd3.BuildDataSource()

dt1.Combine("产品名称",dt2,"产品名称")
dt1.Combine("产品名称",dt3,"产品名称")

Tables("窗口1_Table1").DataSource = dt1 \'将统计结果绑定到Table
Tables("窗口1_Table1").SetColVisibleWidth("产品名称|102|订单金额|71|回款金额|59|未回金额|59|垫付金额|59|运费回款|59|运费未回|59")


--  作者:111yangguojun
--  发布时间:2016/12/12 11:29:00
--  
您这个方法我试过了,可以得到结果,但是这样每次都要处理所有的记录,数据量大的时候会不会非常慢了?
--  作者:有点蓝
--  发布时间:2016/12/12 11:33:00
--  
考虑8楼的方式,合并统计表后再加上表达式列