Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    VB6 Da Access a file TXT

    Devo salvare il contenuto di una tabella di access in un file di testo TXT e fino quì non ho riscontrasto nessun problema, alcuni campi della tabella contengono dati uguali e vorrei che venisse visualizzato solamente il primo, per spiegarmi meglio riposto un esempio:

    DA DATABASE
    CAMPO1 CAMPO2
    MASSIMO DATO1
    MASSIMO DATO2
    MASSIMO DATO3
    MINIMO DATO4
    MINIMO DATO5
    MEDIO DATO6
    MEDIO DATO7

    DATI SALVATI IN FILE DI TESTO
    MASSIMO DATO1
    " DATO2
    " DATO3
    MINIMO DATO4
    " DATO5
    MEDIO DATO6
    " DATO7

    Come posso fare?

  2. #2
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,031
    forse la sintassi SQL già potrebbe aiutarti... forse.
    Altrimenti la prima cosa che mi viene in mente è quella di fare un array per ogni campo e ogni stampa su testo controlli che non stia già negli elementi precedenti dell'array.

  3. #3
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755
    vai con la query

    select distinct ...
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  4. #4
    Con Select Distinct mi da errore, riposto qui sotto il codice che utilizzo per salvare i dati in un file di testo

    codice:
    Stringa = "Select  ID_RACCOLTA_LP,LP, NOME_BRANO, NUMERO_BRANO, DURATA, VOTO " & _
    "from Tbl_Canzoni order by LP, ID_RACCOLTA_LP, val(NUMERO_BRANO)"
    
    Set rs = New ADODB.Recordset
    rs.Open Stringa, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\ELVIS.mdb; " & _
    "Jet OLEDB:Database Password=Admin;", adOpenKeyset, adLockOptimistic, adCmdText
        
    
    'SALVA IN UN FILE TXT
    '**************
    Open App.Path & "\TUTTI_LP.txt" For Output As #1
    Print #1, "DATA " & Date
    Print #1, ""
    Print #1, "LP"; vbTab; vbTab; vbTab; "N°"; vbTab; "DURATA"; vbTab; "VOTO"; vbTab; "NOME_BRANO"
    Do Until rs.EOF
    
    durat = "00:" & rs.Fields("DURATA").Value
    DURATA = (3600 * Val(Mid(durat, 1, 2)) + (60 * Val(Mid(durat, 4, 2)))) + Val(Mid(durat, 7, 2))
    
    durat1 = DURATA + durat1
    
    intRecord = intRecord + 1
    NUMERO_BRANO = rs.Fields("NUMERO_BRANO").Value
    DURATA = rs.Fields("DURATA").Value
    NOME_BRANO = rs.Fields("NOME_BRANO").Value
    VOTO = rs.Fields("VOTO").Value
    LP = (rs.Fields("LP").Value)
      
    rs.MoveNext
    
    Print #1, LP; vbTab; NUMERO_BRANO; vbTab; DURATA; vbTab; VOTO; vbTab; NOME_BRANO
    
    Loop
    
    conta_record = intRecord
      
    ORA = Fix(durat1 / 3600)
    MINUTI = Fix(durat1 / 60) Mod 60
    SECONDI = durat1 Mod 60
    If Len(MINUTI) = 1 Then
    MINUTI = "0" & MINUTI
    End If
    If Len(SECONDI) = 1 Then
    SECONDI = "0" & SECONDI
    End If
    
        TOT_TIME = ORA & ":" & MINUTI & ":" & SECONDI
    
        Print #1, ""
        Print #1, "TOTALE BRANI " & conta_record
        Print #1, "TOTALE TEMPO " & TOT_TIME
        Print #1, "°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°"
        Print #1, ""
    
      Close #1
    Il Campo a cui vorrei che fosse visualizzato solo nel primo record è "LP", con le Array come posso fare?

  5. #5
    Rifacendomi all'esempio proposto nel primo post della discussione, se ho ben capito la tua esigenza, puoi prendere spunto da queste righe di codice:
    codice:
    Do Until rs.EOF
        If CAMPO1 <> OldValue Then
            Debug.Print CAMPO1 & vbTab & CAMPO2
            OldValue = CAMPO1
        Else
            Debug.Print Chr(34) & vbTab & CAMPO2
        End If
        rs.movenext
    Loop
    Ciauz

    Chico

  6. #6
    Ti ringrazio per il suggerimento, ho provato ma ho ottenuto gli stessi risultati di prima

    codice:
    'SALVA IN UN FILE TXT
    '**************
    Open App.Path & "\TUTTI_LP.txt" For Output As #1
    Print #1, "DATA " & Date
    Print #1, ""
    Print #1, "LP"; vbTab; vbTab; vbTab; "N°"; vbTab; "DURATA"; vbTab; "VOTO"; vbTab; "NOME_BRANO"
    Do Until rs.EOF
    
    durat = "00:" & rs.Fields("DURATA").Value
    DURATA = (3600 * Val(Mid(durat, 1, 2)) + (60 * Val(Mid(durat, 4, 2)))) + Val(Mid(durat, 7, 2))
    
    durat1 = DURATA + durat1
    
    intRecord = intRecord + 1
    NUMERO_BRANO = rs.Fields("NUMERO_BRANO").Value
    DURATA = rs.Fields("DURATA").Value
    NOME_BRANO = rs.Fields("NOME_BRANO").Value
    VOTO = rs.Fields("VOTO").Value
    LP = (rs.Fields("LP").Value)
      
    'SUGGERIMENTO DI chico62
        If LP <> OldValue Then
            Debug.Print LP & vbTab & NUMERO_BRANO
            OldValue = LP
        Else
            Debug.Print Chr(34) & vbTab & NUMERO_BRANO
        End If
    'FINE SUGGERIMENTO
    
    rs.MoveNext
    
    Print #1, LP; vbTab; NUMERO_BRANO; vbTab; DURATA; vbTab; VOTO; vbTab; NOME_BRANO
    
    Loop
    
    conta_record = intRecord
      
    ORA = Fix(durat1 / 3600)
    MINUTI = Fix(durat1 / 60) Mod 60
    SECONDI = durat1 Mod 60
    If Len(MINUTI) = 1 Then
    MINUTI = "0" & MINUTI
    End If
    If Len(SECONDI) = 1 Then
    SECONDI = "0" & SECONDI
    End If
    
        TOT_TIME = ORA & ":" & MINUTI & ":" & SECONDI
    
        Print #1, ""
        Print #1, "TOTALE BRANI " & conta_record
        Print #1, "TOTALE TEMPO " & TOT_TIME
        Print #1, "°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°"
        Print #1, ""
    
      Close #1
    Ho forse sbagliato qualche cosa?

  7. #7
    L'esempio era solo una traccia .....

    Sostituisci il codice che va da "SUGGERIMENTO DI CHICO62" a "Loop" con:
    codice:
    'SUGGERIMENTO DI chico62
    If LP <> OldValue Then
        Print #1, LP; vbTab; NUMERO_BRANO; vbTab; DURATA; vbTab; VOTO; vbTab; NOME_BRANO
        OldValue = LP
    Else
        Print #1, Chr(34); vbTab; NUMERO_BRANO; vbTab; DURATA; vbTab; VOTO; vbTab; NOME_BRANO
    End If
    rs.MoveNext
    Loop
    E, quando con determinate istruzioni non si ottengono i risultati desiderati, è buona norma postare:
    -eventuali codici di errore e la riga del codice nella quale si presentano
    -diversamente, il risultato che si ottiene e quello che si sarebbe voluto ottenere.


    Ciauz

    CHico

  8. #8
    OK OK era quello che volevo... ti ringrazio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.