dimanche 18 juillet 2010

Code T-SQL pour réinitialiser le champ d'identité auto-incrémentiel d'une table

Le code suivant (pour Microsoft SQL Server) permet de réinitialiser la valeur du champ d'identité auto-incrémentiel d'une table SQL à une valeur quelconque (0 dans l'exemple) sans nécessiter de supprimer les données de la table.

DBCC CHECKIDENT ('nom_table', RESEED, 0)


Remplacer nom_table par le nom de votre table et 0 par la valeur de départ désirée.

Pour vider le contenu d'une table (s'il n'y a pas de conflit d'intégrité référentielle) et réinitialiser le champ d'identité auto-incrémentiel dans une même opération, il suffit d'effectuer l'opération suivante :

TRUNCATE TABLE nom_table

mardi 27 avril 2010

Contrôle Menu ASP.NET ne fonctionne plus correctement avec IE 8

Depuis la sortie de la version 8 de Microsoft Internet Explorer, un problème est apparu avec le contrôle Web "Menu" dans ASP.NET 2.0. La portion dynamique du menu, qui utilise du code JavaScript, ne s'affiche plus et est remplacée par un carré blanc. Il s'agit principalement d'un bogue d'interprétation de la valeur CSS par défaut du "z-index" par le menu puisque la nouvelle version d'IE (en mode standard) ne gère plus cela comme auparavant. Plus précisément, "(element).currentStyle.zIndex" retourne maintenant "auto" au lieu d'une valeur numérique, lorsqu'il n'y a pas de propriété "z-index" de spécifiée.

Il suffit de forcer le navigateur en mode compatibilité (IE 7) pour que le menu fonctionne à nouveau correctement. Évidemment, ce n'est pas une solution adéquate et ce n'est pas directement le navigateur qui est en cause, mais bien le code serveur (ressources) utilisé par le menu.

Pour régler le problème, il faut installer une mise à jour sur son poste de développement (si besoin pour les tests) ainsi que sur le serveur Web où est publié le site ASP.NET qui utilise le contrôle Menu. Cette mise à jour n'est pas disponible par Windows/Microsoft Update et il faut la télécharger et l'installer manuellement. Le dernier Service Pack de Windows doit être déjà installé dans certains cas pour que cela fonctionne correctement.

Le correctif (Patch/Hotfix) est disponible à l'adresse suivante : http://support.microsoft.com/kb/962351

Si vous ne désirez/pouvez pas appliquer la mise à jour ci-dessus, voici une solution de contournement : http://weblogs.asp.net/mhildreth/archive/2009/01/26/testing.aspx

Note : Le contrôle Menu a été réécrit avec ASP.NET 4.0 et le problème n'existe plus. Il utilise une syntaxe HTML/CSS/JavaScript plus respectueuse des standards et il devrait fonctionner adéquatement avec toutes les versions des navigateurs récents.

Source : http://weblogs.asp.net/bleroy/archive/2009/03/23/asp-menu-fix-for-ie8-problem-available.aspx

jeudi 18 février 2010

Code T-SQL pour obtenir uniquement la partie date d'une valeur de type date et heure

Ces exemples de code (pour Microsoft SQL Server) permettent de récupérer la portion date seulement d'un champ ou d'une variable ayant une valeur de type date et heure (datetime) combinée.

Cela peut être utile par exemple pour comparer des données de date sans prendre en considération l'heure.

Scénario d'utilisation pour les versions de SQL Server <= 2005 :

CAST(FLOOR(CAST(DateHeure AS float)) AS datetime) BETWEEN @DateDebut AND @DateFin


Pour les versions de SQL Server >= 2008, il suffit de faire une conversion de type (CAST) puisque le type de données "date" est maintenant disponible :

CAST(DateHeure AS date) BETWEEN @DateDebut AND @DateFin