проблема sqldatasource - PullRequest
       10

проблема sqldatasource

0 голосов
/ 24 августа 2009

У меня есть запрос, который работает, когда я тестирую его в элементе управления sqlDataSource (кнопка тестирования мастера), но он не работает, когда я запускаю страницу. Я убедился, что gridview имеет правильный элемент управления sqlDataSource в качестве источника. Это сводит меня с ума.

Это случилось с кем-то еще?

редактирование:

Это как-то связано с этой строкой в ​​предложении where (это база данных оракула)

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 с обоими параметрами, но не при запуске страницы)

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

Edit:

Спасибо за совет по вопросам, который выглядит чище.

У меня было свойство CancelSelectOnNullParameter по умолчанию, установленное на "true". Когда я изменяю его на false, страница не отображается. Я получаю это сообщение

"Серверное приложение недоступно Веб-приложение, к которому вы пытаетесь получить доступ на этом веб-сервере, в настоящее время недоступно. Нажмите кнопку «Обновить» в своем веб-браузере, чтобы повторить запрос. Примечание администратора. Сообщение об ошибке, подробно описывающее причину сбоя этого конкретного запроса, можно найти в журнале событий приложения веб-сервера. Пожалуйста, просмотрите эту запись в журнале, чтобы выяснить причину возникновения этой ошибки. «

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

Вот запрос, который работает, кроме случаев, когда я запускаю страницу

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 голосов
/ 24 августа 2009

Правильно ли установлено свойство ProviderName вашего источника данных?

Попробуйте установить

Provider="System.Data.OracleClient"

атрибут в вашем теге SqlDataSource.

0 голосов
/ 24 августа 2009

Прежде всего, вам лучше написать такой запрос, чтобы убрать 'И' из предложения where:

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», и все будет в порядке.

...