+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 4 su 4

Creazione di file testo-Riporto valuta

  1. #1
    Mokor non è in linea Scolaretto
    Ho una routine che preleva dati da un Db access, crea un file di testo e vi inietta i dati in stringhe sequenziali senza virgolette (grazzie all'aiuto di Nick).
    Il problema è che uno di questi dati è un numero decimale (fisso di due cifre) e lo devo convertire in un un numero fisso di 10 caratteri mantenendo i due decimali ma eliminando la virgola senza la virgola. Dove non vi sono numeri devo riempire con 0.
    Es: 23,45 deve diventare 0000002345.
    Questa è la routine usata basato su un'esempio che punta a un recordset RSPstDat1 la scrivo interamente per offrire un'esempio anche a chi servono le altre sintassi il campo su cui ho il problema è DpnImp:


    'Connessioni
    Connessioni
    'Verifica presenza dati
    If RSMnsPst1.RecordCount > 0 Then
    Else
    MsgBox "Non ci sono dati corrispondenti da elaborare!"
    Exit Sub
    End If
    'Variabili di transito
    Dim Contatore As Integer
    Dim StringaDati As String
    'Creazione e apertura file da scrivere
    Open txtGenFilePercorso.Text & txtGenFileNome.Text & ".DAT" For Output As #1
    'Inizializza contatore
    Contatore = 0
    'Scritura stringhe
    While Not RSMnsPst1.EOF
    StringaDati = ""
    StringaDati = StringaDati & "P"'Tipo record (Testo fisso)
    StringaDati = StringaDati & RSMnsPst1("AznCod") 'Codice società
    StringaDati = StringaDati & "1"'?(Testo fisso)
    StringaDati = StringaDati & "0000"'Stabilimento (Omesso)(Testo fisso)
    StringaDati = StringaDati
    StringaDati = StringaDati & RSMnsPst1("DpnCod") 'Matricola
    StringaDati = StringaDati & "3159"'?(Testo fisso)
    StringaDati = StringaDati & RSMnsPst1("DpnImp") '??????????
    Print #1, StringaDati
    RSMnsPst1.MoveNext
    Contatore = Contatore + 1
    Wend
    'Chiude il file generato(e inietta i record residui nel buffer)
    Close #1
    'Sconnessioni
    Sconnessioni

  2. #2
    L'avatar di Master85
    Master85 non è in linea Moderatore Globale Ultimo blog: Eclipse: Un IDE per PHP e Python
    Ciao Mokor,
    Ho realizzato questo programma Visual Basic appositamente per risolvere il tuo problema [img]smileys/smiley4.gif[/img]...
    ------------------------------------
    Dim Var1 As Single
    Dim Var2 As String
    Dim Word_Lenght As Integer

    Function Replace_Comma(stringa)
    Replace_Comma = Replace(stringa, ",", "")
    End Function

    Function Add_Zero(stringa)
    Word_Lenght = Len(stringa)
    Var_Null = ""
    For i = 1 To 10 - Word_Lenght
    Var_Null = Var_Null & "0"
    Next i

    Add_Zero = Var_Null & stringa
    End Function

    Private Sub Command1_Click()
    Var1 = Text1.Text
    Var2 = Replace_Comma(Var1)
    Var2 = Add_Zero(Var2)
    Text2.Text = Var2
    End Sub
    ------------------------------------

    Testato, funziona perfettamente, utilizza le due funzioni come meglio credi.

    Ciao, sper di esserti stato utile [img]smileys/smiley2.gif[/img]

  3. #3
    Mokor non è in linea Scolaretto
    Grazie per aver colmato un'altro buco della mia ignoranza, sei un grande! [img]smileys/smiley2.gif[/img]

  4. #4
    Mokor non è in linea Scolaretto
    Conscio del fatto che potrebbe essere ulteriormente semplificabile, condivido con voi il funzionante risultato finale ottenuto grazie al suggerimento qui datomi.

    DATI ORIGINE:
    3,02
    14,53
    4,84
    3,37

    RISULTATO:
    P747880030110000000004225131590000000302
    P747880030110000000004234831590000001473
    P747880030110000000004298131590000000484
    P747880030110000000006666631590000000337

    CODICE APPLICATO:
    'Connessioni
    Connessioni
    'Verifica presenza dati
    If RSMnsPst1.RecordCount > 0 Then
    Else
    MsgBox "Non ci sono dati corrispondenti da elaborare!"
    Exit Sub
    End If
    'Variabili di transito
    Dim ContatoreAs Integer
    Dim DpnImpMEMAs String
    Dim StringaDati As String
    'Creazione e apertura file da scrivere
    Open txtGenFilePercorso.Text & txtGenFileNome.Text & ".DAT" For Output As #1
    'Inizializza contatore
    Contatore = 0
    'Scritura stringhe
    While Not RSMnsPst1.EOF
    'Trasformo l'importo nel fomato 0000000000
    'con gli ultimi due decimali senza virgola di separazione
    DpnImpMEM = RSMnsPst1("DpnImp")
    DpnImpMEM = Format((Replace(DpnImpMEM, ",", "")), "0000000000")
    'Compongo stringa
    StringaDati = "" 'Pulisce eventuali residui
    StringaDati = StringaDati & "P"'Tipo record (Testo fisso)
    StringaDati = StringaDati & RSMnsPst1("AznCod") 'Codice società
    StringaDati = StringaDati & txtPstDataInizioYY 'Anno(AAAA)
    StringaDati = StringaDati & txtPstDataInizioMM 'Mese(MM)
    StringaDati = StringaDati & "1"'(Testo fisso)
    StringaDati = StringaDati & "0000"'Stabilimento (Omesso)(Testo fisso)
    StringaDati = StringaDati & "00" 'Chiave(Omesso)(Testo fisso)
    StringaDati = StringaDati & "00" 'Qualifica(Omesso)(Testo fisso)
    StringaDati = StringaDati & "0"'Prefisso Matricola(Testo fisso)
    StringaDati = StringaDati & RSMnsPst1("DpnCod") 'Matricola
    StringaDati = StringaDati & "3159"'(Testo fisso)
    StringaDati = StringaDati & DpnImpMEM'Importo dipendente (in formato 0000000000 senza virgola)
    Print #1, StringaDati
    'Spostamento al record sucessivo
    RSMnsPst1.MoveNext
    'Record elaborati (da riportare nella routine msgbox esito)
    Contatore = Contatore + 1
    Wend
    'Chiude il file generato(e inietta i record residui dal buffer)
    Close #1
    'Sconnessioni
    Sconnessioni

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. MySQL Workbench e valuta in Euro da file csv
    Da vbrookie nel forum MySQL
    Risposte: 1
    Ultimo Post: 10-02-2018, 17:43
  2. Formato valuta in Campo di Testo
    Da tippolo nel forum Microsoft Word
    Risposte: 2
    Ultimo Post: 21-12-2007, 19:02
  3. creazione file.exe
    Da jeppy1979 nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 26-04-2005, 23:54
  4. Riconoscimento creazione file
    Da diver977 nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 24-09-2004, 16:43
  5. Creazione di file Acces
    Da elios81 nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 13-05-2004, 22:57