Newsgroup: it.comp.lang.vo-clipper
Titolo: 10 Pc in rete Con Clipper

Ho 10 Pc in rete un server HP win2000 w e Clients WIN98  spesso si blocca il
programma e bisogna fare la ric. indici e tutto funziona di nuovo c'e
qualcosa da fare pwe gestire meglio gli indici, visto che il programma con 3
Pc in rete non si blocca quasi mai? Devo usare altri S.O.
Vi prego di Aiutarmi.
Graze Paolo

 ha scritto nel messaggio
news:WkyH6.14670$0t6.5...@news.infostrada.it...



Troppo pochi indizi.
EMG

 ha scritto nel messaggio
news:WkyH6.14670$0t6.5...@news.infostrada.it...


 Graze Paolo
Noi se possiamo ti aiutiamo volentieri

 ha scritto nel messaggio
news:3AEFB5EB...@intercity.it...



Io ho 7 client con clipper che aprono circa
15 files contemporaneamente senza problemi, il fatto č che il server č
samba sotto linux rh7.
una bomba!! :-)
--------------------------------
Inviato via 
http://usenet.iol.it
 

 wrote in message
WkyH6.14670$0t6.5...@news.infostrada.it...






Anche io ho 7 client win 9.x con 2 applicativi 
clipper che girano 24/24 e il server è un sbs 4.5 ( Windows NT server 4.O sp5 + 
Exchange server 5.5 SQL server 7.0 ecc....)


 


Ciao Max







per caso lavori con indici diversi da Ntx ?


 



 wrote in message 
000601c0dc9b$97651680$0d00...@tin.it
...


 all'interno come se l'ultimo record NUMPRO fosse = 0.
Mi sembra normale. Quando fai l'APPEND BLANK il record corrente diventa
quello nuovo che quindi contiene zero nel campo numpro. Dovresti invece
scrivere
goto bott
if rl_ok()          // funzione che blocca il record
    num=NUMPRO+1
    append blank
    replace NUMPRO with num
endif
unlock
EMG

 wrote in message 9dp8g1$8oo$1...@serv1.iunet.it...


 ENDIF
Si, questo mi sembra opportuno. E' una cosa che effettivamente mancava
nel codice originale.
EMG

Tra poveri programmatori, ognuno usa la sua tecnica che migliora man mano
che sbatte il capo sui propri errori...
Io uso pressappoco la seguente e devo dire che  mi ha dato buoni risultati
select main
mrec = recno() && Punto il record dove mi trovo
go bottom
mcodice = codice + 1 && File su chiave codice numerica --- non bacchettare
ho fatto un esempio...
@ 5,17 gget mcodice picture '999999'
read
clear gets
if mcodice = 0
    close databases
    return
else
    seek str(mcodice,6) && Controllo se nel frattempo qualcuno mi ha rubato
il record ...
    if found()
        vedi_record()
    else
        copy stru to c:appoggio && non blocco il file ... copio la struttura
su un file temporaneo d' appoggio e  non blocco il lavoro agli altri
operatori...
        sele 0
        use c:pragg excl
        append blank
        repl codice with mcodice
        repl ... && valorizzo i vari campi di default se serve
        @ ... get ... && proseguo con le get ...
        sele main
        do while ! flock(0) && Adesso blocco momentaneamente il file
        enddo
        go bottom                                && E' necessario verificare
se la chiave nel frattempo è cambiata...
        mcodice = codice + 1
        sele Appoggio
        repl codice with str(mcodice,6)  && Aggiorno la chiave
precedentemente inserita
        sele main
        append blank
        replace codice with appoggio->codice
        replace etc... && carico gli altri campi
        ....
        ....
        unlock
        sele appoggio
        use
        erase c:appoggio.dbf && cancello il temporaneo per il caricamento di
un nuovo record...
        sele main
    endif
    vedi_record()
endif
.... Anche per correggere solamente un record uso la stessa tecnica ...:
copio il record su un dbf d' appoggio abilitato solo per l' edit ... e al
termine delle get o dei replace faccio:
if updated()
    sele main
    seek appoggio->codice
    do while ! rlock() && blocco il record con qualsiasi funzione comoda...
    enddo
    replace ....... tutti i campi meno che il campo codice, nel mio caso è
il campo chiave...!!!
    ....
    unlock
endif
sele appoggio
use
erase c:appoggio.dbf
sele main
Supposto che i Dbf principali si trovino nell' unità condivisa diversa da C:
(es. F:), usando le unità locali solo  per le elaborazioni temporanee dei
singoli operatori.
Sperando di esserti stato d' aiuto e di non averti creato confusione, buon
lavoro a te e al ng.
-- 
Posted from 
HA-server-a.cs.interbusiness.it
 [151.99.250.31] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 wrote in message
3B003DFC...@flashnet.it...


 wrote in message 9dqs0h$a28$1...@news.mclink.it...


 ma nonostante mi capita lo stesso
Cosě non puň funzionare. Se due utenti cercano di fare la stessa
operazione puň darsi che ci riescano entrambi ma che abbiano entrambi
letto lo stesso numero dopo il goto bott. Prova, invece, a scrivere
if flock()
    goto bott
    num=NUMPRO+1
    append blank
    replace NUMPRO with num
    unlock
endif
EMG

 e sbagliato?
No, è giusto. Il problema è che questo non impedisce che due utenti, pur
essendosi posizionati sullo stesso record dopo il goto bott, vadano
entrambi a creare un record nuovo con lo stesso numpro.
EMG

 wrote in message
3B0D1CBC...@flashnet.it...


 E allora Cosa Faccio?
Non ti avevo giŕ risposto in un altro messaggio? Comunque, prova questo
(solo uno scheletro):
if flock()
    goto bott
    num=NUMPRO+1
    append blank
    replace NUMPRO with num
    unlock
endif
EMG

 Non ti avevo già risposto in un altro messaggio? Comunque, prova questo


 contemporaneamente?
Attenzione a non confondere il lock del file con l'apertura in modo
esclusivo. E' possibilissimo bloccare l'intero file anche se aperto da
più utenti contemporaneamente.
EMG