Overblog
Suivre ce blog Administration + Créer mon blog
13 août 2010 5 13 /08 /août /2010 10:05

Avant de manipuler les données dans votre application vous devez vous assurer que le service de base de données SQL Server est bien installé sur l’ordinateur et qu’il est démarré.

 

Le code suivant permet de réaliser cette vérification :

 

 

 Public NotInheritable Class SQLServer 
 
 Public Sub New() 
 End Sub 
 
 Public Shared Sub StartService() 
 
On vérifie que le service existe 
 If IsServiceExist() Then 
 Dim controler As New ServiceController 
 
 controler.MachineName = "." 
 controler.ServiceName = "MSSQL$SQLEXPRESS" 
 
 Try 
 Select Case controler.Status 
 
 Case ServiceControllerStatus.Running 
 ‘ le service est démarré nous n’avons rien à faire 
 
 Case ServiceControllerStatus.Stopped 
 
 ‘ le service est arrêté nous allons tenter de le redémarrer 
 controler.Start() 
 controler.WaitForStatus(ServiceControllerStatus.Running) 
 Case ServiceControllerStatus.Paused 
 
 ‘ le service est en pause nous allons tenter de le relancer 
 controler.Continue() 
 controler.WaitForStatus(ServiceControllerStatus.Running) 
 End Select 
 Catch ex As Exception 
 
 ‘ en cas d’échec du démarrage du service on ferme l’application 
 MsgBox("Une erreur c'est produite lors du démarrage du service de base de données SQL Server (SQLEXPRESS). Vérifiez que SQL Server 2008 Express est bien installé sur votre ordinateur et que le service SQL Server (SQLEXPRESS) est bien démarré. L'application va se fermer.", MsgBoxStyle.Critical) 
 My.Application.Shutdown() 
 End Try 
 Else 
 
 ‘ si le service n’existe pas on ferme l’application 
 MsgBox("Le service de base de données SQL Server (SQLEXPRESS) n'est pas installé sur votre ordinateur. Veuillez réinstaller l'application.", MsgBoxStyle.Critical) 
 
 My.Application.Shutdown() 
 End If 
 End Sub 
 
 
 
 ‘ cette fonction retourne True si le service SQL Server (SQLEXPRESS) existe 
 
 Public Shared Function IsServiceExist() As Boolean 
 For Each service As ServiceController In ServiceController.GetServices 
 If service.ServiceName = "MSSQL$SQLEXPRESS" Then 
 Return True 
 End If 
 Next 
 Return False 
 End Function 
 
 
 End Class 
 

 

 

Vous n’avez plus qu’à appeler SQLServer.StartService au démarrage de votre application.

Partager cet article
Repost0
15 juillet 2010 4 15 /07 /juillet /2010 09:48

Certains contrôles de votre application peuvent ne fonctionner que sous Windows 7 ou Vista et pas sous Windows XP.

C’est le cas par exemple si vous utilisez le WindowsAPICodePack. Il est donc nécessaire de savoir sous quel Système d’exploitation est installé votre application pour activer ou désactiver certains contrôles.

 

 

Nous allons, pour se faire, créer un module avec une fonction GetOsName :

 

 <HideModuleName()> _ 
 Module OsName 
 
 
 Public Enum OsNames 
 Windows95 
 Windows98 
 WindowsME 
 WindowsNT3 
 WindowsNT4 
 Windows2000 
 WindowsXP 
 Windows2003 
 WindowsVista 
 Windows7 
 Unknown 
 End Enum 
 
 
 
 Public Function GetOSName() As OsNames 
 Dim os As System.OperatingSystem = System.Environment.OSVersion 
 Dim osName As String = OsNames.Unknown 
 Select Case os.Platform 
 Case System.PlatformID.Win32Windows 
 Select Case os.Version.Minor 
 Case 0 
 osName = OsNames.Windows95 
 Exit Select 
 Case 10 
 osName = OsNames.Windows98 
 Exit Select 
 Case 90 
 osName = OsNames.WindowsME 
 Exit Select 
 End Select 
 Exit Select 
 Case System.PlatformID.Win32NT 
 Select Case os.Version.Major 
 Case 3 
 osName = OsNames.WindowsNT3 
 Exit Select 
 Case 4 
 osName = OsNames.WindowsNT4 
 Exit Select 
 Case 5 
 If os.Version.Minor = 0 Then 
 osName = OsNames.Windows2000 
 ElseIf os.Version.Minor = 1 Then 
 osName = OsNames.WindowsXP 
 ElseIf os.Version.Minor = 2 Then 
 osName = OsNames.Windows2003 
 End If 
 Exit Select 
 Case 6 
 osName = OsNames.WindowsVista 
 If os.Version.Minor = 0 Then 
 osName = OsNames.WindowsVista 
 ElseIf os.Version.Minor = 1 Then 
 osName = OsNames.Windows7 
 End If 
 Exit Select 
 End Select 
 Exit Select 
 End Select 
 Return osName 
 End Function 
 
 End Module 
 
 

 

Voici comment utiliser cette fonction :

 

 Select Case GetOSName() 
 Case OsNames.Windows7, OsNames.WindowsVista 
 ‘ j’active ici mes contrôles pour Windows 7 et Vista 
 
 Case OsNames.WindowsXP 
 ‘ Je désactive ici mes contrôles pour Windows 7 et j’active ceux pour Windows XP 
 
 End Select 
 
Partager cet article
Repost0
9 juillet 2010 5 09 /07 /juillet /2010 08:02

 

Lorsque l’on fait un clique droit sur la liste d’un Datagrid pour utiliser un menu contextuel, il est nécessaire de sélectionner la ligne sur laquelle vous avez cliqué.

 

Voici comment réaliser cette action avec le DataGrid Xceed pour WPF :

 

Code :

Private Sub DataGridListe_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles DataGridListe.MouseDown

        If e.RightButton = MouseButtonState.Pressed Then
            For Each item As DataRowView In DataGridListe.Items
                Dim row As Object = DataGridListe.GetContainerFromItem(item)
                If TypeOf row Is Xceed.Wpf.DataGrid.DataRow AndAlso DirectCast(row, Xceed.Wpf.DataGrid.DataRow).IsMouseOver Then
                    DataGridListe.CurrentItem = item
                    Exit For
                End If
            Next
        End If

End Sub

Partager cet article
Repost0
6 juillet 2010 2 06 /07 /juillet /2010 15:08

 

Si vous tentez d’accéder aux informations d’un DataRow dont le statut est “Deleted” vous obtiendrez un message d’erreur vous indiquant que vous ne pouvez pas y accéder.

 

Voici comment procéder pour accéder un DataRow Deleted :

 

Code :

Private Sub Clients_RowDeleted(ByVal sender As Object, ByVal e As DataRowChangeEventArgs)
            Dim rowClient As ClientsRow = e.Row

            MsgBox(rowClient("nomDuClient", DataRowVersion.Original))
End Sub

Cet exemple affiche dans une boîte de dialogue le nom du client qui vient d’être effacé. Nous utilisons le type ClientsRow de la Table Clients d’un Dataset fortement typé.

Partager cet article
Repost0
24 juin 2010 4 24 /06 /juin /2010 11:25

Lorsque vous modifiez les données de la source du Datagrid les modifications apportées ne sont pas toujours visible.

 

La solution qui vient en premier à l’esprit est d’utiliser :

 

Code:

monDataGrid.Items.Refresh()

 

Le problème c’est que si vous essayez d’appeler cette méthode dans un quelconque événement “EndEditing” du Datagrid vous aurez un message d’erreur vous indiquant que cette méthode ne peut pas être appelée durant l’édition d’un item.

 

Il est donc préférable d’utiliser la méthode suivante juste après avoir modifier les données de la source :

 

Code:

monDataGrid.CommitEdit()

Partager cet article
Repost0
24 juin 2010 4 24 /06 /juin /2010 09:25

Si vous avez un message d’erreur indiquant qu’Outlook n’est pas votre programme de messagerie par défaut lorsque vous essayez de synchroniser vos données avec votre téléphone mobile, ou que vous essayez d’envoyer un email à partir d’un programme tiers, c’est parce que Outlook 2010 64 bits n’est tout simplement pas capable de le faire !

 

En effet, Microsoft n’a pas l’intention de mettre à jour Windows Mobile Device Center pour qu’il fonctionne avec la version 64 bits d’Outlook 2010, de même que les programmes 32 bits comme Adobe Reader ne sont pas capable de “joindre à un message électronique” un fichier PDF.

 

Alors pourquoi faire une version 64 bits d’Office 2010 si les autres logiciels Microsoft n’ont pas prévu de fonctionner avec cette version ? Combien de temps faudra-t-il encore attendre pour que tout fonctionne en 64 bits ?

 

La seul solution est d’installer la version 32 bits d’Outlook 2010.

Partager cet article
Repost0
9 juin 2010 3 09 /06 /juin /2010 15:47

Vous avez certainement remarqué, que ce soit pour la version 2,3 ou 4 de Silverlight, les événements souris du slider ne se déclenchent pas.

Pour résoudre ce problème, il faut ajouter les handler dans le code behind. (la philosophie XAML en prend un coup).

 

Voici 2 exemples pour les événements MouseLeftButtonDown et MouseLeftButtonUp.

 

Code:

MonSlider.AddHandler(MouseLeftButtonDownEvent, New MouseButtonEventHandler(AddressOf MonSlider_MouseLeftButtonDown), True)
MonSlider.AddHandler(MouseLeftButtonUpEvent, New MouseButtonEventHandler(AddressOf MonSlider_MouseLeftButtonUp), True)

Partager cet article
Repost0
9 juin 2010 3 09 /06 /juin /2010 09:25

Pour que les sites utilisant le Framework 4 puissent cohabiter avec des sites utilisant le Framework 2 ou 3.5 vous devez créer plusieurs pool d’application. En effet, plusieurs version du Framework ne peuvent pas tourner dans le même pool d’application.

 

Voici les étapes à suivre pour installer le Framework 4.

 

1- Installez le Framework 4 à partir du site de Microsoft puis redémarrez le serveur.

2- Dans le Gestionnaire de IIS6, allez dans le nœud “Extensions du service Web” et assurez vous que l’extension ASP.NET v4 est autorisé.

3- Faites un clique droit sur le nœud “Pools d’applications” puis, dans le menu, cliquez sur “Nouveau” puis “Pool d’application”.

4- Créez autant de pools qu’il y a de Framework utilisé sur votre serveur IIS6. Exemple : appPoolF3, appPoolF4 etc..

5- Faites un clique droit sur le nœud de votre site utilisant le Framework 4 puis dans le menu cliquez sur “Propriétés”.

6- Dans l’onglet “ASP.NET” assurez vous que c’est bien le Framework 4 qui est utilisé.

7- Dans l’onglet répertoire de base, modifier le Pool d’application utilisé pour mettre celui du Framework 4.

8- Modifiez tous les pools d’applications des autres sites du serveur pour les mettre dans le pool correspondant a la version de leur Framework.

 

Remarque : Si un seul site n’est pas dans le bon pool les autres sites ne fonctionneront pas.

Partager cet article
Repost0
12 mai 2010 3 12 /05 /mai /2010 09:01

 

Voici le code pour obtenir le TextBox d’un IsEditable=True ComboBox dans une classe qui hérite du control ComboBox :

 

Code :

Protected ReadOnly Property EditableTextBox() As TextBox
        Get
            Return DirectCast(MyBase.GetTemplateChild("PART_EditableTextBox"), TextBox)
        End Get
End Property

 

Lorsque IsDropDownOpen=True le ComboBox fait un SelectAll sur le TextBox. Pour éviter cela on peut faire ceci :

 

Code :

Me.IsDropDownOpen = True
Me.EditableTextBox.Select(Me.Text.Length, 0)

Ce code ouvre le DropDownMenu du ComboBox, désélectionne le texte du TextBox, et place le curseur à la fin du texte.

Partager cet article
Repost0
7 mai 2010 5 07 /05 /mai /2010 09:05

 

Si il est possible de bloquer des appels anonymes sur une ligne fixe, il n’en est pas de même pour les téléphones mobiles. En effet, aucun opérateur à ce jour ne propose cette option sur les téléphones mobiles.

 

J’ai cependant trouvé une solution grâce au logiciel Kaspersky Mobile Security 9.

 

Ce logiciel permet de filtrer les appels et les sms à partir d’une “liste blanche” (autorisé) et d’une “liste noire” (interdit).

Dans le cas présent, la fonction la plus intéressante est le blocage des appels “non numérique”. En effet, un appels en numéro masqué ne montre aucun numéro de téléphone et est donc considéré comme “non numérique”.

Il est également possible de bloquer tous les appels commençant par 08 en ajoutant dans “la liste noire” 08*. (les numéros commençant par 08 sont souvent des numéros surtaxés utilisés pour vous piéger quand vous les rappellez.)

 

Vous pouvez paramétrer le logiciel pour qu’il vous avertisse par un signal sonore le blocage d’un appel (par défaut). Mais vous pouvez également lui dire de rester silencieux, dans quel cas votre téléphone restera parfaitement muet et vous ne saurez même pas que vous avez reçu un appel anonyme. Cependant vous pouvez consulter un journal des blocages dans lequel est consigné tous les blocages d’appels et de sms.

 

J’ai testé ce logiciel sur un HTC HD2 sous Windows Mobile 6.5 et je suis parfaitement satisfait du résultat.

Adieu les masqués !!

Partager cet article
Repost0