Okt 012008
 

Ich darf mit dem Reporting Service vom SQL Server 2005 Reports erstellen. Das heisst, ich lasse sie vom Kollegen erstellen. 🙂

Wir haben in einem Webformular 7 Felder wo man Werte eingeben kann. Anhand dieser Felder soll dann der Report generiert werden. Es müssen aber nicht alle Felder mit Werten belegt werden. Sie dürfen auch leer bleiben. Das verursachte jetzt einige Probleme.

Der Reporting Server setzte die Parameter, die keinen Wert haben, auf NULL. Im Query wurde dann der Parameter @BRK=NULL gesetzt. Das führt natürlich immer zu 0 Resultaten.

Die Lösung lies dann auch eine Zeit auf sich warten. Aber per Zufall fand ich dann eine.

WHERE    
(Status.SKey = @SSK OR @SSK IS NULL) AND
(KvpLocation.KvpLocationKey = @KLK OR @KLK IS NULL)

Ganz wichtig ist, dass zuerst auf ein Wert geprüft wird. Erst nach dem OR auf NULL prüfen. Wenn es anders rum ist kann es zu ganz komischen Fehlern kommen. Dann kann es dazu kommen, dass SKey angeblich eine GUID ist und man doch bitte einen gültigen Wert übergeben soll.

Wenn man die Reihenfolge einhält sollte es klappen.

Ach ja, Parameter die nicht gebraucht werden müssen aus der Aufruf URL raus.

Das hier tut nicht:
http://SERVER/Reportserver$development?/KVP%2FeinfacheListe&ADat=01.01.1900%2000:00:00&BRK=&ASN=&SSK=KAPAU&KTK=2&PN=&KLK=&rs%3aClearSession=true&rs%3aFormat=PDF&rs%3aCommand=Render&rc%3aToolbar=False

Wenn man die rot markierten Parameter weg lässt, die sind ja leer, dann funktioniert die Abfrage. Ansonsten wird man immer 0 Records finden.

Jedenfalls bei uns.

Oder geht es einfacher?

Sorry, the comment form is closed at this time.