April 2009 Blog Posts

Was ist eigentlich nVarChar(MAX)

In SQL Server 2000 darf eine Rownicht mehr als 8000 Bytes groß sein. Das bedeutete auch, dass ein Feld max. 8KB gross sein darf, sofern es das einzige Feld ist, dass abgefragt wurde. Eine varchar Spalte darf max 8KB und eine nVarcharSpalte max 4KB groß sein(2 Byte pro Unicode-Zeichen) sein. Um mehr Daten in einer einzigen Spalte zu speichern gibt bzw. gab es NTEXT, oder Bild-Daten-Typen (BLOBs). Nachteil, dass deiese Felder nicht wie üblich in Abfragen verwendet werden können. Um dieses Problem zu lösen, wurden VARCHAR (MAX), NVarChar (MAX), und VARBINARY (MAX) Datentypen in SQL Server 2005 eingeführt.  Diese Daten können über die gleiche Menge von Daten...

posted @ Thursday, April 30, 2009 1:33 PM | Feedback (0)

Back to the roots oder warum Ajax nicht immer gut ist.

Immer mehr Webanwendungen verwenden Ajax-Toolkits um bestimmte Funktionalitäten auf den Seits zur Verfügung zu stellen. Abgesehen von der Suchmaschienenproblematik vergessen irgendwie alle, wofür es ursprünglich da war. Es geht darum, dem User das Interface zu vereinfachen und oft auch Vorgänge dadurch zu beschleunigen, dass kein Reload der Seite gemacht werden muss. Um das gleich mal klar zu stellen, ich setze das selbst gerne ein und auch immer öfter. Was ich langsam nicht verstehe, ist das die Entwickler der Toolkits Pakete schnüren, bei denen mehrere hundert KB Javascript geladen werden müssen um einfache Effekte zu erzielen, die ein paar Zeilen eigenes Javascript auch realisieren...

posted @ Wednesday, April 29, 2009 7:13 PM | Feedback (0)

Textmode Multiline und Maxlength per Javascript festlegen:

Wenn man eine ASP.NET Textbox im Textmode="Multiline" erstellt, funktioniert dummerweise Maxlength nicht, da die HTML-Textarea das nicht unterstützt. Hier ist die passende Javascript-Function und der VB-Code dazu.  Um das Feature später einfac h ändern zu können, suche ich erst alle Textboxen innerhalb eines Panels und aktiviere entsprechende onChange und onKeyDown Events.       1     Sub setMaxlength()     2         For Each ctl As Control In Panel1.Controls     3             If ctl.GetType Is GetType(TextBox) Then     4                 Dim myTextbox As TextBox = ctl     5                 If myTextbox.TextMode = TextBoxMode.MultiLine _     6                     AndAlso myTextbox.MaxLength > 0 Then     7      8                     myTextbox.Attributes.Add("onChange", _     9                    ...

posted @ Wednesday, April 29, 2009 2:13 PM | Feedback (0)

Mit Linq Strings über mehrere Zeilen einfach im Quellcode hinterlegen.

Jeder kennt das Problem... Man hat einen formatierten String und möchte diesen im Code verwenden. zwei Möglichkeiten.... entweder man stückelt Ihn über mehrere Zeilen zusammen oder man macht eine gaaaaanz lange Zeile daraus. Beides ist unbefriedigend und mühsam. Gestern habe ich nun das XElement dafür entdeckt :     1         Dim SQL As New XElement(<root>     2      3                         SELECT  CMS_Artikel.Dachzeile,     4                                 CMS_Artikel.DateFrom,     5                                 CMS_Artikel.CreateDate,     6                                 User_User.RealName,     7                                 CMS_Artikel.ArtikelID     8                         FROM    CMS_Artikel...

posted @ Wednesday, April 29, 2009 2:01 PM | Feedback (3)

Cookies und Encoding zum hundertsten Mal => String to Base64 und Base64 to String

Und mal wieder habe ich Probleme auf einem Server Umlaute in Cookies zu speichern bzw. zu lesen. Die Tipps sind vielfältig und variiren von Server.URLDecode bis hin zu Globalization Eiträgen in der Web.Config.   Diesmla half gar nichts... Deswegen werden die CookieInformationen ab sofort Base64-codiert. Damit hat sich das Thema - hoffentlich String to Base64   1     Dim base64String As String = _                  Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes("äüö$$"))     2      3   Dim c As New HttpCookie("testCookie")     4         c("value") = base64String     5         Response.Cookies.Add(c)     6      7 Base64 to String     9   Dim base64FromCookie As String = _                                 Request.Cookies("testCookie").Values("value")    10     11   Dim standardString As String = _            Text.Encoding.UTF8.GetString(Convert.FromBase64String(base64FromCookie))    12     13         Response.Write(standardString)

posted @ Monday, April 27, 2009 5:53 PM | Feedback (0)

XPath in Linq verwenden

Wer bereits mit XML gearbeitet hat und XPath-erfahren ist möchte dies evtl. auch mit xLinq nutzen. Hierzu benötigt man den Namespace System.XML.XPath der dann diverse Extension-Methods bereitstellt:     3 Imports System.Xml.XPath [...]    147 Dim list As IEnumerable(Of XElement) _               = xdoc.XPathSelectElements("//Node1/Node2/Node3[Attribut1='Value1']")

posted @ Thursday, April 23, 2009 3:31 PM | Feedback (0)

VPN-Verbindung mit .NET starten

[edit 25.6.2009] Hier ist eine Lösung um ein VPN verbinden nach unterbrochener Netzwerkverbindung (mit .NET) oder um eine VPN verbinden nach Energiesparmodus(mit .NET) [/edit 25.6.2009] Um eine VPN-Verbindung mit .NET starten genügt ein Einzeiler. Vorraussetzung ist, dass das Kennwort gespeichert ist und die Abfrage deaktiviert. Wobei myVPN_Connection der Name der Verbindung unter Windows ist:         1 Module Module1     2      3     Sub Main()     4         Process.Start("RasPhone.exe", "-d myVPN_Connection")     5     End Sub     6      7 End Module

posted @ Wednesday, April 22, 2009 6:32 PM | Feedback (0)

LinqToSQL- Ergebnis oder Linq-Object nach XML konvertieren

In einem Bestellsystem für Stromverträge kann ein User aus einer Ergebnisliste eine Bestellung auslösen. Die Linq-Abfrage hierzu ist mehr als komplex und die Werte in den verbundenen Tabellen werden in verschachtelten Repeatern auf der Website dargestellt. Da wöchentlich die Datenbank ausgetauscht wird, möchte ich gerne im System die Daten aus dem Ergebnis hinterlegen. Dummerweise ist ein LinqToSQL-Ergebnis nicht serialisierbar. Im Netz  habe ich auch nichts gefunden und mir meine eigene rekursive Methode gebastelt: Sicherlich noch verbesserungsfähig... aber für das aktuelle Problem austreichend.    01     Imports System.Reflection    11     12     Public Function getXElementFromLinqObject(ByRef RootElement As XElement, _    13                                          ByVal DataObject As Object) As...

posted @ Wednesday, April 22, 2009 5:30 PM | Feedback (2)

Page_Load automatisch bei neuen Webforms einfügen

Fast jedes Mal, wenn ich ein neues Webform erstelle, füge ich ein Page_Load-Handler ein. Im Verzeichnis C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCache\Web\VisualBasic\1033  liegen die Vorlagen für dei neuen Objekte. Einfach in die Codebeside Datei den nötigen Eintrag machen und ab sofort ist der Handler vorhanden.  

posted @ Monday, April 20, 2009 1:45 PM | Feedback (0)

PDF-Preview in Outlook

Jedes mal auf's neue suche ich den Link für die PDF-PReview in Outlook: http://timheuer.com/blog/archive/2008/05/09/foxit-pdf-preview-handler.aspx Das war er ;-)  

posted @ Monday, April 20, 2009 1:11 PM | Feedback (0)

HTTP Wildcardmapping im IIS 7

Um Wildcardmapping im IIS7 zu ermöglichen, muss ein Sperre aufgehoben werden. Folgenden Befehl in einer Console ausführen und die Sache ist erledigt: C:\Windows\System32\inetsrv\appcmd.exe unlock config /section:system.webserver/handlers Und dann muß noch die <modules> Section angepasst werden bzw. ein Attribut hinzugefügt werden: <modules runAllManagedModulesForAllRequests="true" >

posted @ Friday, April 3, 2009 6:51 PM | Feedback (2)