Recordset返回正确的行数,但所有字段都为空

时间:2009-10-24 08:44:35

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

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

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

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

造成问题的原因就像

Select * from View_Top where Name = "ABC"

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

请帮忙

4 个答案:

答案 0 :(得分:0)

我的查询看起来有点不对,请尝试使用'而不是'来划分你的ABC字符串......

答案 1 :(得分:0)

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

答案 2 :(得分:0)

view_top定义

“姓名,帐户,帐户代码,金额,日期......”

选择语句:

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

我发现如果省略金额,一切正常。

虽然我仍然不明白为什么。

答案 3 :(得分:0)

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字段,如果省略金额,一切正常。虽然我不明白为什么。