Newsgroup: it.comp.lang.vo-clipper
Titolo: Reindex

Buon giorno a tutti,
Sto cercando di ottimizzare un programma che elabora circa 14.000-15.000
record e li raggruppa in base alla giornata, aggiornando un dbf con dei dati
aggregati per data, deposito e codice. Il problema che ho è il seguente:
ogni volta che inserisco un record nel dbf aggregato devo fare il reindex
altrimenti succede un casino.... e inserendolo ad ogni append rallenta in
modo più che sensibile.
Qualcuno ha qualche idea su come posso fare per velocizzare questo tipo di
operazione?
Grazie a tutti.
Luca Baroffio
PS: non posso allegare codice perchè è troppo lungo.


Immagino intendi Clipper , non c'e' bisogno fare il reindex ogni volta che
aggiungi
un record , devi semplicemente aprire il file con TUTTI gli indici e poi
eseguire
l'append (comprensivo dei valori dei campi dell'indice stesso) esempio :
USE CLIENTI  INDEX CLIENTI1,CLIENTI2,CLIENTI3 ...... ecc.
APPEND BLANK
REPLACE CODICE  WITH MCODICE
REPLACE ......
facendo attenzione a fare il replace dei campi utilizzati negli indici
CLIENTI1 , CLIENTI2 CLIENTI3 ecc.
in modo da aggiornare TUTTE le chiavi.
Ciao Alessandro


Io faccio la stessa cosa, però mi dà un sacco di errori (non so se casuali o
meno) di "numeric error", "numeric overflow" e chi più ne ha più ne metta,
la cosa particolare è che la riga di riferimento del programma che mi
segnala l'errore è un ENDIF o un OTHERWISE......
Se invece faccio il reindex non ho più questi errori.....

 operazione?
Crei il DBF, crei l'indice e poi aggiungi i records. DEVE funzionare
bene. Sicuramente l'errore è da qualche altra parte.
EMG
PS. Forse se specificassi lo strumento utilizzato ti si potrebbe aiutare
meglio.
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

 Se invece faccio il reindex non ho più questi errori.....
Numerico Overflow dipende dalle dimensioni dei campi (numerici) pertanto non
credo
sia correlato con il problema dell'indice .
Dovresti essere un po' più chiaro :
Usi la classe DBServer oppure accedi direttamente ai database con le
funzioni DB..... ?
Usi i CDX oppure NTX ?
Forse anche con un semplice esempio possiamo aiutarti meglio.
Ciao Alessandro

 segnala l'errore è un ENDIF o un OTHERWISE......
Sospetto che l'errore non sia causato dall'indice.
Dovresti ricontrollare accuratamente il codice perche' l'errore non puo'
essere segnalato nell'ENDIF se ti succede l'applicazione e' nel "caos".
Se posso consigliare dovresti crearti un'altra applicazione e inserire solo
il codice relativo alla apertura dei files e indici e provare a fare un
inserimento.
Facci sapere.
Ciao
Paolo Cherubini

 essere segnalato nell'ENDIF se ti succede l'applicazione e' nel "caos".
Credo anch'io :-(((
 rivedrò tutta questa parte di programma.
Grazie
Luca


Credo sia impossibile fare un esempio, questa parte dell'applicativo è molto
complessa :-((
Il problema è che non ripete l'errore tutte le volte che si ripete lo stesso
evento, ma lo fa in modo un pò casuale, e inserendo un reindex del server
prima di richiamare un Method non dà più nessun messaggio di errore.
Credo dovrò rivedere tutta questa parte da zero :-((((((((((
Grazie
Luca

 bene. Sicuramente l'errore è da qualche altra parte.
Il DBF non lo creo e nemmeno gli indici, perchè ci sono già. Non ho la
necessità di creare ogni volta il file, anche perchè i dati li aggiungo
soltanto.
Grazie
Luca

Usi per caso ApplicationExec(ExecWhileEvent) nei metodi ?
Credo che questo non li renda modali e magari in un "intreccio" di
chiamate a diversi metodi qualcosa va' in confusaione .
Non mi viene in mente altro io uso un centinaio di dBase e non ho nessun
problema di indici.
ciao Alessandro.

 problema di indici.
Forse è proprio perchè io lavoro solo con 5-6 archivi di cui uno in update.
Booh!!!
Comunque grazie, e se scopro cos'è vi faccio sapere
Luca

 soltanto.
Va be', la prima volta l'avrai creato no? E gli indici sei sicuro che
siano sempre aperti mentre aggiungi il record? Essendo un CDX immagino
sia abilitata l'apertura automatica degli stessi...
EMG



Si gli indici sono tutti aperti.
Luca