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 :

Script pour mettre en page (csv -> ASP avec un XML)


Sujet :

ASP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 143
    Points : 74
    Points
    74
    Par défaut Script pour mettre en page (csv -> ASP avec un XML)
    Bonjour,

    Mon problème je crois q'il sera simple à résoudre :

    J'ai un script :

    Première portion de code (variables et fonctions)

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
     
    Function Add0(nb)
        If CInt(nb) < 10 Then
            nb = "0" & CStr(nb)
        End If
        Add0 = nb
    End Function
     
    ' This function trims the string to the next ";" Ex: "1;2;3" becomes "2;3"
    ' Variable iCell is used to keep track of the current cell
    Function NextCsvCell(ByRef iCell,TxtLine)
        iCell = iCell + 1
        iPos = InStr(TxtLine,";")
        TxtLine = Right(TxtLine,Len(TxtLine) - iPos)
        NextCsvCell = TxtLine
    End Function
     
    ' This function returns the content of the string up to the first ";"
    ' Ex: "1;2;3" returns "1"
    ' Returns an empty string if no ";" are found
    Function CurrCsvCell(TxtLine)
        iPos = InStr(TxtLine,";")
        If iPos = 0 Then
            CurrCsvCell = ""
        Else
            CurrCsvCell = Left(TxtLine,iPos - 1)
        End If
    End Function
     
    Function Process(vPerfDate) 
     
        dim objXML, objLst, objHdl, noOfFund, fs, isFound, isFundFound, fCsvPerf, isError, i, j
        dim FundNumberFront, FundNumberBack, FundNameEn, FundNameFr, FundPerfCode
        Dim c3mo, c6mo, c1yr, c3yr, c5yr, c10yr, cYTD, cIncept, cFormatted, cCurrPct
     
        Set objXML = Server.CreateObject("Microsoft.XMLDOM")
        Set objLst = Server.CreateObject("Microsoft.XMLDOM")
        Set objHdl = Server.CreateObject("Microsoft.XMLDOM")
     
        objXML.async = False
        objXML.Load (Server.MapPath("data/MyFundList.xml"))
     
        If objXML.parseError.errorCode <> 0 Then
            Response.Write(objXML.parseError.reason)
            Response.End
        End If
     
        Set objLst = objXML.getElementsByTagName("Fund") 
        noOfFund = objLst.length
     
        dim csvPerf
        dim tDate
     
        isError = true
     
        Set fs=Server.CreateObject("Scripting.FileSystemObject")
     
    	csvPerf = "data/" & "perf." & year(vPerfDate) & Add0(month(vPerfDate)) & Add0(day(vPerfDate))
     
    	csvPerf = server.mappath(csvPerf)
     
    	If (fs.FileExists(csvPerf))= True Then
            isFound = true
    		isError = false		
    	End If    
     
        if isError = true then 
            Response.Write ("<b>An error has occured, no file was found <br><br>")
            Response.Write ("Performance data file found " & " = " & fs.FileExists(csvPerf) & "<br><br>")
            Response.Write ("Please upload missing files</b>")
            Response.End
        end if

    Deuxème partie de code et celle que j'essais de corriger.....

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
        Set RegularExpressionObject = New RegExp
     
        For i = 0 To (noOfFund - 1)
            Set objHdl      = objLst.item(i)  
            FundNumberFront = objHdl.childNodes(0).text
            FundNumberBack  = objHdl.childNodes(1).text
            FundNameEn      = objHdl.childNodes(2).text
            FundNameFr      = objHdl.childNodes(3).text
            FundPerfCode    = objHdl.childNodes(4).text
     
            set fCsvPerf = fs.opentextfile(csvPerf) 
     
            dim cLine, iPos, iCell
            cLine = ""
            isFundFound = False
     
            while not fCsvPerf.AtEndOfStream
                cLine = fCsvPerf.readLine	
                iPos  = 0
                iCell = 1
     
                While iCell < 25
                    cLine = NextCsvCell(iCell, cLine)
                Wend
     
                If CurrCsvCell(cLine) = FundPerfCode Then
                    isFundFound = True
     
    'C'EST ICI QUE JE DOIS RETOURNÉ AU DÉBUT DE MA LIGNE AVANT DE PASSER À LA SUIVANTE MAIS COMMENT ?
     
     
                    While iCell < 24
                        cLine = NextCsvCell(iCell, cLine)
     
                        Select Case iCell
                        Case 10 c3mo    = CurrCsvCell(cLine)
                        Case 11 c6mo    = CurrCsvCell(cLine)
    	       Case 13 c1yr    = CurrCsvCell(cLine)
    	       Case 15 c3yr    = CurrCsvCell(cLine)
                        Case 17 c5yr    = CurrCsvCell(cLine)
    	       Case 22 c10yr   = CurrCsvCell(cLine)
                        Case 23 cYTD    = CurrCsvCell(cLine)
                        Case 24 cIncept = CurrCsvCell(cLine)
                        End Select
                    Wend
                End If
            wend
    Qui fonctionnait très bien avant qu l'on modifie le formatage (remise en page xls) du fichier source.

    Le fichier source demeure un csv mais les ";" ont tous changés de place dans les lignes (il y a beaucoup plus maintenant)

    Je veux seulement retourner au début de ma ligne pour qu'il ramasse le data. La validation est faite seulement à la fin de la ligne et donc passe à la ligne suivante avant même d'avoir pris les données que je veux.

    Merci !

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 143
    Points : 74
    Points
    74
    Par défaut

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 202
    Points : 215
    Points
    215
    Par défaut
    bonjour sperron,

    je ne comprends rien à ton truc... peux-tu parler un peu français au lieu de nous balancer du code d'emblée, stp ? merci pour nos neurones (enfin, surtout pour les miens semble-t-il)
    Nico, l'agrotic géomatic

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 143
    Points : 74
    Points
    74
    Par défaut
    Merci d'avoir répondu,

    Regarde l'image ci-jointe, c'est une portion de mon fichier .csv, je veux seulement récupérer les valeurs qui se trouvent avant la cellule de validation qui elle est à la fin de ma ligne ("ABC"). Donc je veux récupérer les valeurs en bleues (sur l'image) afin de les disposer sur une page Web dans une autre forme de tableau.

    Je ne sais pas comment faire pour revenir au début de cette ligne puisque le code spécifie d'avancer d'une celllule ";" . Je sais que j'ai ce qu'il faut pour y arriver dans le code mais je n'ai toujours pas trouver comment utiliser et/ou syntaxe qu'il faut pour que ça fontionne.

    C'est seulement 1 ligne de code qu'il faut ajouter, là ou j'ai spécifié dans le 2 groupe de code.

    est-ce un peux plus clair ?

    MERCI !!!!!
    Images attachées Images attachées  

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 202
    Points : 215
    Points
    215
    Par défaut
    et pourquoi tu ne fais pas un 'split' de ta ligne CSV ?
    tu récupères les valeurs correspondants aux index qui précèdent celui de ta variable de validation
    ainsi, pas de pb en cas de modif du CSV de base (sauf si tu déplaces la colonne de validation)
    Nico, l'agrotic géomatic

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 143
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par agrotic
    et pourquoi tu ne fais pas un 'split' de ta ligne CSV ?
    tu récupères les valeurs correspondants aux index qui précèdent celui de ta variable de validation
    ainsi, pas de pb en cas de modif du CSV de base (sauf si tu déplaces la colonne de validation)
    Je ne sais même pas comment faire un "split" comme tu dis en ASP, pourvu que je ne touche pas au fichier source.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 202
    Points : 215
    Points
    215
    Par défaut
    un 'split' te permet de récupérer dans un tableau les différentes valeurs contenues dans une chaine de caractères et séparées par un séparateur spécifique.

    exemple :
    dim maChaine, maChaineSplitted
    maChaine = "1;aft;56;rth;5465"
    maChaineSplitted = split (maChaine, ";")

    que retrouves-tu dans le tableau maChaineSplitted issu du split ? ceci :
    maChaineSplitted(1) : 1
    maChaineSplitted(2) : aft
    maChaineSplitted(3) : 56
    maChaineSplitted(4) : rth
    maChaineSplitted(5) : 5465

    en manipulant chaque ligne de ton csv comme une chaine de caractères dont le séparateur est ";", tu devrais pouvoir t'en sortir.

    par contre, cela veut dire que tu n'utilises plus une grande partie de ton code (il me semble)
    Nico, l'agrotic géomatic

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 143
    Points : 74
    Points
    74
    Par défaut
    Un Grand Merci,

    Je vais essayer ça !

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/03/2007, 08h26
  2. Script pour mise en page
    Par Fabster dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 10/08/2006, 10h53
  3. Script pour faire plusieurs page…
    Par sam01 dans le forum Langage
    Réponses: 7
    Dernier message: 14/04/2006, 21h51
  4. [EDI] Logiciel pour mettre en page du code PHP
    Par Metallic-84s dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 24/03/2006, 13h16
  5. [XHTML] Moyen plus rapide pour mettre mes pages en XHTML
    Par Linoa dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 30/08/2005, 17h46

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