Newsgroup: it.comp.lang.visual-basic
Titolo: file random come utilizzarli?

Salve! In questi giorni mi è stata fatta una richiesta da un cliente che mi
ha buttato
nel quasi-panico:
il suo ufficio basa le sue attività su un software gestionale scritto in
basic nel '83, continuamente upgradato nel corso degli anni; UN DINOSAURO!
Ora
vorrebbe "travasare" la banca dati (migliaia e migliaia di dati) in un
database. I file in questione sono file di testo random.
Come bisogna fare? Possibile che si deve andare ad aprire il file,
esaminarne la struttura (ad esempio con PCTOOLS) e "scorporarlo" in maniera
certosina?
Sapete dell'esistenza di un'applicazione che può fare parte del lavoro
automaticamente?
Se avete già fatto un lavoro del genere, mi descrivete come avete fatto?
                                                              CIAOOO

...


Ciao Francesco.
A)La prima cosa che devi sapere è la lunghezza di un singolo record.
Ti allego un esempio:
    Dim rcd As String * 300  '<--- record lungo 300
    Open "c:\file_input" For Random As #1 Len = 300
    Open "c:\file_output" For Output As #2
    Do While Not EOF(1)
        Get #1, , rcd  <--- legge ogni 300 byte
        Print #2, rcd  <--- scrive file
    Loop
B)Se poi conosci anche i campi del database di partenza e le relative
lunghezze, procedi così:
1) Al tuo pgm aggiungi un modulo e dichiari un nuovo tipo:
Public Type pippo
    campo1 As String * 3
    campo2 As String * 9
    campo3 As String * 4
    campo4 As String * 42
    .......
End Type
2) Il codice si modifica così:
    Dim db_input as pippo <---
    Open "c:\file_input" For Random As #1 Len = 300
    Open "c:\file_output" For Output As #2
    Do While Not EOF(1)
        Get #1, , db_input  <--- legge ogni 300 byte e scrive il contenuto
                                                nella struttura che hai
creato
        Print #2, db_input.campo1  <--- così facendo ti scrive solo
                                                                il primo
campo
      ....
    Loop
3) Per scrivere il database di output crei un ulteriore "tipo" con le
definizioni dei campi e procedi.
Spero di esserti stato d'aiuto. Saluti, Maurizio.
--
For private reply write to 
compig...@conecta.it

Caro Amico,
purtroppo credo che non bastino i pur buoni consigli che gli altri amici ti
hanno dato...
Infatti è possibile che i dati numerici siano stati memorizzati in modo
impaccato.
Come se non bastasse, la Microsoft ha cambiato il tipo di impaccamento del
Double Precision nel corso degli anni...
Se non riesci a venirne a capo puoi contattarmi: ho già affrontato questo
tipo di problema.
Ciao!
============================================
                      CYBER Hardware & Software
                         di Ettore Massimo Albani
                           Via Scapacchiò, 48/B
              35030 Selvazzano Dentro (PD) - Italy
                         Tel./Fax: 
(+39) 049-638681
 
http://www.protec.it/cyber
                         E.mail: 
cy...@protec.it
============================================

In effetti avere a disposizione il tracciato record del file random ti sarebbe
utile.
I file random, essendo a lunghezza fissa, offrono però un'altra possibilità: se
possiedi Access,
puoi utilizzare una funzione che ti permette di creare una tabella da un file
come quello che devi trattare.
Apri Access, nel database che preferisci opziona "importa tabella" scegli un
formato testo e poi fai ad aprire il tuo file di dati. Scegli l'opzione "a
lunghezza fissa". Seguendo le istruzioni passo-passo, puoi delimitare i campi in
modo abbastanza rapido e preciso (salvo formati paked dei valori numerici).
Prendi queste informazioni con cautela, però in un paio di occasioni mi è stato
utile agire così.
Ciao.Maurizio.
