Doorgaan naar hoofdcontent

Report Builder / Reporting Services: Multi Value Column Printed in a Single Textbox

I got a request to print a column with multiple values in a single textbox. The first result looked like the upper part of the picture; the second one like the one below.

In my example I use the Noordenwind database with this SQL query, called DataSet2:



SELECT     dbo.Orders.[Order-id], dbo.Orders.Klantnummer, 
dbo.Producten.Productnaam
FROM         dbo.Orders INNER JOIN
             dbo.Orderinformatie ON dbo.Orders.[Order-id] = dbo.Orderinformatie.[Order-id]
INNER JOIN Producten ON Producten.Productnummer = dbo.Orderinformatie.Productnummer
Where Klantnummer ='VINET'



Data:



10248 VINET Queso Cabrales
10248 VINET Singaporean Hokkien Fried Mee
10248 VINET Mozzarella di Giovanni
10274 VINET Fl√łtemysost
10274 VINET Mozzarella di Giovanni
10295 VINET Gnocchi di nonna Alice
10737 VINET Konbu
10737 VINET Jack's New England Clam Chowder
10739 VINET Inlagd Sill
10739 VINET Filo Mix



In the first example I used a textbox with this expression:

=join(LookupSet(First(Fields!Klantnummer.Value, "DataSet2"), Fields!Klantnummer.Value, Fields!Productnaam.Value, "DataSet2"), ", ")

As you can see, we get duplicate values and the values are not sorted. To get this done I needed a function:



Function RemoveDuplicates(objItems As Object()) As Object()
System.Array.Sort(objItems) 

Dim intK As Integer = 0

For intI As Integer = 0 To objItems.Length - 1
If intI > 0 AndAlso objItems(intI).Equals(objItems(intI - 1)) Then
Continue For
End If
objItems(intK) = objItems(intI)
intK += 1
Next

Dim objSortedUnique As [Object]() = New [Object](intK - 1) {}

System.Array.Copy(objItems, 0, objSortedUnique , 0, intK)

Return objSortedUnique 
End Function



This function you have to add to the report property code:





This function we have to add to the expression in the textbox, like this:



=join(Code.RemoveDuplicates(LookupSet(First(Fields!Klantnummer.Value, "DataSet2"), Fields!Klantnummer.Value, Fields!Productnaam.Value, "DataSet2")), ", ")



Like we can see in the second example, the values are sorted and unique.

Reacties

Populaire posts van deze blog

Excel: VBA script om wachtwoord te verwijderen

Af en toe krijg ik een vraag om een wachtwoord van een Excel blad te halen. Doodsimpel met VBA. Hier een script dat ik gebruik:

Sub WachtwoordCrack()
    Dim a As Integer, b As Integer, c As Integer, d As Integer, _
    e As Integer, f As Integer, g As Integer, h As Integer, _ 
I As Integer, j As Integer, k, m As Integer
    Dim begin As Date, eind As Date
    Dim duur As String
    Dim objSheet As Worksheet
    begin = TimeValue(Time)
    On Error Resume Next
    For Each objSheet In Application.Worksheets
        For a = 65 To 66: For b = 65 To 66: For c = 65 To 66
            For d = 65 To 66: For e = 65 To 66: For f = 65 To 66
                For g = 65 To 66: For h = 65 To 66: For I = 65 To 66
                    For j = 65 To 66: For k = 65 To 66: For m = 32 To 126
                        ActiveSheet.Unprotect Chr(a) & Chr(b) & _ 
 Chr(c) & Chr(d) & Chr(e) & Chr(f) & _ 
 Chr(g) & Chr(h) & Chr(I) & Chr(j) & Chr(k) & Chr(m)
                        If Ac…

Excel 2013: uniek aantal in draaitabel

Tot en met versie 2010 was het in Excel lastig om in een draaitabel een uniek aantal (DISTINCT COUNT) te tellen. We geven een voorbeeld op basis van een verkoperslijst. In deze lijst kunnen we zien welke verkopers welke artikelen hebben verkocht. Willen we nu in een draaitabel laten zien hoeveel artikelen een verkoper heeft verkocht, dan krijgen we wel de aantallen maar niet de unieke aantallen te zien.


Om toch de unieke aantallen te laten zien, hebben we een aantal stappen nodig.

Op het moment dat we de draaitabel invoegen, krijgen we in Excel 2013 dit dialoogvenster:


Onderaan zien we daar een nieuwe optie: Deze gegevens toevoegen aan het gegevensmodel. Deze optie moeten we aanvinken, voor we op OK klikken.

We krijgen dan een iets ander beeld dan normaal:


Normaliter krijgen we alleen de veldnamen. Nu zien we er het woord Bereik boven staan.

Voor het voorbeeld heb ik nu Verkoper toegevoegd aan Rijen en Artikelomschrijving aan Waarden.

Het resultaat is identiek aan het bovenste plaatje…

Excel: Speedometer met handleiding

Inleiding Echte speedometers met wijzertjes en zo kent het reguliere Excel niet. We kunnen wel zelf zoiets maken. En dat gaan we doen.
Hoe maken we zoiets?§We typen vanaf cel A1:

cijfers 1 1 1 1 1 1 1 1 1 1 10
De onderste 10 is de optelsom van de bovenste waarden.
§We maken hier een ringgrafiek van. §We wissen de labels. §We laten deze ring 270 graden laten draaien.


§Voor het onderste stuk kiezen we dan: Geen opvulling.