访问查询再次要求一年和一个月

时间:2019-03-08 08:22:45

标签: ms-access access-vba

我有一个VBA代码,该代码检查用户输入的年份和月份中是否有数据,并以此确定发送用户的查询。 这是代码:        子macro1()

   Dim dbs As DAO.Database
   Dim qdf As DAO.QueryDef
   Dim qdf2 As DAO.QueryDef
   Dim year As Integer
   Dim month As Integer

   Set dbs = CurrentDb
   Set qdf = dbs.QueryDefs("äëðñåú äåöàåú")
   Set qdf2 = dbs.QueryDefs("äëðñåú äåöàåú àí àéï èåøðéø áçåãù")

   year = InputBox("What year would you want to get data from?")
   month = InputBox("What month would you want to get data from")

   If Not IsNull(DLookup("[÷åã èåøðéø]", "[àãîéðñèøöéä ùì úçøåéåú]", "DateDiff('m', [úàøéê çæøä îäèåøðéø], DateSerial(" & year & ", " & month & ", 1)) = 0")) Then
   qdf.Parameters("[äëðñ ùðä]") = year
   qdf.Parameters("[äëðñ çåãù]") = month
   DoCmd.OpenQuery "äëðñåú äåöàåú", acViewNormal, acReadOnly
   Else
   qdf2.Parameters("äëðñ ùðä") = year
   qdf2.Parameters("äëðñ çåãù") = month DoCmd.OpenQuery "äëðñåú äåöàåú àí àéï èåøðéø áçåãù", acViewNormal, acReadOnly
   End If
   End Sub

除了不输入查询的年份和月份之外,该代码非常有效,这意味着用户需要输入两次数据,并且他可以第二次输入不同的数据,这不能解决问题。 我认为主要原因是两个查询都是从其他查询中构建的(因为在1个查询中关系很复杂)

1 个答案:

答案 0 :(得分:1)

qdf.Parameters集合仅在使用qdf.Execute调用查询时有效。

如果您使用的是DoCmd.OpenQuery,则应该使用DoCmd.SetParameter设置参数。请注意,调用第一个DoCmd.OpenQuery后需要再次设置它们:

   DoCmd.SetParameter "[äëðñ ùðä]", year
   DoCmd.SetParameter "[äëðñ çåãù]", month
   DoCmd.OpenQuery "äëðñåú äåöàåú", acViewNormal, acReadOnly