Newsgroup: it.comp.lang.visual-basic
Titolo: File bloccato ed errori 70 e 75

Ho un'applicazione che, installata su quattro PC (XP Professional SP2),
scrive un file di testo, sempre con lo stesso nome, in un'unica
directory, fisicamente creata sul disco di un server Win2003 e mappata
su ogni singolo PC, questo file viene elaborato e cancellato da
un'ulteriore applicazione, non scritta da me,  installata su un quinto
PC (XP Professional SP2), che anche lui ha mappato la directorry del
server come gli alri quattro.
Cosa succede: l'applicazione funziona correttamente per alcuni giorni,
poi senza una spiegazione plausibile il file creato sul server risulta
"bloccato da un altro processo" e non c'e' modo di "sbloccarlo" se non
spegnendo tutti i PC.
Il codice controlla l'esistenza del file nella directory, se non lo
trova, vuol dire quindi che il quinto PC l'ha elaborato e cancellato
correttamente, esegue le seguenti istruzioni:
	    .....................
            lI = 1
            For lI = 1 To 5
                lFileLocked = False
                Screen.MousePointer = vbHourglass
                lFreeFile = FreeFile
                On Error GoTo OpenError
                Open lNomeFile For Output Lock Read Write As #lFreeFile
                On Error GoTo Errori
                If lFileLocked = False Then
                    lFileOk = True
                    Exit For
                End If
            Next lI
            On Error GoTo Errori
	    .....................
    Exit Function
OpenError:
    Select Case Err.Number
        Case 70
            lFileLocked = True
            lFreeFileLog = FreeFile
            Open lNomeFileLog For Append As #lFreeFileLog
            Print #lFreeFileLog, "Errore: Autorizzazione negata"
            Close #lFreeFileLog
            Sleep (5000)
            Resume Next
        Case Else
            Screen.MousePointer = vbNormal
	    .................
	    .................
            Exit Function
    End Select
Errori:
    Screen.MousePointer = vbNormal
    Select Case Err.Number
	    .................
	    .................
    End Select
End Function
Quando la open va in errore per 70 normalmente e correttamente il
programma scrive la segnalazione sul file di LOG, quando invece il file
sul server e' "bloccato da un altro processo" la open del file di LOG
genera un runtime 75.
La variabile lNomeFileLog viene valorizzata in un solo punto del
programma, all'avvio, quindi contiene sempre lo stesso valore.
Grazie a tutti per l'attenzione, ciao.
LittleWave

 spegnendo tutti i PC.
Ma tu hai provato sul server a vedere chi ha bloccato il file?
Ciao
--
Reporting tool: 
http://www.neodatatype.net

Zanna ha scritto:

No, anche perche' non saprei come fare.
Grazie di nuovo, ciao.
LittleWave


tasto destro su "Riserse del computer" -> Gestisci -> Cartelle Condivise -> 
File Aperti.
Puoi anche sbloccare i file rimasti bloccati.
Ciao 

Zanna ha scritto:

Forse sto annegando in un bicchiere d'acqua ma ho provato a controllare
i files aperti sul mio portatile ma non me ne indica nessuno.
Ho condiviso una cartella, ho avviato il progetto, prima della close
del file ho messo un punto di interruzione, ho seguito il tuo
suggerimento ma non mi fa vedere nessun file aperto?
Cosa mi sono perso? Scusami di nuovo.
Grazie e ciao,
LittleWave

 i files aperti sul mio portatile ma non me ne indica nessuno.
ma il file bloccato non stava sul server ?

andrea palazzi ha scritto:

Gia' non stava, sta, sul server, piu' che altro ho provato a vedere
come funziona il "file aperti"..... :-)
Ciao,
LittleWave

 come funziona il "file aperti"..... :-)
nell'ide di vb metti su un form un datacontrol puntato su una tabella di un
mdb, magari con una dbgrid collegata aperta.
nel frattempo con access prova a visualizzare la struttura della tabella.
normalmente dice: ciccio, la tabella e' bloccata...
(e gia' con solo vb aperto dovresti vedere l'ldb).
a quel punto dovresti riuscire a vedere l'mdb come diceva zanna, anche senza
server sottomano.
sto dormendo seduto, e non ho provato, prova tu :)
ciao, a.