Feeds
Artikel
Kommentare

Ich habe nach einer Möglichkeit in MSSQL ein “Mehrfach-Concat” durchzuführen. Dabei sollen ein Feld, das in mehreren Zeilen in der selben Spalte steht, in ein Feld zusammengefügt werden. Fündig geworden bin ich mit dieser interessanten Lösung (Link):

SELECT A.Artikel_PK ,
GroupNameConcat = REPLACE ((
          SELECT
              Bestellung_PK AS [data()]
          FROM X_ArtikelBestellung
          WHERE Artikel_PK = A.Artikel_PK
          ORDER BY
             Voice_PK
          FOR XML PATH ('')), ' ', ',')
FROM T_Artikel as A
ORDER BY A.Artikel_PK

In dem Beispiel wird eine Tabelle zurückgegeben mit den Spalten Artikel_PK und GroupNameConcat. In GroupNameConcat stehen für jeden Artikel die zugehörigen Bestellungen kommagetrennt.

Um das besser zu verstehen, siehe auch die entsprechende Microsoft-Erläuterung zu “For XML…”. Nachteil  ist in diesem Beispiel, dass alle Leerstellen durch ein Komma ersetzt werden. Wenn man nun ein nvarchar-Feld aneinanderfügen will, könnte man anstatt Bestellung_Pk z.B. Bestellung _PK + ‘;’ schreiben und das Replace weglassen. Dann wäre nur am Ende ein “;” zuviel, aber die Leerzeichen blieben erhalten.

In ASP.NET  Anwendung (VB.NET z.B. als Programmiersprache im Hintergrund) kann auf einfache Weise Multithreading verwendet werden. Wichtig ist dabei zu wissen, dass die geöffneten Threads unter bestimmten Voraussetzungen nicht unter dem selben Benutzer laufen, wie die ASP.NET Anwendung. Dies ist u.A. der Fall, wenn die ASP.NET – Anwendung unter einem bestimmten Nutzer ausgeführt werden soll (Siehe dazu auch MSDN – Impersonate). Dies wird in der Web.config festgelegt:

<identity impersonate="true"
          userName="domain\user"
          password="password" />

Mit diesem Nutzer wird dann auch der VB.NET – Code ausgeführt. So ist u.A. eine Authentifizierung an einer Datenbank über einen Windowsnutzer möglich. Wenn nun ein Thread gestartet wird, läuft dieser nicht direkt unter dem in der Web.config angegebenen Nutzer, sondern unter dem Nutzer ASPNET. Um den Thread auch unter dem aktuellen Nutzer auszuführen, muss dieser an den Thread übergeben werden. Der aktuelle Nutzer wird so ermittelt:

Dim identity As System.Security.Principal.WindowsIdentity = _
             System.Security.Principal.WindowsIdentity.GetCurrent

Diese Variable kann dann im Thread benutzt werden, um einen Code-Abschnitt mit dem ursprünglichen Nutzer auszuführen:

m_identity.Impersonate()

Letztens wollte ich ein Enum-Typen mit einer foreach-Schleife durchlaufen. Auf der Microsoft-Seite bin ich fündig geworden. Im Prinzip geht das Ganze so:

For Each strName As String In [Enum].GetNames(GetType(enumColumns))
             Dim intId As Integer = CInt([Enum].Parse(GetType(enumColumns), strName))
Next strName

Der Enum ist dabei “enumColumns”!

Es gibt interessante Werkzeuge (kostenlos), um eine Wohnungseinrichtung zu planen. Hier nur ein paar Links:

Autodesk® Homestyler™
Sweet Home 3D

Google SketchUp

Ich habe sie noch nicht genau angeguckt, aber wahrscheinlich eignen sich die ersten zwei Werkzeuge am Besten zum Einrichten einer kleinen Wohnung oder eines Hauses. In ein paar Wochen vielleicht mehr…

Auch wenn das Problem schon lange gelöst und bekannt ist. Nochmal alternierende Farbgebung in Tabellen und Matrizen der Reporting Services:

Wenn man Tabellen und Matrizen alternierend einfärben will, muss man auf Expressions für die Eigenschaft “background color” zurückgreifen. In dem Blog von Joe Webb findet sich für Tabellen ein Weg, Farben abwechselnd zu setzen. In den Kommentaren stehen auch Hinweise, wie dies für Matrizen umgesetzt werden kann. Im Prinzip wird immer mit einer IIF-Bedinungen und “mod 2″ auf eine fortlaufende Zahl eine andere Farbe gewählt.Die fortlaufende Zahl wird dabei direkt über Reporting Services-Funktionen generiert.

Ein anderer Weg ist, falls die Tabelle oder Matrix nicht im Bericht sortiert werden muss oder die Reporting Services-Funktionen zum Generieren der fortlaufenden Zahl nicht geeignet, auf SQL-Ebene per “Row_Number”-Funktion die Datensätze durchzunummerieren. Damit kann dann auch mit “mod 2″ und IIF-Bedingung eine alternierende Farbgebung erzeugt werden.

Ich hatte viele Warnungen (ohne große Auswirkungen) mit folgendem Text:

destination with the same identifier (name {figure...

Um die zu verhindern habe , habe ich die Anweisung zum Einbinden des Hyperref-Packetes direkt vor \begin{document} gesetzt. Damit sind alle Warnungen verschwunden.

Auf dieser Seite stehen weitere Hinweise zum Verhindern der Warnung.

Für das Report Viewer Control von den Microsoft Reporting Service 2005 lassen sich die möglichen Export-Formate und deren Verhalten umfangreich konfigurieren. Dies erfolgt zum großen Teil in der Datei:

C:\Program Files\Microsoft SQL Server\MSSQL.2\Reporting Services\
ReportServer\rsreportserver.config

Dort finden sich Einträge welche Extensions unter welchem Namen zum Export im Report Viewer Control zur Verfügung stehen. Weiterhin kann das Verhalten dieses Extensions an den Stellen beeinflusst werden. Ein solcher Eintrag sieht z.B. so aus:

<Extension Name="CSV" Type="Microsoft.ReportingServices.Rendering.CsvRenderer.CsvReport,
Microsoft.ReportingServices.CsvRendering">
  <DeviceInfo>
    <NoHeader>true</NoHeader>
    <Encoding>ASCII</Encoding>
  </DeviceInfo>
</Extension>

In der Microsoft MSDN finden weitere Einstellungsmöglichkeiten für CSV: Link!

Ich benutze Windows 7 64 Bit als Betriebssystem. Zum Programmieren benutze ich momentan das M2M-Eclipse-Paket. Beim Benutzen des Properties-View kam es dabei zu sporadischen bis regelmäßigen Abstürzen von Eclipse (100% CPU-Last und keine Reaktion). Am Ende stellte sich heraus, dass die Logitech SetPoint-Software “Schuld” war. Sobald ich diese beendet habe, ist Eclipse nicht wieder abgestürzt.

Ich habe keine genaue Ursachen-Forschung unternommen, sondern verzichte in Zukunft auf die Logitech-Software.

Falls sich jemand wundert, warum er folgenden Fehler bekommt:

“Null or empty full-text predicate error in full text searching [...]”

Im SQL Server 2008 ist anscheinend die Auswertung von “and” und “or” Verknüpfungen geändert worden. Vorher wurde eine Verknüpfung von links nach rechts durchgegangen und dabei ausgewertet. Wenn z.B. in einer “or” Verknüpfung der aktuelle Teil “true” ergibt, wurde der Rest nicht mehr ausgewertet.

Hier wird beschrieben, wie man die Volltextabfrage umstrukturieren kann:  Link!

Eine Vermutung ist, dass das an der höheren Parallelisierung liegt, die es im SQL Server 2008 gibt?!

Der Reporting Server 2005/2008 stellt verschiedene Webservices bereit. Darüber können beispielsweise Reports erstellt werden. In .NET können sogenannte Proxy-Klassen dazu verwendet werden, um den Webservice zu benutzen. In einem Web-Projekt dazu einfach eine Web-Reference hinzufügen. Beim Erstellen dieser Reference die URL des Web-Service angeben. Der Name der Web-Reference steht anschließend für eine Proxy-Klasse, die in der Anwendung instanziiert werden kann.

Siehe auch folgendes Beispiel von Microsoft: Link

In dem Beispiel wird die Proxy-Klasse ReportingService2005 verwendet. Die Web-Reference muss also diesen Namen besitzen. Wenn die Web-Reference sich in einem Unterordner befindet, ändert sich die Instanziierung. Beispiel für Ordner Report:

new Report.ReportingService2005()

Hinweis: Beim Umstieg auf den SQL Server 2008 mit neuen Reporting Services funktioniert der WebService “ReportingService” nicht mehr richtig. Man sollte auf die Version mit 2005 umsteigen!

Ältere Artikel »