Trie sur date verifier que c'est bien une valeur date VB.NET ?
2 réponses
fabien_liteon
Bonjour,
J'essai un trie sur une colonne de de date cela fonctionne bien si toute la colonne ne reçoit que des valeurs (date) mais s'il y'a un autre type (strings), ça ne trie plus.
Comment faire pour que cela fonctionne dans tout les cas ?
Exemple si dans la colonne j'ai un string, faire croire au programme que c'est une valeur date "00/00/0000" <-- doit correspondre aux autres formats dans cette même colonne.
Ce que j'ai fais mais pas fonctionnel si anomalie.
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
Try
Dim NbStrX, NbStrY As String
NbStrX = CType(x, XPSubItem).Text
NbStrY = CType(y, XPSubItem).Text
Dim time1 As DateTime = DateTime.Parse(CType(NbStrX, DateTime))
Dim time2 As DateTime = DateTime.Parse(CType(NbStrY, DateTime))
Return time1.CompareTo(time2)
Catch
End Try
End Function
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Laurent Jordi \(www.ezlogic.mc\)
If isDate(MaDate) non ? "fabien_liteon" a écrit dans le message de news:%
Bonjour,
J'essai un trie sur une colonne de de date cela fonctionne bien si toute
la colonne ne reçoit que des valeurs (date) mais s'il y'a un autre type (strings), ça ne trie plus.
Comment faire pour que cela fonctionne dans tout les cas ? Exemple si dans la colonne j'ai un string, faire croire au programme que
c'est une valeur date "00/00/0000" <-- doit correspondre aux autres formats dans cette même colonne.
Ce que j'ai fais mais pas fonctionnel si anomalie.
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer
Implements System.Collections.IComparer.Compare
Try Dim NbStrX, NbStrY As String NbStrX = CType(x, XPSubItem).Text NbStrY = CType(y, XPSubItem).Text Dim time1 As DateTime = DateTime.Parse(CType(NbStrX, DateTime)) Dim time2 As DateTime = DateTime.Parse(CType(NbStrY, DateTime)) Return time1.CompareTo(time2) Catch End Try End Function
Merci
If isDate(MaDate) non ?
"fabien_liteon" <fabien_liteon@wanadoo.fr> a écrit dans le message de
news:%23hnBxfhfEHA.636@TK2MSFTNGP12.phx.gbl...
Bonjour,
J'essai un trie sur une colonne de de date cela fonctionne bien si toute
la colonne ne reçoit que des valeurs (date) mais s'il y'a un autre type
(strings), ça ne trie plus.
Comment faire pour que cela fonctionne dans tout les cas ?
Exemple si dans la colonne j'ai un string, faire croire au programme que
c'est une valeur date "00/00/0000" <-- doit correspondre aux autres formats
dans cette même colonne.
Ce que j'ai fais mais pas fonctionnel si anomalie.
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer
Implements System.Collections.IComparer.Compare
Try
Dim NbStrX, NbStrY As String
NbStrX = CType(x, XPSubItem).Text
NbStrY = CType(y, XPSubItem).Text
Dim time1 As DateTime = DateTime.Parse(CType(NbStrX, DateTime))
Dim time2 As DateTime = DateTime.Parse(CType(NbStrY, DateTime))
Return time1.CompareTo(time2)
Catch
End Try
End Function
If isDate(MaDate) non ? "fabien_liteon" a écrit dans le message de news:%
Bonjour,
J'essai un trie sur une colonne de de date cela fonctionne bien si toute
la colonne ne reçoit que des valeurs (date) mais s'il y'a un autre type (strings), ça ne trie plus.
Comment faire pour que cela fonctionne dans tout les cas ? Exemple si dans la colonne j'ai un string, faire croire au programme que
c'est une valeur date "00/00/0000" <-- doit correspondre aux autres formats dans cette même colonne.
Ce que j'ai fais mais pas fonctionnel si anomalie.
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer
Implements System.Collections.IComparer.Compare
Try Dim NbStrX, NbStrY As String NbStrX = CType(x, XPSubItem).Text NbStrY = CType(y, XPSubItem).Text Dim time1 As DateTime = DateTime.Parse(CType(NbStrX, DateTime)) Dim time2 As DateTime = DateTime.Parse(CType(NbStrY, DateTime)) Return time1.CompareTo(time2) Catch End Try End Function
Merci
Zoury
Salut! :O)
Comment faire pour que cela fonctionne dans tout les cas ?
Pourquoi ne pas t'assurer que ta colonne ne contient pas toujours le même type au moment de l'ajout des données ? Il me semble anormal qu'une colonne puisse contenir deux types différents..
pour utiliser la solution proposée par Laurent : '*** Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare If (Not IsDate(x) OrElse Not IsDate(y)) Then Throw New InvalidCastException End If Return CType(x, System.DateTime).CompareTo(CType(y, System.DateTime)) End Function '***
ou encore celle-ci, qui, je crois, serait plus légère : '*** Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare If (Not IsDate(x) OrElse Not IsDate(y)) Then Throw New InvalidCastException End If Return DirectCast(x, System.IComparable).CompareTo(DirectCast(y, System.IComparable)) End Function '***
-- Cordialement Yanick Lefebvre - MVP pour Visual Basic Classique Le français se refait une beauté, parlons en : http://www.orthographe-recommandee.info/
Salut! :O)
Comment faire pour que cela fonctionne dans tout les cas ?
Pourquoi ne pas t'assurer que ta colonne ne contient pas toujours le même
type au moment de l'ajout des données ? Il me semble anormal qu'une colonne
puisse contenir deux types différents..
pour utiliser la solution proposée par Laurent :
'***
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer
Implements System.Collections.IComparer.Compare
If (Not IsDate(x) OrElse Not IsDate(y)) Then
Throw New InvalidCastException
End If
Return CType(x, System.DateTime).CompareTo(CType(y, System.DateTime))
End Function
'***
ou encore celle-ci, qui, je crois, serait plus légère :
'***
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer
Implements System.Collections.IComparer.Compare
If (Not IsDate(x) OrElse Not IsDate(y)) Then
Throw New InvalidCastException
End If
Return DirectCast(x, System.IComparable).CompareTo(DirectCast(y,
System.IComparable))
End Function
'***
--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic Classique
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/
Comment faire pour que cela fonctionne dans tout les cas ?
Pourquoi ne pas t'assurer que ta colonne ne contient pas toujours le même type au moment de l'ajout des données ? Il me semble anormal qu'une colonne puisse contenir deux types différents..
pour utiliser la solution proposée par Laurent : '*** Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare If (Not IsDate(x) OrElse Not IsDate(y)) Then Throw New InvalidCastException End If Return CType(x, System.DateTime).CompareTo(CType(y, System.DateTime)) End Function '***
ou encore celle-ci, qui, je crois, serait plus légère : '*** Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare If (Not IsDate(x) OrElse Not IsDate(y)) Then Throw New InvalidCastException End If Return DirectCast(x, System.IComparable).CompareTo(DirectCast(y, System.IComparable)) End Function '***
-- Cordialement Yanick Lefebvre - MVP pour Visual Basic Classique Le français se refait une beauté, parlons en : http://www.orthographe-recommandee.info/