我有一个与SQLDataSource绑定的DropDownList。我在SQL Management Studio中运行完全相同的查询,它会提取所有记录,但是当我在SQLDataSource中执行它时,它不会拉出我刚添加的两条记录。为什么呢?
SELECT [RepID], [ManagerID]
FROM MyDB1.dbo.Reps
WHERE [Role] = 'Manager' AND ISNULL(RepType, 'Account Exec') <> 'House Account Exec'
union
SELECT [RepID], [ManagerID]
FROM MyDB2.dbo.Reps
WHERE [Role] = 'Manager' AND ISNULL(RepType, 'Account Exec') <> 'House Account Exec'
问题行似乎是RepType字段。我确实为我想要提取的记录验证它是 NULL 。我已经花了一个多小时。有人遇到过这样的事吗?有什么建议吗?
SMSS的输出
RepID ManagerID
----------- -----------
1 1
9 9
10 10 <- this guy does not show in DropDown
42 42
333 333 <- and this guy
1026 1026
1065 1065
2014 1
3009 3009
3025 3025
5000 5000
5002 5002
6000 6000
9000 9000
这不是唯一的问题。即使删除了ISNULL(RepType,'Account Exec')条件,它仍然不会拉回repID = 333,而它会执行pul repID = 10.
我发现有一个repID = 10的副本,但它仍然应该在SSMS和下拉列表中表现相同。
答案 0 :(得分:1)
这种行为不应该是这样的。这可能是一个错误,但到目前为止我发现了
RepID = 10的Rep代表两条记录,这可能是一个问题。
在这两个表中,一个表有reptype ='House Account Exec',而在另一个表中它是Null。当在SMSS和SQLDatasource中执行查询时,此条件的插入方式不同。
还有一些我无法解决的问题。例如,repID = 333,显示在SMSS中,但不显示在下拉列表中。
答案 1 :(得分:0)
建议将SQL查询转换为存储过程而不是adhoc SQL语句。