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

问题描述 投票:0回答:1

我有一个VBA代码,用于检查用户输入的年份和月份是否有数据,并由此决定向用户发送哪个查询。这是代码:Sub 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个查询中关系是复杂的)

ms-access access-vba
1个回答
1
投票

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

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

   DoCmd.SetParameter "[äëðñ ùðä]", year
   DoCmd.SetParameter "[äëðñ çåãù]", month
   DoCmd.OpenQuery "äëðñåú äåöàåú", acViewNormal, acReadOnly
© www.soinside.com 2019 - 2024. All rights reserved.