我现在在3个城市拥有相同的访问权限副本。他们工作得很好。他们99%相同,只有一个小差异。它们中的每一个都有两个视图,它们使用不同的odbc连接到不同的城市DB(所有这些数据库都是SQL Server 2005)。视图充当两个非常简单的查询的数据源。
然而,当我尝试为新城市制作新副本时,我发现其中一个简单的内部查询返回正确的行数,但所有数据都是空的,而另一个查询正常运行。
我检查了这两个视图的数据,数据是否正确。
造成问题的原因就像
Select * from View_Top where Name = "ABC"
当记录集返回时,甚至rs!Name给我一个空字符串。
请帮忙
答案 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字段,如果省略金额,一切正常。虽然我不明白为什么。