2017-08-25 18 views
1

这可能是一个基本的格式问题,但由于某种原因,我无法找到解决方法。我使用的场景是我想使用VBA从给定类别的表中的一个字段中查找最高数字(在同一个表中的另一个字段中标识)。我有八类,各有不同的数字(例如)使用Access VBA(DMax)函数在Where /条件列中使用表格字段和变量

ATD 500 
ATD 250 
ATD 700 
MLK 500 
MLK 120 
PTO 900 

我认为要做到这一点,最好的办法是在DMAX功能,但由于某种原因,我遇到的语法错误无论怎样我试着写它。

我工作,到目前为止,该代码是:

Dim HighestNumber As Variant 
Dim HighCategory As Integer 

HighCategory = InputBox("Please enter data", "ENTER", "ENTER") 

HighestNumber = DMAX("[SaleValue]", "SalesTable", "[SalesCategory] = '" & HighCategory & "'") 

(为了澄清,[SaleValue]和[SalesCategory]是在访问表 “SalesTable” 两个栏,和我m试图设置它,以便用户可以输入一个SalesCategory并获得该类别的最高SaleValue。我希望能够将该值存储在某处以备后用。)

每当我运行这个,我碰到了运行时错误'5',最后一行无效的过程调用。我相当肯定这是一个语法错误,但我无法理解为什么。我试着阅读本网站

https://msdn.microsoft.com/VBA/Access-VBA/articles/application-dmax-method-access

但他们专注于硬编码标准,我无法找到如何使用DMAX,其中,标准应该由用户来指定一个很好的例子。

感谢您提供任何帮助!

编辑:更改代码如下产生

Dim HighestNumber As Long 
Dim HighCategory As String 

HighCategory = InputBox("Please enter data", "ENTER", "ENTER") 

HighestNumber = DMAX("[SaleValue]", "SalesTable", "[SalesCategory] = '" & HighCategory & "'") 
+0

似乎有效,但你在你的'DMAX'月底缺少一个右括号( 'HighestNumber = DMAX(“[SaleValue]”,“SalesTable”,“[SalesCategory] ​​='”&HighCategory&“'”)'。当然不是吗? –

+0

Erik von Asmuth - 谢谢您的回复!这实际上是我的一个复制粘贴错误 - 应该有一个括号,并且在我的实际代码中有一个,我现在会更正它 – jahamj

回答

1

你指定的HighCategory是一个整数相同的错误,但是这应该是字符串或变体,至于是不是这样“ ATD“等?此外,你的HighValue变量是一个变体,应该可能是一个数字(我实际上考虑在这里使用LONG而不是INT)。

我假设一个SalesCategory的例子是“ATD”,因此最高值(以及DMAX将返回的)应该是700?

这是对代码的微小调整,这应该按照您的意图工作。我还检查无效的项目在这里(NZ),并将结果转换为长整型(CLng函数)

Dim lngHighestNumber As Long 
Dim strHighCategory As String 

strHighCategory = InputBox("Please enter data", "ENTER", "ENTER") 

lngHighestNumber = Nz(CLng(DMAX("[SaleValue]", "SalesTable", "[SalesCategory] = '" & strHighCategory & "'")), 0) 
+0

Thanks!是的,没错,它应该返回最高值类别指定。我将HighCategory更改为一个字符串,并将HighValue设置为一个Long,但它产生相同的错误。我觉得这可能是一个简单的问题,我很过分。不明白为什么这不运行。当我使用调试器时,它总是在DMax函数中断开,我无法确定它是否与变量或与访问表混合。 – jahamj

+0

Daft问题,您已将表中的SalesValue字段*设置为数值而不是字符串值,是的? – AdzzzUK

+0

感谢您的回复!是的,这是Access中的“数字”列。 – jahamj

相关问题