0

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 サーバーのアプリケーション イベント ログで見つけることができます。このログ エントリを確認して、このエラーが発生した原因を特定してください。」

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

ページを実行する場合を除いて機能するクエリは次のとおりです

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
4

2 に答える 2

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プロパティに遭遇しています。「false」に設定するだけで問題ありません。

于 2009-08-24T16:49:00.137 に答える
0

データソースの正しい ProviderName プロパティを設定しましたか?

設定してみる

Provider="System.Data.OracleClient"

SqlDataSource タグの属性。

于 2009-08-24T16:52:40.610 に答える