【问题标题】:Recordset returns the correct number of row but with all field emptyRecordset 返回正确的行数,但所有字段为空
【发布时间】:2009-10-24 08:44:35
【问题描述】:

我现在在 3 个城市运行相同的访问权限副本。他们工作得很好。它们 99% 相同,只有一个细微差别。他们每个人都有两个视图,它们使用不同的 odbc 连接到不同的城市数据库(所有这些数据库都是 SQL Server 2005)。这些视图充当一些两个非常简单的查询的数据源。

但是,当我尝试为新城市制作新副本时,我发现其中一个简单的内部查询返回了正确的行数,但所有数据都是空的,而其他查询正常运行。

我检查了这两个视图的数据,数据是正确的。

导致问题的原因是

Select * from View_Top where Name = "ABC"

当记录集返回时,甚至 rs!Name 都会给我一个空字符串。

请帮忙

【问题讨论】:

  • 请发布 VIEW_TOP 的定义以及它所依赖的任何视图。您可能正在使用 OUTER JOIN 并从 JOIN 的错误一侧拉出列。
  • 虽然这不太可能是您的问题的原因,但 NAME 是 Access/Jet/ACE 中的保留字,最好避免使用保留字。安装的 Access 版本的变化可能会导致在不同 PC 上出现此类问题的不同结果。但这只是一般性建议,而不是问题的可能原因。
  • 从这个位置,您可以从 MS SQL Management Studio 运行相同的查询并获得结果吗?

标签: sql sql-server-2005 ms-access recordset


【解决方案1】:

这个查询对我来说有点不对劲,尝试使用 ' 而不是 " 来分隔你的 ABC 字符串...

【讨论】:

    【解决方案2】:

    如果没有 VIEW_TOP 的定义,很难判断你的错误在哪里,但是如果你得到行但列是 NULL 我猜 VIEW_TOP (或它依赖的东西)包括一个 OUTER JOIN 并且你从 JOIN 的错误一侧拉出列。

    【讨论】:

      【解决方案3】:
      SELECT
          acc.FIRM,
          acc.OFFICE,
          acc.ACCOUNT,
          a.CONV_CODE,
          a.OTHER_AMT AS AMOUNT,
          a.TRANS_DATE,
          a.DESCRIPTN,
          a.JRNAL_TYPE
      FROM AccTrans AS a LEFT OUTER JOIN ACC AS acc ON a.ACCNT_CODE = acc.ACCNT_CODE
      WHERE
          (acc.SUN_DB = 'IF1') AND
          (ANAL_T0 <> '')  AND
          (a.TRANS_DATE < '20091022') AND
          (a.JRNAL_TYPE = 'MATCH');
      

      这是视图的定义。实际上,在 Access 中,我能够查看此查询的结果,它有数据。这就是为什么我知道记录集返回正确的行数(通过计算代码中的循环)。抱歉我的错误,我在 where 子句中使用 Account,select 语句应该像

      select Firm, Office, Account, Trans_Date.... from
      view_top
      where account = 'ABC'
      

      查询返回正确的行数,但所有行数据(甚至帐户字段)都是空字符串。

      然后我发现真正导致问题的是 AMOUNT 字段,如果我省略了金额,一切正常。虽然我不明白为什么。

      【讨论】:

        【解决方案4】:

        view_top 定义

        “姓名、账户、账户代码、金额、日期……”

        选择语句:

        Select Name, Account, AccountCode, Amount, Date 
        From View_Top Where Name = 'xxx'
        

        我发现如果我省略了 Amount,一切正常。

        虽然我还是不明白为什么。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-08-09
          • 1970-01-01
          • 1970-01-01
          • 2019-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多