2009-08-24 13 views
0

Ich habe eine Abfrage, die funktioniert, wenn ich es im sqlDataSource-Steuerelement (Assistent Testschaltfläche) testen, aber es funktioniert nicht, wenn ich die Seite ausführen. Ich stellte sicher, dass die Gridview das richtige sqlDataSource-Steuerelement als Quelle hat. Das macht mich verrückt.sqldatasource Problem

Ist dies jemand anderem passiert?

edit:

es etwas mit dieser Linie in der where-Klausel zu tun hat (es ist eine Oracle-Datenbank)

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) 

Die Seite mit jedem der Suchklauseln einzeln funktioniert aber nicht, wenn sie beide dort (es funktioniert in SQLDataSource Assistenten Test mit beiden Parametern, aber nicht, wenn die Seite ausgeführt wird)

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

Bearbeiten:

Danke für die Abfrage Beratung, die sauberer aussieht.

Ich hatte die Standard-CancelSelectOnNullParameter-Eigenschaft auf "True" festgelegt. Wenn ich es in false ändere, wird die Seite nicht angezeigt. Ich erhalte diese Nachricht

„Server Application Unavailable Die Webanwendung auf diesem Webserver zuzugreifen, ist derzeit nicht verfügbar Bitte drücken Sie die. Schaltfläche‚Aktualisieren‘in Ihrem Web-Browser Ihre Anfrage erneut zu versuchen Administrator. Hinweis: eine Fehlermeldung, die Ursache dieses Anforderungsfehlers näher erläutert kann in dem Anwendungsereignisprotokoll des Webservers gefunden werden. Bitte diesen Protokolleintrag überprüfen, um herauszufinden, was diesen Fehler verursacht auftreten. "

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

Hier ist die Abfrage, die funktioniert cept wenn ich laufe die Seite

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 

Antwort

0

Zu allererst Sie besser tun, um die Abfrage wie folgt Schreiben des ‚OR des von der where-Klausel zu entfernen:

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) || '%') 

Was Ihre konkrete Frage, Sie laufen wahrscheinlich in die CancelSelectOnNullParameter Eigenschaft. Setzen Sie es einfach auf "falsch" und alles wird gut.

0

Haben Sie die richtige ProviderName-Eigenschaft Ihrer Datenquelle festgelegt?

Try

Provider="System.Data.OracleClient" 

Attribut in Ihrem SqlDataSource-Tag zu setzen.

+0

das ist, was ich als ProviderName Eigenschaft –

+0

haben Können Sie Ihr Windows-Ereignisprotokoll überprüfen? In Anwendungsprotokollen sehen Sie eine ASP.NET-Warnung, die Ihnen wenig Details darüber geben kann, was genau auf der Serverseite vor sich geht. Eine andere Sache, die zu betrachten ist, ist richtige Verbindungszeichenfolge und Firewall-Port für Oracle Client-Konnektivität sollte offen sein. –

Verwandte Themen