NerdishByNature

Eine MSSQL Split Funktion

Mal was anderes als Silverlight. Eine kleine Split-Funktion für den Microsoft SQL-Server, die einen String anhand eines Delimiters trennt und eine Tabelle zurück gibt. Und damit ich sie selbst nicht immer bei mir suchen muss hier und jetzt gepostet. Nicht zum ersten und wahrscheinlich auch nicht zum letzten mal zu finden in den unergründlichen Weiten des Internetz.

CREATE  FUNCTION [dbo].[fn_Split](@text VARCHAR(8000), @delimiter VARCHAR(20) = ' ')
RETURNS @Strings TABLE
(
  position INT IDENTITY PRIMARY KEY,
  value VARCHAR(8000)
)
AS
BEGIN

DECLARE @index INT
SET @index = -1

--SET @text = REPLACE(RTRIM(LTRIM(@text)),' ', '')

WHILE (LEN(@text) > 0)
  BEGIN
    SET @index = CHARINDEX(@delimiter , @text) 

    IF (@index = 0) AND (LEN(@text) > 0)
      BEGIN
        INSERT INTO @Strings VALUES (@text)
          BREAK
      END
    IF (@index > 1)
      BEGIN
        INSERT INTO @Strings VALUES (LEFT(@text, @index - 1))
        SET @text = RIGHT(@text, (LEN(@text) - @index))
      END
    ELSE
      SET @text = RIGHT(@text, (LEN(@text) - @index))
    END
  RETURN
END

ControlPopup, ein Silverlight Control

So, nu mal nen bissl Eigenwerbung. Ich habe es nach Monaten geschafft eines meiner Silverlight Controls Online und somit auch der Allgemeinheit zur Verfügung zu stellen.
Da ich das Control selbst produktiv benutze, wird es natürlich kontinuierlich weiterentwickelt. Ich würde mich aber über Feedback und Anregungen freuen und am meisten darüber, wenn mein Control auch verwendet wird ;)


10 Sekunden Timeout vom DomainService

Nachdem ich im verherigen Betrag kleine Probleme mit dem Firefox hatte ist nun der Internet Explorer dran.

Ich entwickle grad eine Silverlight Anwendung mit RIA-Services und bekomme seit einigen Tagen den allseits beliebten “Not Found” Fehler, wenn mein DomainService zu lang braucht. Zu lang heißt in meinem Fall nach 10 Sekunden bekomme ich den Fehler. Der Witz an der Sache ist, dass ich den Fehler nur im Internet Explorer bekomme und nicht Firefox.


Visual Studio Debugger greift nicht im Firefox

Ich hatte die letzten Tage wieder ein schönes Problem bei einem Kollegen gesehen. Er konnte ein Silverlight Projekt aus Visual Studio raus nicht im Firefox debuggen. Die Debugpunkte wurden nicht engesprochen. Da ich üblicherweise im Internet Explorer meine Projekte teste war mir das nicht bewusst hatte aber das gleiche Problem mit meinem Firefox.

Die Ursache liegt in der Crash Protection des Firefox ab Version 3.6.4, welche verhindert, dass der gesamte Browser hängen bleibt, wenn ein Plugin wie Adobe Flash oder Microsoft Silverlight auf einer Seite bzw. Tab abstürzt. Die Plugins laufen nun in einem Plugin-Container “plugin-container.exe” und nicht mehr unter der Hauptapplikation “firefox.exe”. Visual Studio hängt den Debugger allerdings immernoch an die firefox.exe.

Es gibt nun entweder die Möglichkeit in Visual Studio den Debugger an den Plugin-Container Prozess zu hängen oder die Config des Firefox schnell anzupassen. Ich habe mich für die zweite Variante entschieden. Und so geht’s:

  • Im Firefox in der Adress-Leiste “about:config” eingeben und die evtl. angezeigte Warnmeldung zur Kenntnis nehmen.
  • Nun den Eintrag “dom.ipc.plugins.enabled.npctrl.dll” suchen und den Wert auf “false” setzen.
  • Falls dieser nicht vorhanden ist, einen neuen Eintrag über rechte Maustaste, Neu, Boolean anlegen und als Name “dom.ipc.plugins.enabled.npctrl.dll” angeben. Der Wert ist “false”.
  • Zuletzt den Firefox neustarten.

Nun sollte das Debuggen auch wieder im Firefox gehen.

WPF, MVVM, Dispatcher und AsyncOperation

Hier geht es um das Feedback für den User, wenn z.B. eine Liste grad gefiltert wird. Das Ganze mit Hilfe von MVVM, dem Dispatcher und einer AsyncOperation unter WPF.

Wird eine Liste gefiltert kann dies manchmal auch etwas länger dauern. Als Feedback für den Anwender benutze ich einen BusyIndicator als Ladeanzeige. Ich habe zwei ViewModels, FilterViewModel und MainViewModel. In dem MainViewModel gibt es ein Property “IsBusy” über welches ich den BusyIndicator steuer. In dem FilterViewModel gibt es eine Methode Filter, die das Filtern der Daten für die Liste übernimmt und am Anfang das “IsBusy” Property auf true setzt.
Bisher sieht meine Methode wie folgt aus:


Feste Zeilen oder Spalten in Excel mit .NET

In meinem vorherigen Post hatte ich etwas zu einem fixierten Header beim Ausdrucken von Excel-Sheets geschrieben. Jetzt möchte ich noch zeigen wie man Zeilen und Spalten auch direkt in einem Excel-Sheet erstellen kann. Und wie immer natürlich mit .NET / C#

Ich benutze die Interop Assemblies von Office 2010, es sollte aber auch mit den Office 2007 Assemblies funktionieren.

_xlWorksheet.Activate();
_xlWorksheet.Application.ActiveWindow.SplitRow = 1;
_xlWorksheet.Application.ActiveWindow.FreezePanes = true;

Zuerst das entsprechende Datenblatt aktivieren. Als nächstes die Eigenschaft SplitRow bzw. SplitColumn setzten. Hier gebt ihr die Anzahl der zu fixierenden Zeilen bzw. Spalten an.
Als letztes muss noch angegeben werden, dass die angegebenen Bereiche gesperrt werden sollen. Dies geschieht über die Eigenschaft FreezePanes.

Wieder einmal kurz und knapp. Hauptsache es hilft :)

Feste Rows beim Drucken von Excel-Sheets

Ich habe einen kleinen Excel Exporter unter C# geschrieben. Erste Zeile ist der Header und darunter die Daten. Das Ganze im Querformat mit angepassten Printmargins usw. Da nicht immer alle Daten auf eine Seite passen, wäre es schön, wenn man schon alles ausdrucken muss, auf jeder Seite oben den Header zu haben.

Gesucht und gefunden. Für all jene, die das auch brauchen hier die eine! Zeile Code:

_xlWorksheet.PageSetup.PrintTitleRows = "A1";

_xlWorksheet ist mein aktives Datenblatt. Genaueres findet ihr hier: PageSetup.PrintTitleRows.

MVVM: PropertyChanged ohne String-Parameter

Das MVVM Pattern lebt davon und sonst geht’s auch kaum ohne, wenn die Oberfläche auf Änderungen von Eigenschaften im Code reagieren soll. Die Implementierung des Interfaces INotifyPropertyChangedist hier das übliche Vorgehen. Im gleichen Atemzuge wird eine Hilfsmethode verwendet, die das Event PropertyChanged feuert.


LambdaConverter in Silverlight

Einen Konverter in Silverlight zu schreiben ist nicht das Problem und läßt sich fix schreiben. Einfach eine Klasse erstellen mit IValueConverter erweitern und die beiden Methoden Convert und ConvertBack implementieren. So weit so gut. Allerdings kann es auch ganz schön nervig sein für einen simplen Boolean zu System.Windows.Visibility Konverter eine extra Klasse schreiben zu müssen. Das muss doch auch mit Lambdas gehen…


Berlin Nerd

Der Frühling ist vorbei und der Sommer ist endlich angekommen, juchu. Der Frühling war aber auch nicht wirklich ansehnlich in Berlin. Da kam uns der Gedanke, hey, lass uns doch mal in den Süden von Deutschland an den schönen Bodensee nach Konstanz fahren. Tja, nur blöd gewesen, dass uns das berliner Wetter verfolgt hat. Was macht man also, wenn es draussen einen nicht grad einlädt zum rumlaufen und rumgucken? Man geht in einen Buchladen. Beim Rumstöbern in diesem Konstanzer Buchladen blieben wir in der Reiseabteilung hängen. Ein Buch sprang mir nachdem ich meinen Blick über die vollen Reihen hatte schweifen lassen ins Auge. Die Gebrauchsanweisung für Berlin. Ist ja auch logisch, dass man sich in einer anderen Stadt für die eigene interessiert. Bevor man ein “echtes” Buch kauft, blättert man etwas in diesem, um sicher zu gehen, dass sich diese Investition auch lohnt.