2011-02-07 56 views
2

我想这是一个简单的。我有以下声明:MS Access VBA:可选参数不假定默认值

Public Const TABLE_MY_TABLE As String = "my_table" 

Sub reloadProjections(startDate As String, endDate As String, _ 
         Optional tableName As String = TABLE_MY_TABLE) 

    'Processing occurs here 

End Sub 

出于某种原因,在未提供可选的参数,表名不承担TABLE_MY_TABLE的默认值。当你用调试器完成这一步时,TABLE_MY_TABLE被设置为“my_table”,tableName是一个空字符串。有谁知道为什么?

回答

1

它适用于我。你打电话过得怎么样?尝试说:

reloadProjections date(),date() 
+0

好悲伤 - 我感到哑巴! :)是的,它工作正常。我正盯着代码的错误。它正在传递参数(不按照我的假设使用默认值)并且拼写错了参数名称,所以它传递了一个空字符串。松散型语言的乐趣。感谢您指点我正确的方向。 – Adam

+5

呃,什么?松散类型?如果你打开OPTION EXPLICIT,你将无法编译带有拼写错误的变量名的代码。这是补救措施Access - 您还可以在所有模块中使用OPTION EXPLICIT。 –