Newsgroup: it.comp.lang.visual-basic
Titolo: ?]strano difetto

Carissimi ho un quisito "così così " non so se ruisiro' a spiegarmi... ma ci
provo!
Devo incrementare un numero progressivo da attribuire a delle bolle, ho
creato un file che apro ,incremento , e chiudo, poi nella text in questione
in un gotfocus apro il file leggo ,e richiudo.
Tutto funziona bene fin tanto che viene usato da un solo pc, ma in rete se
il prg e' aperto da piu' stazioni , pur considerato che il file  incrementi
viene aperto, letto o scritto ,e subito richiuso in qualsiasi punto del prg
(voglio dire non resta aperto da nessuno per più di qualche frazione di
secondo indi ipotesi da scartare) , succede che non si inrementa nonostante
la scrittura avviene correttamente .
La rete e' composta da 6 pc il server win98  , 2 pc win 95, 2 pc winMe, 1 pc
Win98.
E' forse questo miscuglio che potrebbe causare dei problemi?!
Sapete dirmi se vi e' gia capitato qualcosa di simile?
esempio :
If val(TNBOLLA) = 0 Then
'------------------ LEGGO IL NUM PROGRASSIVO DAL
FILE --------------------------
Dim COZ As Integer
COZ = FreeFile
Open FINCREMENTI For Random As #COZ Len = Len(INCREMENTI)
Get #COZ, 1, INCREMENTI
LPROGRESSIVO.Caption = INCREMENTI.PROGRESSIVO
Close #COZ
Refresh
'------------------------------------------------------------
TNBOLLA = LPROGRESSIVO
End If
Refresh
SELEZIA Me.ActiveControl
Grazie Joe

 SELEZIA Me.ActiveControl
Dov'è l'istruzione di scrittura?

 il prg e' aperto da piu' stazioni ,
Io mi sono fatto questa funzioncina da usare al posto della Open di VB.
Gestisce in modo semplice i lock, quindi puoi aprire il file in esclusivo e
se un'altro tenta con la stessa funz. di accedervi riprova per 10 sec che il
file si liberi.
Se dopo 10 sec. non č libero... beh, c'č qualcosa che non va :)
LockMode č un semplice enumeratore, qualsiasi serie di valori va bene.
Ciao
Private Function OpenBinary(ByVal FileName As String, ByVal LockMode As
EBinaryLock) As Long
    Dim test As Long
    OpenBinary = FreeFile()
    On Error GoTo Retry
    Select Case LockMode
    Case lockNone
        Open FileName For Binary As OpenBinary
    Case lockRead
        Open FileName For Binary Lock Read As OpenBinary
    Case lockWrite
        Open FileName For Binary Lock Write As OpenBinary
    Case lockReadWrite
        Open FileName For Binary Lock Read Write As OpenBinary
    Case Else
        Open FileName For Binary As OpenBinary
    End Select
    Exit Function
Retry:
    If (Err.Number = 70) Then 'accesso negato
        test = test + 1
        If (test < 50) Then ' 10 sec.
            Call Sleep(200)
            Resume 'riprova dopo 200 millisecondi
        End If
    End If
    Err.Raise Err.Number, Err.Source, Err.Description, Err.HelpFile,
Err.HelpContext
End Function
--
' // Initialize the expression evaluator
Engines.Evaluator = CreateObject("
http://www.neodatatype.net
")
' // you can find resources for and from the NG here!
Me.SitoComune = "
http://www.it-lang-vb.net
"

> Dov'è l'istruzione di scrittura?
In un button del comando salva !
esempio:
....
....
'------- SALVO SU DISCO IL NUM PROGRESSIVO ---------------------------
Dim COZ As Integer
COZ = FreeFile
Open FINCREMENTI For Random As #COZ Len = Len(INCREMENTI)
INCREMENTI.PROGRESSIVO = PARTIDALNR 'assego valore gia inrementato
Put #COZ, 1, INCREMENTI 'salvo
Close #COZ
'--------------------------------------------------------------
Ciao Grazie Joe

Provo subito puo' essere un ottima idea !
Grazie joe

 Grazie joe
Fammi sapere :)
Ciao

 Ciao
Purtroppo non e' un problema di Lock, il difetto persiste ma ho appurato che
si verifica quando si inserisce una nuova bolla dal pc che gira com Win Me,
devo capire come mai !? Mahhh, Bohhh.misteri della tecnologia moderna!
Se hai qualche idea !
Grazie comunque
 Ciao Joe