在vba中使用用户定义的参数

时间:2008-12-10 17:56:35

标签: vba ms-access access-vba

我有一个访问数据库,可以将查询输出到excel文件。该查询使用日期参数来运行。该参数由用户选择。我想在导出的文件名中使用该参数。如何用最少的代码完成它。

01 01 09

好的新年开始了。对不起,但我正在度假。

详情。

我有一个以Excel格式输出报告的访问数据库,该报告依赖于用户选择的日期参数。通过具有弹出日历的文本框(text100)选择此参数。我想在文件名中使用文本框中的日期(text100)。

2 个答案:

答案 0 :(得分:2)

您必须负责询问参数。我喜欢使用可以通过全局函数获取/设置的全局参数 - 这样它们可以在任何地方设置,查询也可以访问它们。

在模块中只需要几个子/函数:

Some Module

Dim vParam1 as variant
Dim vParam1 as variant

Public Sub ParameterSet(byval pParamName as String, byval pParamValue as variant)

Select Case pParamName 
  Case "Param1": vParam1 = pParamValue 
  Case "Param2": vParam2 = pParamValue 
  Case Else
    msgbox pParamName & " parameter not defined"
End Select

End Sub

Public Function ParameterGet(byval pParamName as String) as variant

Select Case pParamName 
  Case "Param1": ParamGet = vParam1 
  Case "Param2": ParamGet = vParam2 
  Case Else
    msgbox pParamName & " parameter not defined"
End Select

End Sub

然后在您的查询中(删除日期参数)

WHERE Field1 = ParameterGet("Param1")

然后在您运行导出的代码中

Private Sub Export_Click()

  dim vParam1 as variant

  vParam1 = inputbox("Enter the parameter:")

  ParameterSet "param1", vParam1

  Transferspreadsheet blah, blah, FileName:= vParam1 & ".xls"

End Sub

显然这段代码需要稍微调整才能编译......: - )

答案 1 :(得分:1)

我很明显你要解析文件名中的日期,然后使用这个日期来执行查询......如果这不是你想要的,请重新制定问题。

我假设最后一部分非常明显:将字符串转换日期与查询字符串的其余部分连接起来,并将其提交给执行。

不太明显的部分是解析。 您需要定义文件名格式。是吗:

  • “OUTDATA-YYYYMMDD”
  • “OUTDATA _YY _MM _DD”
  • “DD _MM _YYY _OUTDATA”
  • 或其他什么?

我们需要知道令牌的相对位置(年,月,日和普通文件名)。

假设“YYYY_ MM_ DD_ OUTDATA.DAT”,这是一个想法......

function toQueryDate(aFileName as String) as Date
Dim theQueryDate as Date
Dim theParsedDate as String

theParsedDate=Mid(aFileName,1,4)+"/"+Mid(aFileName,6,2)+"/"+Mid(aFileName,9,2)
'IMPROVE:there's no error checking here.... we could see if the individual tokens are numbers

On Error Resume Next
theQueryDate=Cdate(theParsedDate)
If err.number then
   Msgbox "Bad filename: "+aFilename
   End 'or something else less fatal 
Endif

'we should be OK so:
toQueryDate=theParsedDate
End function