Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

怎样对一条记录中的同类型数据进行最大和最小值的比较?

梧桐影  发表于:2010-11-17 09:38:53  
复制

利用窗体的控件,对同一个字段的若干数据进行最大和最小值的比较,可以使用Max和Min函数方便的获得。我的问题是:怎样对一条记录中的同类型数据进行最大和最小值的比较?有哪位高手赐教不胜感谢!

我的示例详见附件《测试记录》,打开“记录查询”我希望在[最大值]查询字段下显示这一行E11~E33这9个数据中的最大值。

点击下载此附件

 

Top
煮江品茶 发表于:2010-11-17 10:49:16
这需要写自定义函数来解决。

煮江品茶 发表于:2010-11-17 11:05:07

Function DDMax(ParamArray A() As Variant) As Single
'示例:select *,DDmax(字段1,字段2,字段3,字段4) as 最大值 from 表1
Dim i As Long
Dim Mx As Single
Mx = -1 * 10 ^ 10
For i = 0 To UBound(A, 1)
        If IsNumeric(A(i)) = True Then
              If A(i) > Mx Then Mx = A(i)
        End If
Next
DDMax = Mx
End Function


Function DDMin(ParamArray A() As Variant) As Single
'示例:select *,DDmin(字段1,字段2,字段3,字段4) as 最小值 from 表1
Dim i As Long
Dim Mn As Single
Mn = 10 ^ 10
For i = 0 To UBound(A, 1)
        If IsNumeric(A(i)) = True Then
              If A(i) < Mx Then Mx = A(i)
        End If
Next
DDMin = Mn
End Function


Function DDAvg(ParamArray A() As Variant) As Single
'示例:select *,DDAvg(字段1,字段2,字段3,字段4) as 平均值 from 表1
Dim i As Long
Dim S As Single
Dim C As Long
S = 0: C = 0
For i = 0 To UBound(A, 1)
        If IsNumeric(A(i)) = True Then
              S = S + A(i)
              C = C + 1
        End If
Next
If C <> 0 Then
        DDAvg = S / C
Else
        DDAvg = 0
End If
End Function

 



煮江品茶 发表于:2010-11-17 11:10:18

将以上代码拷贝到一个模块中,然后在查询中使用对应函数,比如求最大值:

 

SELECT *,Format(DDmax(E11,E12,E13,E21,E22,E23,E31,E32,E33),"0.000") AS 最大值

FROM 记录准确度记录表;

 



shengqg 发表于:2010-11-19 17:29:02
调试成功了,谢谢老师!

总记录:4篇  页次:1/1 9 1 :