Let’s say you have a Select Statement with a List of IDs in it’s “IN()” Part and want to get the Results in the same Order as the List of IDs.
You now could use the same “ORDER BY” you used when you got the List of IDs but why reordering if you already got the order?
Or you could reorder the result in your application.
But there’s another solution to order it in SQL. Using the “CASE-WHEN-THEN” Statement. It may not be very efficient if you have many IDs but that’s the best I found. Read more…
No, this is not a post about the current state of the worlds financial industries, instead it is about one of the lesser known C# features called “yield” that can be used to create dynamic collections. It is one of the more disputed features of C# because it is “not really object oriented” and more of a hack than anything else. While this is most likely true, I find it hard to argue its usability. See for yourself.
Read more…
Auf der suche nach einem Tool welches mir die gewünschten Images in Icons konvertiert, bin ich auf die kleine App “@icon sushi” gestossen. Klein und Kompakt kann “@icon sushi” das was man im Alltag benötigt wenn es um die Konvertierung von Icons geht.
Zur Seite: “@Icon sushi”
Elemente mit style="float:right;" oder style="float:left;" zu positionieren kann gefährlich sein.
Das Problem ist, dass ein Element nach dem float versucht, sich daneben / dazwischen zu positionieren.
Um zu unterbinden dass ein Element sich neben einem Floating-Element positioniert muss man diesem style="clear: both;" zuweisen. Read more…
C# hat einige nette Features die man auf Anhieb nicht gerade kennt.
Hier ein paar davon: Read more…
Manchmal möchte man ein nicht-blockierendes SELECT auf einer Tabelle machen. Dazu verwendet man einfach:
SELECT * FROM MyTable WITH(NOLOCK)
Das Problem an NOLOCK ist, dass es ein “dirty” Read ist. Also wenn z.B. eine Transaktion ein INSERT auf diese Tabelle macht aber noch nicht commited ist, gibt das SELECT mit NOLOCK diese Row bereits zurück! Wenn und die Transaktion zurückgesetzt wird (Rollback), wird dieser Row wieder gelöscht und unser SELECT hat einen nicht mehr exisiterenden Eintrag.
Um dieses Problem zu umgehen kann man statt NOLOCK einfach READPAST verwenden. Das Statement sieht dann so aus:
SELECT * FROM MyTable WITH(READPAST)
Nun werden Zeilen die gesperrt sind einfach ignoriert. Dies beinhaltet allerdings auch Zeilen die über ein UPDATE gesperrt sind! Also immer aufpassen und abschätzen, was man braucht.
Weitere Links:
- Table Hints (Transact-SQL)
- Using NOLOCK and READPAST table hints in SQL Server
Wer schon mit dem AjaxToolkit gearbeitet hat kennt das Prinzip der Extender. Dabei werden dem Extender jeweils die ClientIDs der Controls mitgegeben, die entsprechend erweitert werden sollen. Der Extender kann dann über Page.FindControl das ensprechende Control finden es entsprechend anpassen. So weit so gut, doch was tun, wenn nun dieser Extender in einem Repeater ist? Read more…
ASP is pretty much Event-Oriented. So it’s important to know the exact Sequence of the Events for a Page-Life-Cycle.
Here’s the List (in sequence): Read more…
Nachdem ich nun die mittlere Maustaste abfangen kann, muss ich jetzt nur noch Winamp steuern können.
Relativ schnell fand ich heraus, dass man mit WM_COMMAND Befehle an Winamp senden kann. Leider kein kombiniertes Play/Pause. Also muss ich zuerst den Status abfangen und je nach dem Play oder Pause/Unpause senden. Read more…
Ich bin mir gewohnt mit der mittleren Maustaste Winamp zu steuern (Play/Pause) doch für meine Maus hier gibt es leider keinen Windows 2000 Treiber und somit kann ich die mittlere Maustaste nicht konfigurieren.
Also möchte ich einen globalen Mouse-Hooker schreiben um alle Events der Maus abzufangen und eigene Funktionen dranzuhängen. Read more…