Newsgroup: it.comp.lang.visual-basic
Titolo: errore di file già aperto ????

Questa non la capisco! Sto facendo un prg che esamina un recordset fatto di
un migliaio di record. Per ogni record che soddisfa dei parametri, apro un
file con l'istruzione open:
    FF3 = FreeFile
    Open NomeFile for output as #FF3
dove NomeFile è dato dal valore di un campo dei record (per ognuno è
diverso).
L'operazione va avanti per un pò, poi mi si inchioda dandomi appunto:
errore di runtime 55 File già aperto.
In debug ho controllato che effettivamente, per il record precedente, il
file FF3 (che nel mio caso è il 3) viene correttamente chiuso:
    Close #FF3
 Seguendo passo passo, dopo aver azzerato la variablie FF3 (FF3 =0) rieseguo
il comando FreeFile, il sistema mi restituisce nuovamente 3 (come ci si
aspetta), al successivo tentativo di apertura del file FF3 (come da
istruzione sopra) mi viene generato l'errore, il tutto dopo aver già passato
un centinaio di records.
Secondo voi, da cosa può dipendere?
I
Grazie... Maurizio

 diverso).
Controlla meglio i nomi dei file, evidentemente non sono tutti diversi.
Verifica anche la chiusura di tutti i file aperti, se freefile ti
restituisce 3 evidentemente hai altri 2 file aperti.
ciao.
----------------------------------------------------------------------------
Esiste un luogo dove tecnologia e arte si incontrano
www.tecnologiaEarte.net
----------------------------------------------------------------------------
Gianluca Pisano

 > dove NomeFile è dato dal valore di un campo dei record (per ognuno è


 mi risponde un valore. Che senso ha?
.........
Aspettate, volevo dire ERRORE!

 un file che è stato già aperto e poi chiuso?
se lo hai effettivamente chiuso, nessuno; ma visto che ti da errore
evidentemente non è così.
Tieni anche presente che riaprendo un file esistente for output questo viene
ricreato con perdita dei valori precedentemente memorizzati, quindi se non
vuoi che questo accada usa la modalità append.
ciao.
--
----------------------------------------------------------------------------


Ciao,
se effettivamente i nomi sono tutti diversi, il problema potrebbe essere
dato dalla non corretta temporizzazione dell'istruzione close che rilascia
il sistema quando l'operazione di chiusura e' ancora in essere
(probabilmente a causa del buffer di dati ancora da scaricare fisicamente su
hd).
Se si utilizza un solo file  per volta io consiglio di passare
all'istruzione reset in sostituzione di close# .
beppe
-----------------------------------------------------------
Visita il sito del WWF AltoFerrarese
http://www.comune.cento.fe.it/wwfaf
-----------------------------------------------------------

 wrote in message
9gn7nv$3mr$1...@fe2.cs.interbusiness.it...


 wrote in message
9gn7nv$3mr$1...@fe2.cs.interbusiness.it...


 wrote in message
9gn7nv$3mr$1...@fe2.cs.interbusiness.it...


Ciao,
visto che hai altri files aperti, io gestirei il tutto tramite il controllo
d'errore sull'open, con una funzioncina del tipo:
Option Explicit
Function ApriFile(NomeFile As String, NumeroFile As Integer) As Boolean
    On Error GoTo GestErr
    Open NomeFile For Output As NumeroFile
    Exit Function
GestErr:
    Close# NumeroFile '//questa istruzione e' sicuramente superflua
    ApriFile = True
End Function
che poi richiamerei con:
Dim N As Integer
N = FreeFile(1)
Do While ApriFile("c:\temp\1.txt", N)
    DoEvents
Loop


 comunque non riesce a scrivere questo benedetto file. Non so + cosa
pensare.
Scusa, ma hai visto se il file esiste?
--


 wrote in message
9gn6oe$3at$1...@pegasus.tiscalinet.it...


Grazie Gianluca per la risposta, ma avevo già scritto che ho trovato il
problema: gli archivi con i quali stavo lavrando erano rovinati, quindi mi
andava in errore Ado, ma non visualizzandomi l'errore stesso, non riuscivo a
capire che cosa succedeva.
