Bonjour
je voudrai faire un tri sur un tableau de date avec parfois des dates
"nulles".
Pour cela je voudrai convertir la date en équivalent entier long (les
dates "nulles" étant =0) et donc trier sur des valeurs.
Pouvez vous me rappeler comment faire la conversion date >>> entier long ?
Merci d'avance
Driss
Bonjour
je voudrai faire un tri sur un tableau de date avec parfois des dates
"nulles".
Pour cela je voudrai convertir la date en équivalent entier long (les
dates "nulles" étant =0) et donc trier sur des valeurs.
Pouvez vous me rappeler comment faire la conversion date >>> entier long ?
Merci d'avance
Driss
Bonjour
je voudrai faire un tri sur un tableau de date avec parfois des dates
"nulles".
Pour cela je voudrai convertir la date en équivalent entier long (les
dates "nulles" étant =0) et donc trier sur des valeurs.
Pouvez vous me rappeler comment faire la conversion date >>> entier long ?
Merci d'avance
Driss
Bonjour
je voudrai faire un tri sur un tableau de date avec parfois des dates
"nulles".
Pour cela je voudrai convertir la date en équivalent entier long (les
dates "nulles" étant =0) et donc trier sur des valeurs.
Pouvez vous me rappeler comment faire la conversion date >>> entier
long ?
Bonjour
je voudrai faire un tri sur un tableau de date avec parfois des dates
"nulles".
Pour cela je voudrai convertir la date en équivalent entier long (les
dates "nulles" étant =0) et donc trier sur des valeurs.
Pouvez vous me rappeler comment faire la conversion date >>> entier
long ?
Bonjour
je voudrai faire un tri sur un tableau de date avec parfois des dates
"nulles".
Pour cela je voudrai convertir la date en équivalent entier long (les
dates "nulles" étant =0) et donc trier sur des valeurs.
Pouvez vous me rappeler comment faire la conversion date >>> entier
long ?
Driss HANIB wrote:Bonjour
Hello Driss,je voudrai faire un tri sur un tableau de date avec parfois des dates
"nulles".
Pour cela je voudrai convertir la date en équivalent entier long (les
dates "nulles" étant =0) et donc trier sur des valeurs.
Pouvez vous me rappeler comment faire la conversion date >>> entier
long ?
La méthode de David est partiellement bonne (usage de DateValue) mais
hélas
aussi partiellement fausse : si le champ est null, alors DateValue va
provoquer une erreur d'exécution. Or tu cherches justement à régler le
problème des champs Null.
Il y a 2 façons de régler le problème:
1) Régler le problème en aval : tu fais un select normal et tu
vérifies que le champ est non null avant de convertir en long.
Ca donne ceci :
Dim db As Database
Dim rs As Recordset
Dim Date_long As Long
Set db = OpenDatabase("c:test.mdb")
Set rs = db.OpenRecordset("SELECT mydate FROM Table1")
If rs.EOF And rs.BOF Then
' la table est vide
Else
While Not rs.EOF
If Not IsNull(rs.Fields("mydate")) Then
Date_long = CLng(DateValue(rs.Fields("mydate")))
Else
Date_long = 0
End If
Debug.Print Date_long
rs.MoveNext
Wend
End If
rs.Close
db.Close
Set db = Nothing: Set rs = Nothing
2) Régler le problème en amont : tu fais un SELECT un peu
spécial qui se charge de convertir les champs null en "0" puis
tu fais une boucle sans plus te soucier de null, car il n'y en
a plus.
Ca donne :
Dim db As Database
Dim rs As Recordset
Dim Date_long As Long
Set db = OpenDatabase("c:test.mdb")
Set rs = db.OpenRecordset("SELECT IIF(Not ISNULL(mydate),mydate,0) AS
DATE1 FROM Table1")
If rs.EOF And rs.BOF Then
' la table est vide
Else
While Not rs.EOF
Date_long = CLng(DateValue(rs.Fields("DATE1")))
Debug.Print Date_long
rs.MoveNext
Wend
End If
rs.Close
db.Close
Set db = Nothing: Set rs = Nothing
Les 2 méthodes se valent. Perso, j'aime bien la seconde, mais c'est très
personnel et je n'aurais pas de problèmes à utiliser l'une ou l'autre des
2 méthodes.
Petite remarque générale : Tu n'as pas précisé, mais je suppose que tu
utilises Access. Dans d'autres bases de données du genre MS-SQL, Oracle
ou DB2, il existe un mot clé qui s'appelle COALESCE, qui est standard SQL
et qui fait en gros ce qu'on a fait avec le IIF().
Bien cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Driss HANIB wrote:
Bonjour
Hello Driss,
je voudrai faire un tri sur un tableau de date avec parfois des dates
"nulles".
Pour cela je voudrai convertir la date en équivalent entier long (les
dates "nulles" étant =0) et donc trier sur des valeurs.
Pouvez vous me rappeler comment faire la conversion date >>> entier
long ?
La méthode de David est partiellement bonne (usage de DateValue) mais
hélas
aussi partiellement fausse : si le champ est null, alors DateValue va
provoquer une erreur d'exécution. Or tu cherches justement à régler le
problème des champs Null.
Il y a 2 façons de régler le problème:
1) Régler le problème en aval : tu fais un select normal et tu
vérifies que le champ est non null avant de convertir en long.
Ca donne ceci :
Dim db As Database
Dim rs As Recordset
Dim Date_long As Long
Set db = OpenDatabase("c:test.mdb")
Set rs = db.OpenRecordset("SELECT mydate FROM Table1")
If rs.EOF And rs.BOF Then
' la table est vide
Else
While Not rs.EOF
If Not IsNull(rs.Fields("mydate")) Then
Date_long = CLng(DateValue(rs.Fields("mydate")))
Else
Date_long = 0
End If
Debug.Print Date_long
rs.MoveNext
Wend
End If
rs.Close
db.Close
Set db = Nothing: Set rs = Nothing
2) Régler le problème en amont : tu fais un SELECT un peu
spécial qui se charge de convertir les champs null en "0" puis
tu fais une boucle sans plus te soucier de null, car il n'y en
a plus.
Ca donne :
Dim db As Database
Dim rs As Recordset
Dim Date_long As Long
Set db = OpenDatabase("c:test.mdb")
Set rs = db.OpenRecordset("SELECT IIF(Not ISNULL(mydate),mydate,0) AS
DATE1 FROM Table1")
If rs.EOF And rs.BOF Then
' la table est vide
Else
While Not rs.EOF
Date_long = CLng(DateValue(rs.Fields("DATE1")))
Debug.Print Date_long
rs.MoveNext
Wend
End If
rs.Close
db.Close
Set db = Nothing: Set rs = Nothing
Les 2 méthodes se valent. Perso, j'aime bien la seconde, mais c'est très
personnel et je n'aurais pas de problèmes à utiliser l'une ou l'autre des
2 méthodes.
Petite remarque générale : Tu n'as pas précisé, mais je suppose que tu
utilises Access. Dans d'autres bases de données du genre MS-SQL, Oracle
ou DB2, il existe un mot clé qui s'appelle COALESCE, qui est standard SQL
et qui fait en gros ce qu'on a fait avec le IIF().
Bien cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
Driss HANIB wrote:Bonjour
Hello Driss,je voudrai faire un tri sur un tableau de date avec parfois des dates
"nulles".
Pour cela je voudrai convertir la date en équivalent entier long (les
dates "nulles" étant =0) et donc trier sur des valeurs.
Pouvez vous me rappeler comment faire la conversion date >>> entier
long ?
La méthode de David est partiellement bonne (usage de DateValue) mais
hélas
aussi partiellement fausse : si le champ est null, alors DateValue va
provoquer une erreur d'exécution. Or tu cherches justement à régler le
problème des champs Null.
Il y a 2 façons de régler le problème:
1) Régler le problème en aval : tu fais un select normal et tu
vérifies que le champ est non null avant de convertir en long.
Ca donne ceci :
Dim db As Database
Dim rs As Recordset
Dim Date_long As Long
Set db = OpenDatabase("c:test.mdb")
Set rs = db.OpenRecordset("SELECT mydate FROM Table1")
If rs.EOF And rs.BOF Then
' la table est vide
Else
While Not rs.EOF
If Not IsNull(rs.Fields("mydate")) Then
Date_long = CLng(DateValue(rs.Fields("mydate")))
Else
Date_long = 0
End If
Debug.Print Date_long
rs.MoveNext
Wend
End If
rs.Close
db.Close
Set db = Nothing: Set rs = Nothing
2) Régler le problème en amont : tu fais un SELECT un peu
spécial qui se charge de convertir les champs null en "0" puis
tu fais une boucle sans plus te soucier de null, car il n'y en
a plus.
Ca donne :
Dim db As Database
Dim rs As Recordset
Dim Date_long As Long
Set db = OpenDatabase("c:test.mdb")
Set rs = db.OpenRecordset("SELECT IIF(Not ISNULL(mydate),mydate,0) AS
DATE1 FROM Table1")
If rs.EOF And rs.BOF Then
' la table est vide
Else
While Not rs.EOF
Date_long = CLng(DateValue(rs.Fields("DATE1")))
Debug.Print Date_long
rs.MoveNext
Wend
End If
rs.Close
db.Close
Set db = Nothing: Set rs = Nothing
Les 2 méthodes se valent. Perso, j'aime bien la seconde, mais c'est très
personnel et je n'aurais pas de problèmes à utiliser l'une ou l'autre des
2 méthodes.
Petite remarque générale : Tu n'as pas précisé, mais je suppose que tu
utilises Access. Dans d'autres bases de données du genre MS-SQL, Oracle
ou DB2, il existe un mot clé qui s'appelle COALESCE, qui est standard SQL
et qui fait en gros ce qu'on a fait avec le IIF().
Bien cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Bonjour,
Vous avez tout à fait raison; je ne me
souvenais plus qu'à l'époque pour faire vite
j'avais remplacer les champs null par un fausse date,
date bien antérieure à la création du programme.
Ha, avec l'âge tout s'en va petit à petit :-))
Bonjour,
Vous avez tout à fait raison; je ne me
souvenais plus qu'à l'époque pour faire vite
j'avais remplacer les champs null par un fausse date,
date bien antérieure à la création du programme.
Ha, avec l'âge tout s'en va petit à petit :-))
Bonjour,
Vous avez tout à fait raison; je ne me
souvenais plus qu'à l'époque pour faire vite
j'avais remplacer les champs null par un fausse date,
date bien antérieure à la création du programme.
Ha, avec l'âge tout s'en va petit à petit :-))
Bonjour
je voudrai faire un tri sur un tableau de date avec parfois des dates
"nulles".
Pour cela je voudrai convertir la date en équivalent entier long (les
dates "nulles" étant =0) et donc trier sur des valeurs.
Pouvez vous me rappeler comment faire la conversion date >>> entier long ?
Merci d'avance
Driss
Bonjour
je voudrai faire un tri sur un tableau de date avec parfois des dates
"nulles".
Pour cela je voudrai convertir la date en équivalent entier long (les
dates "nulles" étant =0) et donc trier sur des valeurs.
Pouvez vous me rappeler comment faire la conversion date >>> entier long ?
Merci d'avance
Driss
Bonjour
je voudrai faire un tri sur un tableau de date avec parfois des dates
"nulles".
Pour cela je voudrai convertir la date en équivalent entier long (les
dates "nulles" étant =0) et donc trier sur des valeurs.
Pouvez vous me rappeler comment faire la conversion date >>> entier long ?
Merci d'avance
Driss
Salut Jean-Pol et Jean-Marc
Donc mon problème est de convertir une date en son entier long
correspondant.
Est-ce que la version de Jean Pol peut fonctionner ?
Salut Jean-Pol et Jean-Marc
Donc mon problème est de convertir une date en son entier long
correspondant.
Est-ce que la version de Jean Pol peut fonctionner ?
Salut Jean-Pol et Jean-Marc
Donc mon problème est de convertir une date en son entier long
correspondant.
Est-ce que la version de Jean Pol peut fonctionner ?
Driss HANIB wrote:Salut Jean-Pol et Jean-Marc
Hello !Donc mon problème est de convertir une date en son entier long
correspondant.
Est-ce que la version de Jean Pol peut fonctionner ?
Oui, DateValue() est bien la fonction à utiliser. IL faut prendre
la précaution indiquée dans ma méthode 1 pour ne pas donner
"null" à dateValue, sinon plantage.
Cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Driss HANIB wrote:
Salut Jean-Pol et Jean-Marc
Hello !
Donc mon problème est de convertir une date en son entier long
correspondant.
Est-ce que la version de Jean Pol peut fonctionner ?
Oui, DateValue() est bien la fonction à utiliser. IL faut prendre
la précaution indiquée dans ma méthode 1 pour ne pas donner
"null" à dateValue, sinon plantage.
Cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
Driss HANIB wrote:Salut Jean-Pol et Jean-Marc
Hello !Donc mon problème est de convertir une date en son entier long
correspondant.
Est-ce que la version de Jean Pol peut fonctionner ?
Oui, DateValue() est bien la fonction à utiliser. IL faut prendre
la précaution indiquée dans ma méthode 1 pour ne pas donner
"null" à dateValue, sinon plantage.
Cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;