0

我想使用函数 DCount("[fieldname]", "qryname") 来计算从我在私有 Sub 中创建的动态查询返回的记录数。在我的 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("[fieldname]", "qryname") 一样引用它。

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

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

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

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

谢谢你。

4

1 回答 1

1

您想使用 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]")
于 2013-10-09T20:53:54.490 回答