我可以在 DCount 函数中引用运行时生成的查询吗?



我想使用函数DCount("[fieldname]", "qryname"(来计算我在私有Sub中创建的动态查询返回的记录数。 在我的潜艇中,我正在做这样的事情

    Private Sub getRecs(ByVal stype, ByVal whichrecs, ByVal sorder)
      Dim x as String
      x = "SQL statement...
        .
        .
        .
      "
      Me.RecordSource = x
      Me.Requery
    End Sub

查询是在运行时创建的,所以我无法提前保存它并像 DCount("[字段名称]"、"qryname"(那样引用它。

我尝试过像这样在 Sub 内部引用

tcount = DCount("[fieldname]", "x")
tcount = DCount("[fieldname]", "Me")
tcount = DCount("[fieldname]", x)
tcount = DCount("[fieldname]", Me)

前两次尝试导致错误消息运行时 3078 - 访问找不到名为"x"或"Me"的查询。 如果没有引号,则错误为运行时 3163 - 该字段太小,无法接受尝试添加的数据量。

我可以在 DCount 函数中引用运行时生成的查询吗?

谢谢。

你想使用DCount有什么特别的原因吗?像这样的替代方案应该有效:

Function CountValues(SelectStatement As String, FieldName As String) As Long
  Dim RS As Recordset
  Set RS = CurrentDb.OpenRecordset("SELECT Count(" + FieldName + ") FROM (" + SelectStatement + ")")
  CountValues = RS(0) 
End Function

因此:

tcount = CountValues(Me.RecordSource, "[fieldname]")

最新更新