Oppure

Loading
25/07/12 7:31
arterella
Ciao a tutti,
avrei bisogno di una mano :)

Io ho un file .xml dove vengono salvati tutti i nomi dei file che il mio programma crea (programma in .NET).
Praticamente il programma estrae i dati di vendita dal nostro gestionale, li elabora e crea vari files (il file con le giacenze, il file delle vendite etc).

Esempio:
-<FileState>
<FileName>
C:\Documents and Settings\All Users\Dati applicazioni8.20120428.Z
</FileName>
<Uploaded>true</Uploaded>
<UploadDate>2012-04-28T22:10:49.53125+02:00</UploadDate> <DataDate>2012-04-29T00:00:00</DataDate> <CheckedFTPPresence>true</CheckedFTPPresence> </FileState>

Quando il negozio è chiuso non crea il file ma salva solo nel file xml che ha cercato di estrarre i dati scrivendo il nome del file "Fittizio.txt". e quindi filename sarà

<Filename>
Fittizio.txt
</Filename>

Ora è successo che in un negozio hanno avuto problemi e invece di creare i dati corretti mi ha creato tanti dati fittizi quante sono state le giornate problematiche.
Siccome il programma è pensato per estrarre i dati una sola volta (tranne il caso in cui vengano estratti manualmente giorno per giorno), non riesco a fargli ricreare le giornate "mancanti".
se controllo le date non riesco a controllare il nome del file, se controllo il nome del file e cerco di ricrearlo gli dà la data sbagliata.
Ho pensato quindi di cancellare dal file di controllo .xml tutte le righe che contengono "fittizio.txt" ma sinceramente non so come si fa....
esiste una funzione Delete() che mi faccia fare ciò?
Non posso nè estrarre i dati manualmente, nè modificare l'xml manualmente, perchè deve essere tutto automatizzato..... (capo docet!)
Grazie se riuscite a darmi una dritta

Ingrid
Ultima modifica effettuata da arterella 25/07/12 7:43
aaa
25/07/12 7:58
HeDo

a parte la pratica abominevole di creare delle entry fittizie, puoi risolvere il tutto utilizzando un po di xquery. In questo post su msdn ti spiegano come fare: social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/0e00125b-1198-482f-9b65-9bbfa167f995/
aaa
25/07/12 8:03
arterella
Postato originariamente da HeDo:


a parte la pratica abominevole di creare delle entry fittizie, puoi risolvere il tutto utilizzando un po di xquery. In questo post su msdn ti spiegano come fare: social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/0e00125b-1198-482f-9b65-9bbfa167f995/


A mia discolpa posso solo dire che il programma non l'ho fatto io! L'ha fatto un programmatore che si è licenziato e io ho dovuto prendere in mano sto casino immenso :S
Adesso guardo il link.
Grazie
Ingrid
aaa
25/07/12 9:58
arterella
Sono riuscita a risolvere il problema che o controllavo le date o il nome del file facendo un controllo sull'xml

[CODE]

Private Sub _RegenerateDummyFiles()

' crea i file corretti ma bisogna cancellare la riga dummy.txt sennò
' la ricrea in eterno!

Dim oFileState As New Settings.FileState
Dim oTempSettings = CType(Me.Settings.Clone, Phoenix.DataCollect.Settings.Settings)


For Each xDate In Me.Settings.SalesHeader.DatesExtracted
For Each oElement In Me.Settings.SalesHeader.FileState

If oElement.CheckedFTPPresence = False Then
If oElement.DataDate = xDate Then
_CreateAndUploadFilesPeriod2(xDate, xDate)
End If
End If

Next
Next

End Sub
[/CODE]

E già ho fatto un passo avanti :k: , il problema è che non cancellando la parte sbagliata nel foglio xml mi continuerà a ricreare ogni giorno i dati che sono fittizi.....
Vediamo se con le xquery ci riesco..... :pat:
aaa
26/07/12 15:57
arterella
Allora con le xquery non sono riuscita.... allora mi sono "studiata" per bene l'xml, e i file fittizi segnano FALSE nell'upload, siccome il controllo per ricreare i files lo faccio su questo FALSE ho pensato di cancellare il <CheckedFTPPresence>false</CheckedFTPPresence>, perchè sennò ogni giorno alla partenza del programma mi ricreerebbe i dati di queste giornate...

Ho fatto così:


 Private Sub _DeleteDummyFiles()
     
        Dim lineaRicerca As String = "<CheckedFTPPresence>false</CheckedFTPPresence>"
        Dim lineaSostituzione As String = " "
        Dim linee As String() = IO.File.ReadAllLines("C:\ProgramData\settings.xml")
       

        For i As Integer = 0 To linee.Count - 1
            If linee(i) = lineaRicerca Then 
                linee(i) = lineaSostituzione
            End If
        Next
        IO.File.WriteAllLines("C:\ProgramData\settings.xml", linee)
       
        _SaveLocalSettings(Me.Settings)

    End Sub


In poche parole, scorro il file xml e se trovo la riga uguale a quella che io cerco la cancello.... potrei anche mettere qualcosa tipo <CheckedFTPPresence>RICREATO</CheckedFTPPresence>

Devo solo aggiungere un piccolo controllo.... perchè se per caso un file "vero" non è stato "uploaddato" sull'ftp rischio che poi questo non venga più caricato.


aaa