Oppure

Loading
14/12/09 16:08
Dyango
ciao ragazzi praticamente io dopo aver ciclato fino alla fine del file e aver letto tutti i record dovrei di nuovo leggere i record del file pero essendo alla fine del file giustamente non mi entra piu nel ciclo until eof(3) come posso fare per rileggere i record nell archivio (forse dovrei spostare il puntatore che ora e alla fine del file su all inizio del file:-|) vi allego il codice cosi capite meglio

a00_op_Iniziali
    n_licen = InputBox("inserire quandi dipedenti si vuole eliminare dall'archivio")
    For num_volte = 1 To n_licen
        cod_lic = InputBox("Inserire il codice del dipendente da licenziare")
        Write #3, cod_lic
    Next
    Close #3
    Open App.Path & "\dipendenti_licenziati.txt" For Input As #3
    Do Until EOF(1)
       Input #1, cod_dip, anno, mese, ore_ord, ore_stra
       Do Until EOF(3)
          Input #3, cod_lic
          If cod_dip <> cod_lic Then
             Write #2, cod_dip, anno, mese, ore_ord, ore_stra
          Else
             trovato = "no"
          End If
       Loop
   Loop
   If trovato <> "no" Then
      MsgBox ("Nessuna corrispondenza con i dati inseriti")
   Else
      MsgBox ("Operazione completata con successo")
   End If
   Close


Private Sub a00_op_Iniziali()
   Open App.Path & "\dipendenti.txt" For Input As #1
   Open App.Path & "\dipendenti_agg.txt" For Output As #2
   Open App.Path & "\dipendenti_licenziati.txt" For Append As #3
End Sub


Ultima modifica effettuata da Dyango 14/12/09 16:30
aaa
14/12/09 16:27
GrG
vedendo quel codice diciamo che non è che mi si siano schiarite molto le idee...

comunque per rileggere il file se ancora non è stato chiuso puoi usare sempre come "numero" 3 nel senso : Open ... as input #3

altrimenti se il file ancora non è stato chiuso usi 4

puoi usare anche una variabile del tipo

dim n as integer
n = 3
Open ... as input #n
e poi la incrementi con: n = n + 1

oppure usi n = FreeFile che da a n un "numero libero"
Ultima modifica effettuata da GrG 14/12/09 16:28
aaa
14/12/09 18:21
Dyango
Postato originariamente da GrG:

vedendo quel codice diciamo che non è che mi si siano schiarite molto le idee...

comunque per rileggere il file se ancora non è stato chiuso puoi usare sempre come "numero" 3 nel senso : Open ... as input #3 mi da errore se lo riapro sempre con lo stesso nome logico

altrimenti se il file ancora non è stato chiuso usi 4 se metto 4 mi mi sballa la lettura avendo messo io 3 ma nella parte dopo hai fornito la soluzione ma...

puoi usare anche una variabile del tipo

dim n as integer
n = 3
Open ... as input #n
e poi la incrementi con: n = n + 1 troppo macchinoso a parer mio

oppure usi n = FreeFile che da a n un "numero libero" stesso problema di quando mi hai consigliato il 4

grazie grg per le risposte ma mi sono accorto che che spostando alcune istruzioni che avevo posizionato male per colpa della fretta ottengo proprio quello che voglio
nuovo codice:
a00_op_Iniziali
    n_licen = InputBox("inserire quandi dipedenti si vuole eliminare dall'archivio")
    For num_volte = 1 To n_licen
        cod_lic = InputBox("Inserire il codice del dipendente da licenziare")
        Write #3, cod_lic
    Next
    Close #3
    
    Do Until EOF(1)
       Input #1, cod_dip, anno, mese, ore_ord, ore_stra
       Open App.Path & "\dipendenti_licenziati.txt" For Input As #3 'apro il file 3 dentro il ciclo until EOF(1)
       Do Until EOF(3)
          Input #3, cod_lic
          If cod_dip <> cod_lic Then
             Write #2, cod_dip, anno, mese, ore_ord, ore_stra
             trovato = "si"
          End If
       Loop
       Close #3  'aggiunto questo tra i due loop
   Loop
   If trovato = "si" Then
      MsgBox ("Operazione completata con successo")
   Else
      MsgBox ("Nessuna corrispondenza con i dati inseriti")
   End If
   Close
Ultima modifica effettuata da Dyango 14/12/09 18:25
aaa