Access交流中心

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

这段代码错在哪里呢?

唐家齐  发表于:2021-03-13 13:18:27  
复制

Sub Update()

Dim rst As New ADODB.Recordset, FNum As Double, FSumNum As Double, FCount As Long, FMaxP As Double, FTdays As Long, FBudget As Long
Dim HiPay As Double, Lopay As Double, FPitDiff As Double, FRange As Double, FPercent As Double, FCoutoff As Double, FWscores As Double

    FNum = DLookup("Benchmark", "Step13_Benchmark")
    FTdays = DLookup("Totaldays", "Step13_Benchmark")
    FMaxP = DLookup("MaxPoint", "Step13_Benchmark")
    FBudget = DLookup("Budget", "P4PVars")
    FPercent = DLookup("HiUp", "P4PVars")

   
    With rst
        .ActiveConnection = CurrentProject.Connection
        .CursorType = adOpenStatic
        .LockType = adLockOptimistic
        .Source = "SELECT * FROM Step12_Eligible_List order by P22 by desc "
        .Open
        Do Until .EOF
            FSumNum = FSumNum + .Fields("MADays")
            FWscores = FWscores + .Fields("P22") * .Fields("MADays")
                    
            If FSumNum > FNum Then
                FCount = .AbsolutePosition
                FCutOff = .Fields("P22")
                FRange = FMaxP - FCutOff
                FPitDiff = FSumNum + (FWscores - FCutOff * FSumNum) / FRange
                Lopay = Round(FBudget / FPitDiff, 2)
                HiPay = Round(Lopay * FPercent, 2)
                            
                Exit Do
            End If
            
            .MoveNext
                   
        Loop
    End With
    With Me
        .Text64 = FCount
        .Text72 = FSumNum
        .Text70 = FSumNum / FTdays
        .LowPay = Format(Lopay, "0.00")
        .HighPay = Format(HiPay, "0.00")
        .CutOffP = FCutOff
      
      
        
    End With

    

End Sub



错误的部分是这一段        .Source = "SELECT * FROM Step12_Eligible_List order by P22  desc "


如果去掉 desc,运行错误代码是 “无效使用NULL”。 DEBUG  显示在    FWscores = FWscores + .Fields("P22") * .Fields("MADays")


可是我的表里没空值呀。


如果加上DESC, 可以运行,但出不来正确结果,正确是加到 第64行退出,得出总值,可是它出来得是加了63行,有一行得字段数值没加上。。。。


 

Top
苏雨杭 发表于:2021-03-13 22:57:41

没有实例,不好弄。

不知道是字段写错呢还是判断条件有误。。。。。。。。



欧志华 发表于:2021-03-17 12:54:27

DLookup函数使用错误了

DLookup函数的使用方法

http://www.accessoft.com/article-show.asp?id=4380

另外就是记录集使用错误了 . 

应该在MoveNext前面加一行 rst.Update

其余的错误需要实际运行才知道 ,没有实例 只能靠猜



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