DMin 不会阅读第一列
DMin Won't Read First Column
我在 Access 2010 中有一个 Sub,它应该在三列之间提取最低值。问题是它似乎没有在阅读第一列。我已经检查拼写一千次了,我不知道还有什么可能是错误的。任何建议将不胜感激。
Private Sub UpdatePriority_Click()
Const Superior As Long = 9999
Dim MinGeoPri As Variant
Dim MinStrPri As Variant
Dim MinSOPri As Variant
MinGeoPri = Nz(DMin("[GeoPri]", "[Projects]", "Projects.ProjNo = Activity.ProjNo"), Superior)
MinStrPri = Nz(DMin("[StrPri]", "[Projects]", "Projects.ProjNo = Activity.ProjNo"), Superior)
MinSOPri = Nz(DMin("[SOPri]", "[Projects]", "Projects.ProjNo = Activity.ProjNo"), Superior)
Overall_Priority.Requery
Overall_Priority = IIf(((IIf([MinStrPri] < [MinGeoPri], [MinStrPri], [MinGeoPri]))) < [MinSOPri], ((IIf([MinStrPri] < [MinGeoPri], [MinStrPri], [MinGeoPri]))), [MinSOPri])
End Sub
您的代码存在几个问题。
1) 我不知道 Activity.ProjNo
的来源,但 DMin 调用应该是:
DMin("[GeoPri]", "[Projects]", "Projects.ProjNo = " & Activity.ProjNo)
使用 WHERE 字符串之外的参数。
2) 如果您随后设置相同的(字段?变量?),Overall_Priority.Requery
应该做什么?
3) 你的 IIf 语句是一场噩梦,我很确定括号有问题。 :)
好多了:使用此处找到的 VBA Min() 函数:http://www.mrexcel.com/forum/excel-questions/132404-max-min-visual-basic-applications.html
Public Function Min(ParamArray values() As Variant) As Variant
Dim minValue As Variant, Value As Variant
minValue = values(0)
For Each Value In values
If Value < minValue Then minValue = Value
Next
Min = minValue
End Function
ParamArray 非常适合这类事情(未知数量的参数)。
然后:
Overall_Priority = Min(MinGeoPri, MinStrPri, MinSOPri)
编辑:测试函数
Public Sub MyMinTest()
Debug.Print Min(47, 11, 88)
End Sub
我在 Access 2010 中有一个 Sub,它应该在三列之间提取最低值。问题是它似乎没有在阅读第一列。我已经检查拼写一千次了,我不知道还有什么可能是错误的。任何建议将不胜感激。
Private Sub UpdatePriority_Click()
Const Superior As Long = 9999
Dim MinGeoPri As Variant
Dim MinStrPri As Variant
Dim MinSOPri As Variant
MinGeoPri = Nz(DMin("[GeoPri]", "[Projects]", "Projects.ProjNo = Activity.ProjNo"), Superior)
MinStrPri = Nz(DMin("[StrPri]", "[Projects]", "Projects.ProjNo = Activity.ProjNo"), Superior)
MinSOPri = Nz(DMin("[SOPri]", "[Projects]", "Projects.ProjNo = Activity.ProjNo"), Superior)
Overall_Priority.Requery
Overall_Priority = IIf(((IIf([MinStrPri] < [MinGeoPri], [MinStrPri], [MinGeoPri]))) < [MinSOPri], ((IIf([MinStrPri] < [MinGeoPri], [MinStrPri], [MinGeoPri]))), [MinSOPri])
End Sub
您的代码存在几个问题。
1) 我不知道 Activity.ProjNo
的来源,但 DMin 调用应该是:
DMin("[GeoPri]", "[Projects]", "Projects.ProjNo = " & Activity.ProjNo)
使用 WHERE 字符串之外的参数。
2) 如果您随后设置相同的(字段?变量?),Overall_Priority.Requery
应该做什么?
3) 你的 IIf 语句是一场噩梦,我很确定括号有问题。 :)
好多了:使用此处找到的 VBA Min() 函数:http://www.mrexcel.com/forum/excel-questions/132404-max-min-visual-basic-applications.html
Public Function Min(ParamArray values() As Variant) As Variant
Dim minValue As Variant, Value As Variant
minValue = values(0)
For Each Value In values
If Value < minValue Then minValue = Value
Next
Min = minValue
End Function
ParamArray 非常适合这类事情(未知数量的参数)。
然后:
Overall_Priority = Min(MinGeoPri, MinStrPri, MinSOPri)
编辑:测试函数
Public Sub MyMinTest()
Debug.Print Min(47, 11, 88)
End Sub