IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP Discussion :

RecordSet classement par date


Sujet :

ASP

  1. #1
    Membre averti Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Points : 332
    Points
    332
    Par défaut RecordSet classement par date
    Bonjour.

    Je travaille sur un script qui semble ne pas fonctionner correctement.
    Ce script traite des fichiers html dans un répertoire et génère un fichier xml qui contient peu ou prou un listing de ces fichiers, classé par date (date récupérée dans un metadata du fichier html). Ces données sont insérées dans un objet oRs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    ' Creation de mon objet
    Set oRs = CreateObject("ADODB.Recordset")
     
    .. ouverture du fichier etc...
     
    strNewsDate = GetFileMetaTag("<meta name=""issueDate"" content=""",""">", strFileContents)
    strNewsDate = replace(strNewsDate,"/","-")
    strTime = objFile.DateLastModified
    strNewsHour = Hour(strTime)
    if (Len(strNewsHour)<2) then strNewsHour = "0" & strNewsHour
    	strNewsMinute = Minute(strTime)
    if (Len(strNewsMinute)<2) then strNewsMinute = "0" & strNewsMinute
    	strNewsISOTime = strNewsDate & "T" & strNewsHour & ":" & strNewsMinute & ":" & "00" & "+01:00"
    oRs.Fields("PubDate").Value = strNewsISOTime
     
    ... lecture des fichiers htm
    D'autres traitements sont fait puis enfin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    oRs.Sort = "PubDate DESC"
    oRs.MoveFirst
     
    ecriture du fichier xml
    ...
    Mes dates sont au format :
    23/04/2008
    Dans mes fichiers de départ en html,

    Et au format :
    30-01-2008T13:33:00+01:00

    Dans le fichier xml d'arrivée.

    Le classement ne fonctionne pas, tout le script se déroule correctement, mais je me retrouve avec un fichier xml classé ainsi :

    30-01-2008T13:33:00+01:00
    26-03-2008T12:42:00+01:00
    13-02-2008T13:37:00+01:00
    09-04-2008T14:10:00+01:00

    Est-ce que la méthode moveFirst après le Sort permet de revenir au premier élément du recordset classé ou non?
    Ce que je ne comprends pas c'est que ce script fonctionnait bien jusqu'à présent (du moins apparemment, ce n'est pas mon scripts).
    Voilà si vous pouvez m'éclairer, j'ai cherché mais pas forcément trouvé de réponse à mes questions, et n'étant pas un expert d'ASP (c'est le premier code ASP que j'étudie de ma vie alors bon... ça n'aide pas)
    Linio

  2. #2
    Membre actif Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Points : 243
    Points
    243
    Par défaut
    Désolé pour ma réponse qui te servira sans doute à rien.
    Mais j'avais bosser sur un truc en xml mais avec java.
    XML te traite les info au calendrier gregorien et c'est pour ca que tu te tapes les dates qur 20 caractères.
    La date doit être formater (en java y'avait une fonction pour ca mais bon...)

    Après pour tri je ne sais pas trop.

    PAr exemple moi je bosse avec Access,
    quand je fais un select, Access me renvoie la date en jj/mm/aaaa
    mais pour le stockage je dois le mettre en mm/jj/aaaa

    essaie de te renseigner les standard et sur les format GregorianDate

    Désolé de pas etre plus utile...

  3. #3
    Membre actif Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Points : 243
    Points
    243
    Par défaut
    Dans ton xsd tu utilises bien le format xs:date?
    Si oui, alors le stockage se fait sur les 20 caractères que tu as dit...
    30-01-2008T13:33:00+01:00

    je te conseil si tu veux pas te casser la tete, de mettre ta date en jj/mm/aaaa en element string. ca t'évitera des problème.


    avant ca tu as essayer de stocker tes dates en jj-mm-aaaa au moin?
    parce que le classement devrait marcher tout de même si tu ne veux que le classement

  4. #4
    Membre averti Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Points : 332
    Points
    332
    Par défaut
    Comme dit ce n'est pas mon script, et je ne peux pas changer aucune des données, ni en entrée, ni en sortie, je dois juste m'arranger pour avoir un classement qui marche...

    Vive le boulot...
    Linio

  5. #5
    Membre actif Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Points : 243
    Points
    243
    Par défaut
    juste la question...
    t'as essayer de stocker en jj-mm-aaaa quitte a le retransformer après?

    Si tu vois que cela pose trop de problème, dans ce cas expliques toi avec le boss en lui prouvant que tu as une idée plus performante. Les boss ne sont pas tous butés. lol

    En fait que veux tu? changer le format? ou le format tu t'en tapes tant qu'il trie bien?

  6. #6
    Membre averti Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Points : 332
    Points
    332
    Par défaut
    Mon boss n'est pas forcément buté, ni le boss de celui ci, ni son boss, ni son référent chez mon client, ni même le sous boss du référent de mon boss, par contre la centaine de clients qui utilisent ce scripts eux sont hargneux

    Non mais pour faire simple en gros j'ai plusieurs dizaine de milliers de fichiers avec ce format, donc, non, vraiment, je peux pas changer ni l'entrée ni la sortie, c'est pas de la mauvaise volonté ni de ma part ni de personne, c'est juste un peu trop tard

    Je pense justement que la date a été mise en ISO pour que le classement fonctionne.

    Donc je ne sais pas quelle est l'algorithme de comparaison des dates en fait ?
    Parce que s'il compare les chaines effectivement... ça va pas marcher...
    Linio

  7. #7
    Membre actif Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Points : 243
    Points
    243
    Par défaut
    mais en théorie, il est pas con,
    si tu veux fait un tri (même à l'ancienne), il doit reconnaitre que c'est des dates.
    donc avec des > ou < tu dois pouvoir faire un order.
    un genre de tri a bulle

    for(i machin et le reste)
    for(j machin et le reste)
    if Date(ladate(i)<Date(ladate(j))) then

    etc...
    next
    next

    En ASP doit y avoir l'équivalent de CInt pour les entier ou CStr pour les String
    essaie CDte, ou fait juste une fonction qui va copier tes dates dans le bon format.

    Sinon:
    Une fois, j'avais fait un tableau en 3 colonne dans lequel javais des chiffres de 1 a n, et dans l'autre colonne j'avais les infos (pour toi les dates au format bidon), et une troisième les infos changée; Tu fais un tri sur la troisième colonne ou y'aura effectivement les infos faciles a triées et puis change toutes la ligne en cas de changement.
    Une fois que c'est trié tu renvoies les infos au format correspondant a la 2ieme ou 3ieme colonne selon le format que tu veux...
    Par contre c'est assez lourd en CPU... si tu as des milliers de lignes. Mais de toute manière le tri doit se faire d'une manière ou d'une autre.

  8. #8
    Membre averti Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Points : 332
    Points
    332
    Par défaut
    C'est surtout que j'ai pas mal de fichiers à traiter avec des contraintes de traitement ...

    Bon enfin je vais essayer de me renseigner sur ce format de date...

    Merci pour ces quelques précisions en tout cas.
    Linio

  9. #9
    Membre actif Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Points : 243
    Points
    243
    Par défaut
    Mais j'avoue ce format xs:date il fait ch***;
    Déjà en java c'était compliqué mais... ça doit être encore plus embêtant pour le formaté
    Désolé... Courage (a demain lol)

  10. #10
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,

    D'après http://www.w3schools.com/ADO/prop_rs_sort.asp il faut que la propriété "CursorLocation" du recordset soit "adUseClient".

    Comment ouvres-tu ton recordset?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

Discussions similaires

  1. [MySQL-5.1] Classement par date/heure
    Par Invité dans le forum Requêtes
    Réponses: 5
    Dernier message: 18/09/2013, 14h42
  2. [AC-2010] classement par date
    Par mcaiki dans le forum VBA Access
    Réponses: 2
    Dernier message: 25/08/2011, 09h50
  3. [MySQL] Classement par date
    Par gunth dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 15/02/2008, 18h04
  4. [Conception] Classement par date et id : donner la priorité
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 01/02/2006, 15h04
  5. Problème classement par date
    Par Triomen dans le forum Langage SQL
    Réponses: 12
    Dernier message: 06/09/2005, 14h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo