Access微课
网站公告
·Access快速平台QQ群号:84825014    ·Access快速开发平台下载地址及教程    ·欢迎添加微信交流账号:AccessoftChu    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > 源码示例

【Access查询示例】查询出行最小值的同时,把最小值对应的字段名也取出来能否实现?

时 间:2020-04-21 12:42:19
作 者:金宇   ID:43  城市:江阴
摘 要:【Access查询示例】查询出行最小值的同时,把最小值对应的字段名也取出来能否实现?
正 文:

一、学友问题描述:
      Access查询能否实现查出行最小值的同时,将供应商名称也取出来?取值我可以查询出来,我想把最小值对应的字段名也取出来能否实现?如下图:
点击图片查看大图


希望得到的效果:

点击图片查看大图


二、解决方法:

      用循环代码即可实现,示例代码如下:

Private Sub Cmd_Result_Click()
    Dim rst As Object
    Dim strSQL As String
    Dim m_maxValue As Currency
    Dim strField As String

    Set rst = CreateObject("adodb.recordset")
    strSQL = "select * from 原表"
    rst.Open strSQL, CurrentProject.Connection, 1, 3
    Do While Not rst.EOF
        m_maxValue = 0
        strField = ""
        If Nz(rst!供应商A, 0) < Nz(rst!供应商B, 0) Then
            m_maxValue = rst!供应商A
            strField = "供应商A"
        Else
            m_maxValue = rst!供应商B
            strField = "供应商B"
        End If

        If m_maxValue < Nz(rst!供应商C, 0) Then
            m_maxValue = m_maxValue
        Else
            m_maxValue = rst!供应商C
            strField = "供应商C"
        End If

        If m_maxValue < Nz(rst!供应商D, 0) Then
            m_maxValue = m_maxValue
        Else
            m_maxValue = rst!供应商D
            strField = "供应商D"
        End If

        If m_maxValue < Nz(rst!供应商E, 0) Then
            m_maxValue = m_maxValue
        Else
            m_maxValue = rst!供应商E
            strField = "供应商E"
        End If
        rst!最小值 = m_maxValue
        rst!供应商名称 = strField
        rst.Update
        rst.MoveNext
    Loop
    rst.Close
    Set rst = Nothing
    MsgBox "处理完成,请点击确定按钮打开看结果!", vbInformation, "提示:"
    DoCmd.OpenTable "原表"
    DoCmd.MoveSize 7000, 2150, 9500, 6500
End Sub


附   件:

点击下载此示例学习

演   示:



Access软件网QQ交流群 (群号:596608182)       access源码网店

最新评论 查看更多评论(3)

2020/5/24 17:50:55lyg5498426
这样改进是不是好一点! Private Sub Cmd_Result_Click() Dim rst As Object Dim strSQL As String Dim m_maxValue As Currency Dim strField As String Set rst = CreateObject("adodb.recordset") strSQL = "select * from 原表" rst.Open strSQL, CurrentProject.Connection, 1, 3 Do While Not rst.EOF arr = Array(rst!供应商A, rst!供应商B, rst!供应商C, rst!供应商D, rst!供应商E) mixs = arr(0) For i = 0 To UBound(arr) If arr(i) <= mixs Then mixs = arr(i): minp = arr(i).Name Next rst!最小值 = mixs rst!供应商名称 = minp rst.Update rst.MoveNext Loop rst.Close Set rst = Nothing MsgBox "处理完成,请点击确定按钮打开看结果!", vbInformation, "提示:" DoCmd.OpenTable "原表" DoCmd.MoveSize 7000, 2150, 9500, 6500 End Sub

2020/4/21 23:12:53麥田
方法多种的,大家有好的方法示例,也可以制作好了分享到网站上发布

2020/4/21 23:06:40大洋
如果将物料编码/供应商ID/价格等建立一个表,这样就可以利用聚合查询的函数出结果,不用写代码更方便一些

发表评论您的评论将提升作者分享的动力!快来评论一下吧!

用户名:
密 码:
内 容:
 

常见问答

技术分类

相关资源

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助