Newsgroup: it.comp.lang.vo-clipper
Titolo: Errore di violazione della condivisione.

Come dicevo a Marco Boschi, perchè non provare se tutto funziona con
un'altra domanda? Eccomi qui, pronto come sempre!
In una applicazione in rete ho diverse data window, alcune delle quali di
tipo master detail ed altre con dei TabControl. Ovviamente ogni finestra ha
nel suo metodo Init le appropriate use() per accedere ai DbServer
dell'applicazione. Se un utente esegue  una riorganizzazione degli archivi e
per questo vi accede in modo esclusivo, ed un'altro utente apre una data
window vengono generati degli errori all'apertura dei DbServer in quanto
viene tentata in modalità Shared. Come si può intercettare in modo elegante
questo tipo di errore e visualizzare l'appropriata ErroBox. Visto che il
metodo Init() non può essere modificato manualmente in quanto l'uso del
Window Editor poi sovrascrive le modifiche ho provato ad inserire un test
utilizzando la funzione NetErr() nel metodo PostInit(). La cosa però non mi
soddisfa in quanto non riesco ad evitare i messaggi d'errore generati
automaticamente a Run Time ma solamente a visualizzare una successiva
ErrorBox.
Dove vanno inseriti i test sulla corretta apertura dei DbServer?
Ciao e grazie come al solito.
Roberto Cordini

perchè apri i file in rete in modo esclusivo e non invece shared loccando il
record aperto ?
poi devi testare se un tentativo di lock va a buon fine ed il gioco è fatto
Danilo Giuliani

Molti degli articoli apparsi su DEV in questi anni rispondono ai tuoi
quesiti che stai (giustamente) facendo nel NG, complimenti vedo che sei
sveglio ed hai entusiasmo , e ciņ che ci vuole per un buon inizio !
alcuni articoli :
DEV 58       Dicembre 1998     Creare applicazioni multiutente in VO
DEV 63       Maggio 1999        Configurazioni tramite i file .INI
richiedi gli arretrati
ciao
Enio


Chiederti un sunto degli articoli è troppo vero? DEV non lo acquisto
regolarmente ed ovviamente mi mancano proprio i numeri a cui fai riferimento
(nel 1998 erò già un futuro ex Clipperista senza nuovi orizzonti). Trovo DEV
molto interessante, ma purtroppo per me, molti degli articoli riguardano
linguaggi che non conosco bene e siccome tendenzialmente sono  un
perferzionista con l'ambizione di capire ed approfondire le cose che leggo,
alla fine visto che non ci riesco provo un senso di frustazione quando salto
da pagina 1 a pagina 20 per cercare gli articoli su VO.
Ti faccio una proposta da portare alla redazione di DEV.
Perchè non pubblicate un numero monotematico interamente dedicato a VO con
tutti gli articoli pubblicati in passato sull'argomento? Debitamente
pubblicizzato su NG sono sicuro che avrebbe un buon successo.
Un'altra cosa dal mio ego sovraeccitato dai tuoi complimenti. Ti ringrazio
perchè le tue parole mi servono da ulteriore sprone. Il mio entusiasmo
deriva dal fatto che nonostante abbia acquistato VO solamente da un mese,
che lo stia studiando e che nel frattempo abbia anche lavorato, a poco a
poco mi sono ritrovato con un'applicazione funzionante che ovviamente sarà
da completarè ma che costituisce una buona base per la definitiva migrazione
di una vecchia applicazione aziendale scritta in Clipper. Pensa che grazie a
VO e senza alcuna difficoltà, sono riuscito a gestire la sincronizzazione
dei dati tra le sedi staccate via FTP.
Ciao.
Roberto Cordini
Ciao e grazie.
Roberto Cordini

 ha scritto nel messaggio
news:nXmy6.14124$Oz4.3...@news2.tin.it...

Ciao Danilo e grazie per la risposta.
Io non apro i files in modo esclusivo ma in modo shared. Per le normali
operazioni di editing gestisco il lock dei record come del resto si faceva
con Clipper.
Certe operazioni tipo la creazione degli indici sui dbf devono essere però
fatte con i files aperti in modo esclusivo.
Il problema che esponevo, si verifica quando in rete un utente esegue una
riorganizzazione ed un altro apre una data window (creata con il Windows
Editor dell'IDE) connessa ad un dbf già aperto in esclusiva.
Ciao
Roberto Cordini

Prova questa funzione:
FUNCTION CanOpenDbf(cFile AS STRING) AS LOGIC          // Cfile
C:\CAVO\LAVORI\TMP0.DBF
** Testa se in DBF può essere aperto in EXCLUSIVE
**  CanOpenDbf(<cFile>)
** <cFile> Il file da testare.
** es: CanOpenDbf("ARCHIVI.DBF") -> TRUE o FALSE
** Return  Un valore LOGIC
LOCAL  siHandle AS PTR
LOCAL  lRet := FALSE AS LOGIC
        siHandle := FOpen(cFile,FO_EXCLUSIVE)
   IF !(siHandle == F_ERROR)
    lRet := TRUE
    FClose(siHandle)
   ENDIF
RETURN   lRet
Danilo Giuliani

Non posso mandarti gli articoli per ovvi motivi
ma ho altro materiale l'indirizzo tuo email quale è ?