【问题标题】:Using DCount with Access VBA when table is linked from SQL server从 SQL Server 链接表时将 DCount 与 Access VBA 一起使用
【发布时间】:2012-09-04 21:36:30
【问题描述】:

我在访问 SQL 2005 表的 Access 2007 数据库中遇到了 DCount 问题。

如果表“tblPART_CandD_MASTER”是本地的,则以下代码可以正常工作

DCount("*", "tblPART_CandD_MASTER", ("[InvalidContract] =0 and [MissingContract] =0  and DateTimeSubmittedtoDB = #" & Me.txtDateTime & "#"))

我已将所有本地表移至 SQL 2005 服务器。现在,上面的代码每次都返回零。

如果我按以下方式分解代码,它也可以工作:

DCount("*", "tblPART_CandD_MASTER", ("[InvalidContract] =0 and [MissingContract] =0"))

DCount("*", "tblPART_CandD_MASTER", ("DateTimeSubmittedtoDB = #" & Me.txtDateTime & "#"))

由于上述两行代码有效,我对为什么这行不通感到沮丧:

DCount("*", "tblPART_CandD_MASTER", ("[InvalidContract] =0 and [MissingContract] =0  and DateTimeSubmittedtoDB = #" & Me.txtDateTime & "#"))

【问题讨论】:

  • 当您说不起作用时,您的意思是计数错误吗?您确定日期格式没有问题吗?几乎总是最好将格式设置为年、月、日格式以避免任何歧义。
  • 计数返回零。我的第一个 inclanation 是日期格式,但是如果代码的日期格式有问题: DCount("", "tblPART_CandD_MASTER", ("DateTimeSubmittedtoDB = #" & Me.txtDateTime & "#")) 应该也返回零。但是,这有效并返回正确的值。为什么上面的代码可以工作,但这段代码不能 DCount("", "tblPART_CandD_MASTER", ("[InvalidContract] =0 and [MissingContract] =0 and DateTimeSubmittedtoDB = #" & Me.txtDateTime & "#"))
  • 我使用 Access Data Projects 并使用 Dcount ALL 时间。我不明白你的困难是什么。

标签: sql-server vba ms-access-2007


【解决方案1】:

我发现稍微摆弄一下就可以了:

=DCount("*","dbo_tblPART_CandD_MASTER",("InvalidContract=false And MissingContract=false And  DateTimeSubmittedtoDB=#" & [DateTimeSubmittedtoDB] & "#"))

对我来说困难在于位数据类型在 MS Access 中显示为 False,即使 SQL Server 中的值为 Null。有办法解决这个问题。我在SQL server中运行发现了问题:

select count(*) 
from tblPART_CandD_MASTER 
where MissingContract=0 
and InvalidContract=0 
and DateTimeSubmittedtoDB={d '2012-09-21'}

【讨论】:

  • 谢谢雷穆。我非常感谢您的回复。不幸的是,这仍然不起作用,返回值为零。我根据您的建议进行了更改: DCount("*", "tblPART_CandD_MASTER", ("[InvalidContract] =false and [MissingContract] = false And DateTimeSubmittedtoDB = #" & [Me.txtDateTime] & "#")) 基于表中的数据,这应该返回 3 但只返回 0 。
  • 在 SQL Server 中运行查询时会发生什么?你得到了正确的结果吗?
  • 是的,Remou,我在 SQL 中确实得到了正确的结果,并且没有空值,它们都是 '0' 这真的让我摸不着头脑。
【解决方案2】:

我创建了一个不优雅的解决方案。我将 SQL 表中的相关数据提取到本地访问表中,然后在本地表上进行 DCount 操作。宁愿不这样做,但我需要把这个问题抛在脑后。非常感谢大家的意见。

【讨论】:

    猜你喜欢
    • 2021-12-14
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    相关资源
    最近更新 更多