2009-08-24 32 views
0

我有一个查询,当我在sqlDataSource控件(向导测试按钮)中测试它时,但它在我运行页面时不起作用。我确保gridview具有正确的sqlDataSource控件作为其源。这真让我抓狂。sqldatasource问题

这发生过其他人吗?

编辑:

它有事情做这一行的where子句中(这是Oracle数据库)

Where (upper(AA.Email_Address)=UPPER(:Email_Address) OR :Email_Address IS NULL) AND 
(upper(AA.Display_Name) Like UPPER('%' || :Display_Name || '%') OR :Display_Name IS NULL) 

页的工作与每个搜索子句中的个体,但不是当他们是两者都有(它在sqlDataSource向导中同时运行两个参数,但不在页面运行时运行)

=========================== ================================================== ========

编辑:

感谢您的查询建议,看起来更干净。

我确实已将默认的CancelSelectOnNullParameter属性设置为“true”。当我将其更改为false时,该页面将不会显示。我得到这个消息

“服务器应用程序不可 你试图在此Web服务器上访问的Web应用程序是当前不可用,请打。‘在Web浏览器中刷新’按钮重试您的请求 管理员注意:在Web服务器的应用程序事件日志中可以找到详细描述此特定请求失败原因的错误消息。请查看此日志条目以发现导致此错误发生的原因。“

====== ==========================

这是查询工作前CEPT当我运行网页

所有的
SELECT * 
FROM a Left Join b on b.institution_code=a.institution_code 
WHERE 
     (upper(a.Login_Name)=UPPER('%' || :Login_Name || '%') OR :Login_Name IS NULL) 
    AND (upper(a.Display_Name) Like UPPER('%' || :Display_Name || '%') OR :Display_Name IS NULL) 
    AND (upper(a.Email_Address)=UPPER(:Email_Address) OR :Email_Address IS NULL) 
    AND ((a.institution_code=:institution_code) OR :institution_code IS NULL) 
    AND (upper(b.institution_desc) Like UPPER('%' || :institution_desc || '%') OR :institution_desc IS NULL 

回答

0

首先,你会做的更好写这样的查询从WHERE子句中删除“OR的:

WHERE 
     Upper(AA.Email_Address) = Upper(COALESCE(:Email_Address,AA.Email_Address)) 
    AND Upper(AA.Display_Name) LIKE Upper('%' || COALESCE(:Display_Name,AA.Display_Name) || '%') 

关于你提到的具体问题,你可能会遇到CancelSelectOnNullParameter属性。只要将其设置为“假”,你就会好起来的。

0

您是否设置了正确的数据源的ProviderName属性?

尝试设置

Provider="System.Data.OracleClient" 

属性,在SqlDataSource的标签。

+0

这就是我作为ProviderName属性 – 2009-08-24 18:08:54

+0

你可以检查你的Windows事件日志吗?在“应用程序日志”中,您将看到一个ASP.NET警告,它可能会给你一些关于服务器端到底发生了什么的细节。 另一件需要注意的事情是正确的连接字符串,并且oracle客户端连接的防火墙端口应该是开放的。 – 2009-08-25 07:11:36