12. August 2010 von Hendrik Schreiber
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.
Geschrieben in Programmieren | 0 Kommentare »
1. August 2010 von Hendrik Schreiber
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()
Geschrieben in Programmieren | 0 Kommentare »
12. Juli 2010 von Hendrik Schreiber
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”!
Geschrieben in Programmieren | 0 Kommentare »
22. Juni 2010 von Hendrik Schreiber
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…
Geschrieben in Allgemein | 2 Kommentare »
22. Juni 2010 von Hendrik Schreiber
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.
Geschrieben in Programmieren | 0 Kommentare »
9. April 2010 von Hendrik Schreiber
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.
Geschrieben in Latex | 0 Kommentare »
21. März 2010 von Hendrik Schreiber
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!
Geschrieben in Programmieren | 0 Kommentare »
9. Februar 2010 von Hendrik Schreiber
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.
Geschrieben in Programmieren | 0 Kommentare »
3. Februar 2010 von Hendrik Schreiber
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?!
Geschrieben in Programmieren | 0 Kommentare »
29. Januar 2010 von Hendrik Schreiber
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!
Geschrieben in Programmieren | 0 Kommentare »