以文本方式查看主题

-  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=67278)

--  作者:unverse
--  发布时间:2015/4/21 16:24:00
--  SQL后台统计查询数据精度问题
使用SQL数据库,有一个字段是单精度的,但统计出来是小数点四位的,我想实现 二位精度!!!


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150421161856.jpg
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150421161813.jpg
图片点击可在新窗口打开查看




图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150421161929.jpg
图片点击可在新窗口打开查看


代码:

Dim yf As WinForm.CheckBox = e.Form.Controls("CheckBox1")
Dim dw As WinForm.CheckBox = e.Form.Controls("CheckBox2")
Dim fsl As WinForm.CheckBox = e.Form.Controls("CheckBox3")
Dim sl As WinForm.CheckBox = e.Form.Controls("CheckBox4")
Dim nd As WinForm.CheckBox = e.Form.Controls("CheckBox5")
Dim r As WinForm.CheckBox = e.Form.Controls("CheckBox6")
Dim srq As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker3")
Dim erq As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker4")
Dim b As New SQLCrossTableBuilder("统计表1","cgrkd1")
b.C
b.AddTable("cgrkd1","单据内码","cgrkd2","单据内码") \'添加统计表
Dim s As String
With srq
    If .value IsNot Nothing
        If s> "" Then
            s = s & " AND "
        End If
        s = s & "采购日期 >= \'" & .value & "\'"
    End If
End With
With erq
    If .value IsNot Nothing
        If s> "" Then
            s = s & " AND "
        End If
        s = s & "采购日期 <= \'" & .value & "\'"
    End If
End With
b.Filter= s
If nd.Checked
    b.hGroups.AddDef("采购日期",DateGroupEnum.Year,"年")
End If
If yf.Checked
    b.hGroups.AddDef("采购日期",DateGroupEnum.month,"月")
End If
If r.Checked
    b.hGroups.AddDef("采购日期",DateGroupEnum.day,"日")
End If
If dw.Checked
    b.HGroups.AddDef("供料单位") \'添加客户列用于水平分组
End If

b.vGroups.AddDef("物料名称","物料名称_{0}")\'添加产品列用于垂直分组,并设置了Pattern参数

If fsl.Checked
    b.Totals.AddDef("辅助数量","吨数")
End If
If sl.Checked
    b.Totals.AddDef("数量","立方米") \'添加数量列用于统计
End If
b.Totals.AddDef("金额") \'添加数量列用于统计
b.Build \'生成统计表
b.VerticalTotal=True
b.HorizontalTotal=True

--  作者:Bin
--  发布时间:2015/4/21 16:25:00
--  
http://www.foxtable.com/help/topics/2046.htm
--  作者:unverse
--  发布时间:2015/4/21 16:34:00
--  
我这是SQLCrossTableBuilder ,列是根据业务动态形成的,有很多金额列,应该 怎么写呢?
Tables(e.Form.Name & "_table3").DataTable.DataCols("金额").Decimals=2
提示不存在……

--  作者:Bin
--  发布时间:2015/4/21 16:35:00
--  
看看你实际列名是什么.
--  作者:Bin
--  发布时间:2015/4/21 16:37:00
--  
你看到的是标题.而且你这是多层表头,怎么可以只看最后一层呢?

for each c as col in Tables(e.Form.Name & "_table3").cols
     if c.Caption.EndsWith("金额") then
         c.datacol.Decimals=2
         c.datacol.SetFormat("0.00")
     end if 
next

--  作者:unverse
--  发布时间:2015/4/21 16:39:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150421163723.jpg
图片点击可在新窗口打开查看

就是这样的列,物料名称,名称是根据单据选择生成 的

--  作者:Bin
--  发布时间:2015/4/21 16:39:00
--  
看5楼.搞不定就上例子
--  作者:狐狸爸爸
--  发布时间:2015/4/21 16:39:00
--  

Dim b As New SQLCrossTableBuilder("统计表1","cgrkd1")

b.Decimals = 2 \'设置统计精度


--  作者:unverse
--  发布时间:2015/4/21 16:44:00
--  
以下是引用狐狸爸爸在2015/4/21 16:39:00的发言:

Dim b As New SQLCrossTableBuilder("统计表1","cgrkd1")

b.Decimals = 2 \'设置统计精度

老爹很,放狠了个大招,一招搞定图片点击可在新窗口打开查看


佩服——搞定了——谢过,其实有属性的只不过没有用过所以……………………