2016-11-03 4 views
0

Ich verwende SSRS 2008 R2 und erstelle einen Bericht mit Report Builder 3.0. Ich muss 2 Datenbanken abfragen, eine Zentrale hier in der Zentrale und eine Satelliten in Australien. Beide haben eine Tabelle namens Käufer. Die Satelliten-Site enthält nur eine kleinere Menge von Daten, die wir zu einem späteren Zeitpunkt in die Zentrale zurückbringen werden. Sie haben die folgenden Felder; idBuyer, IdCustomer, DateRegistered Im Moment möchte ich alle Datensätze in der Satellite-Site für Kunden (idCustomer) abfragen, die nicht bereits in der gleichen Tabelle in der zentralen Datenquelle sind. Ich benutze ein LookUp mit idBuyer, um die Datensätze in ein Tablix. Jetzt möchte ich nur für die Ergebnisse filtern, wo idCustomer aus dem Satelliten-Datensatz nicht in denSSRS mehrere Datasets: So zeigen Sie nur Datensätze an, die nicht in beiden Datasets enthalten sind

Zentral Datensatz ist

Alle Zeiger würde geschätzt, wie ich nehme an, das ist ziemlich einfach sein würde, aber ich bekomme es nicht zur Arbeit

Antwort

0

Im Idealfall sollten Sie dies in SQL tun. Es würde den Bericht viel schneller machen.

SELCT ID FROM SATELLITE WHERE ID NOT IN (SELECT ID FROM CENTRAL) 

aber das ist nicht immer möglich, so dass Sie die Satelliten db filtern können, wo die ID nicht in der CENTRAL-ID ist die INSTR ing funtion verwenden.

Für Ihre Filter, stellen Sie die Expression zu idBuyer

=IIF(INSTR("|" & Fields!idBuyer.Value & "|", "|" & JOIN(LookupSet(1, 1, Fields!idBuyer.Value, "CENTRAL"), "|") & "|"), 0, 1) 

Dies wird eine Zeichenfolge der IDs von CENTRAL db und schauen, ob die ID aus der Satelliten-DB in ihm erstellen. Wenn die ID in der CENTRAL db ist, wird die Zeile eine 0, sonst 1. setzen Sie den Wert auf 1.

enter image description here

Die Pipes (|) verwendet wird, um die Werte zu trennen, so ist es doesn t finden Sie 25, wenn Sie 125 oder 251 in der Liste haben.

Verwandte Themen