ciao
(come mi insegnasti Tu) gia' uso questo tipo di approccio,Originariamente inviato da alka
Le soluzioni sono tante, ciascuna con vari pro e contro.
Indicativamente, potresti usare per la tabella che viene aggiornata un solo componente TDataSet condiviso, magari inserito in un TDataModule; in questo modo, posto che gli aggiornamenti vengano inviati a quel componente, essi risulteranno sempre aggiornati, senza che sia necessario aprire e chiudere la tabella.
Se la tabella deve essere condivisa tra più TFrame, questo potrebbe portare a effetti collaterali: se la visualizzazione di un campo fa scorrere i record della tabella per fare un lookup, questo potrebbe creare a visualizzazioni errate di altri campi che utilizzano la medesima tabella.
ho un datamadule e la mia tabella (il mio datasource) e' inserito in esso. tutti i frame puntano allo stesso datamodule e stesso datasource... trovando sempre i dati aggiornati.
il problema e' sempre lo stesso:
se USER1 aggiunge/modifica/cancella un record... tale modifica verra' vista USER2 solo nel momento in cui USER2 effettua close e open della tabella.
questo e' cio che non riesco a focalizzare! quando una tabella viene aggiornata da USER1 per vedere le modifiche da USER2 devo effettuare la close e l'open.Originariamente inviato da alka ...una volta che i dati sono stati scaricati, questi vengono immagazzinati in memoria, ed è possibile andarli a clonare velocemente in altrettanti TClientDataSet presenti nei vari TFrame, che ogni volta prelevano i dati da quello originale, il quale viene aggiornato solo quando si effettuano aggiornamenti alla tabella o query che costituisce la sorgente dei dati.
avevo pensato cosi:
creo una tabella nel database:
aggiornando il record relativo alla tabella modificata ogni volta che che viene effettuato un insert/update/delete nella medesima tabella.codice:CREATE TABLE TabellaUltimoAggiornamento( ID INTEGER NOT NULL PRIMARY KEY, NomeTabella VARCHAR(100), UltimoAgg varchar(16)); /* yyyymmddhhmmss */
le tabelle le apro solo alla esecuzione del formmain del programma, poi ogni volta che apro un frame diverso, prima di effettuare close e open verifico che la tabella che devo ''refreshiare'' abbia una data di 'ultima modifica' superiore alla data di quando e' stata aperta ad inizio programma e solo in questo caso effettuo il close e l'open.
pensiero errato?
grazie