sqldatasource问题

时间:2009-08-24 16:41:57

标签: asp.net sqldatasource

我有一个查询,当我在sqlDataSource控件(向导测试按钮)中测试它时,但是当我运行页面时它不起作用。我确保gridview具有正确的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服务器的应用程序事件日志中找到详细说明此特定请求失败原因的错误消息。请查看此日志条目以了解导致此错误发生的原因。 “

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

除了我运行页面

之外,这是一个有效的查询
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

2 个答案:

答案 0 :(得分: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财产。只要把它设置为“假”就可以了。

答案 1 :(得分:0)

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

尝试设置

Provider="System.Data.OracleClient"
您的SqlDataSource标记中的

属性。