xms77 发表于 2013-2-20 22:29:53

【已解决】如何查询access数据库某列的最大值?

本帖最后由 xms77 于 2013-2-21 08:51 编辑

搜索了整个论坛,搞了一个多小时,还没有整出来。
我现在的代码如下:
Func _QueryMax($iTblName, $iColumnName)
        Local $iMax
        $addfld = ObjCreate("ADODB.Connection")
        $addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password=")
        $RS = ObjCreate("ADODB.Recordset")
        $RS.ActiveConnection = $addfld
        $RS.Open("SELECT MAX(ZPos1) as Maxvalue FROM " & $iTblName)
        $imax = $RS.Maxvalue
        $RS.close
        $addfld.close ;写完结束所有的连接
        Return $iMax
EndFunc
灰常298311657兄弟感激的帮忙,修正代码如下:
Func _accessGetColumnMax($adSource, $adTable, $adCol)
        Local $Val
        Local $oADO = 'ADODB.Connection'
        If IsObj($oADO) Then
                $oADO = ObjGet('', $oADO)
        Else
                $oADO = _dbOpen($adSource)
        EndIf
        If IsObj($oADO) = 0 Then Return SetError(1)
        Local $oRec = _dbOpenRecordset()
        If IsObj($oRec) = 0 Then Return SetError(2)
        $oRec.Open("SELECT Max(" & $adCol & ") as Maxvalue FROM " & $adTable, $oADO, $adOpenStatic, $adLockOptimistic)
        $Val = $oRec.Fields("Maxvalue").value
        $oRec.Close
        $oADO.Close
        Return $Val
EndFunc   ;==>_accessGetColumnMax

298311657 发表于 2013-2-20 22:57:48

$imax = $RS.Fields("Maxvalue").Value

298311657 发表于 2013-2-20 22:59:46

加个条件
If Not $Rs.Eof Then
    $imax = $RS.Fields("Maxvalue").Value
Else
    $imax = 0
Endif

xms77 发表于 2013-2-21 08:31:16

回复 2# 298311657
谢谢兄弟,不加条件也行!

xms77 发表于 2013-2-21 12:32:51

回复 2# 298311657
如果我要按时间段来查询某个字段的最大值,代码如下,但是查询结果为空,不知道是不是时间格式问题。数据库的'DT'字段定义的是Date/Time格式。帮我看下原因,谢谢!
$RS.Open("SELECT Max(AdjustZ) as Maxvalue FROM ZHeightRecord1 where DT<#2/20/2013 11:30:00AM# and DT>#2/20/2013 11:03:59 AM#")
$Val = $RS.Fields("Maxvalue").value

298311657 发表于 2013-2-21 22:23:55

时间格式 2013/02/20 11:30:00

cashiba 发表于 2016-11-3 22:16:40

_dbOpen
_dbOpenRecordset()
这些自定义函数哪里有呢?
页: [1]
查看完整版本: 【已解决】如何查询access数据库某列的最大值?