Newsgroup: it.comp.lang.delphi
Titolo: Problemi con tabele Paradox

Ciao a tutti,
vi volevo sottoporre un problema che ho avuto.
Allora io ho un applicativo fatto da me in Delphi 3 che ha una dbgrid
puntata su una tabella Paradox (.db), contenente degli articoli.
Questo porgramma č usato da dei nostri fornitori.
Il problema č che ogni tanto, il giorno dopo aver inserito dei nuovi
articoli,
se li ritrovano cancellati, cioč non ci sono piů.
Inutile dire che non č il mio programma a cancellarli.
Non sň di preciso quanti record abbia questa tabella, ma credo abbastanza.
Semplicemente si ritrovano senza articoli, cancellati senza far nulla.
Cosa potrebbe essere?
E' mai capitato a qualcuno di voi di avere problemi come questi con tabelle
Paradox?
Grazie per eventuali risposte.
-------------------------------------------------------------
Tom@s Battistini
Lavoro: 
tbatt...@tstsystems.sm
Person: 
tom...@libero.it
 Pers. Web: 
http://tombat.monrif.net
TSTsystems s.a. - Tel: 0549 876351
-------------------------------------------------------------

Delphi implementa un sofisticato meccanismo di caching per la gestione dei
database per cui la scrittura vera e propria dei dati nelle tabelle avviene
SOLAMENTE alla loro chiusura (COMMIT).
Vivo in una zona nella quale vi sono spesso sbalzi di tensione; quando ciň
accade,  i dati salvati con il classico metodo post vengono inesorabilmente
persi perchč la/le tabelle non sono state CHIUSE in modo regolare. Per
ovviare al problema ho dovuto implementare nei miei applicativi una
procedura di COMMITTING ad Hoc agganciata ad un componente TTimer che viene
eseguita ad intervalli regolari.
Presupponendo che esista un comp. TDATAMODULE, un comp. TTIMER ed un comp.
TDATABASE la procedura da inserire nell' evento ONTIMER del Timer č la seg:
procedure TDataModule.TimerTimer(Sender: TObject);
var X: integer;
begin
    with <<TDATABASE>> do  if Connected then
    for X:= 0 to DataSetCount - 1 do DbiSaveChanges(DataSets[X].Handle);
end;
Questo event handler richiama, per ogni DATASET agganciato al comp.
TDATABASE la funzione API del BDE DbiSaveChanges che effettua la scrittura
PERMANENTE dei dati contenuti nelle dirty pages. L' intervallo di tempo puň
essere impostato a 3000 ms senza che vi siano sostanziali effetti di
rallentamento nella esecuzione dell' applicativo.  Una versione piů spinta
potrebbe usare un THREAD separato per eseguire la procedura.
Marco Soravia.

Paradox?
A me succede il contrario: l'utente cancella le righe da una tabella e dopo
aver riavviato i dati sono ancora tutti li', come se non avesse fatto
niente. Ad oggi non ho ancora trovato una soluzione, a parte quella di
ripulire io di persona le righe con una query A MANO...
Daigo

Cosa potrebbe essere?
Personalmente non ho mai avuto problemi di questo tipo, cmq il problema non
sta nel n° di Record, altrimenti l'eccezione ti verrebbe sollevata quando
provi ad inserire i dati.
Piuttosto sei sicuro che i dati vengano inseriti? Non vorrei che quella che
tu consideri come cancellazione in fondo sia un mancato inserimento. La
cancellazione mi sembra un po' impossibile....piuttosto prova a fare il
controllo che ti ho detto, fai un Post e poi controlla se questi dati sono
stati realmente inseriti.
In che modo hai gestito l'eccezione dell' inserimento mancato?
Ti posso dire che diversa gente lavora con Paradox e si trova molto bene,
quindi dubito fortemente che il problema stia nel DBMS.
Ciao
--
- Carlo -
BSSoftware Tips Mailing-List Support