Non riesco a comprendere bene la problematica... :master:
InterBase è un database server progettato appositamente per consentire il collegamento e l'accesso simultaneo di più utenti alla base dati, con la possibilità di apportare modifiche (inserimenti, aggiornamenti e cancellazioni) inglobale all'interno di transazioni per poter mantenere sempre "valida" la struttura del database.
Non si parla quindi mai di lock o di cose simili: tutti gli utenti hanno in ogni momento la possibilità di visualizzare i dati che hanno subito la "Commit" da parte di altri utenti...in definitiva, una versione valida del database con la quale lavorare.
L'integrità dei dati è sempre mantenuta e garantita dal database server.
Se il problema è ottenere costantemente la "versione aggiornata" dei dati presenti sul server, non c'è altro rimedio che eseguire la query di origine, quella che popola i controlli con i quali l'utente deve lavorare.
E' possibile agire sui dati anche con una modalità "disconnessa", usando ad esempio il componente TClientDataSet, che ottiene dal server i dati e li memorizza all'interno di una cache modificabile per consentire all'utente di apportare i cambiamenti desiderati, generando poi in sequenza, in un secondo momento, le istruzioni SQL per aggiornare la base dati.
In definitiva, InterBase non contempla il concetto di lock dei record, a meno che non lo si realizzi con un qualche stratagemma (ad esempio, uso di una tabella apposita e controllo dello stato di blocco attraverso trigger e stored procedure, nonchè eccezioni).
Non vedo comunque perchè usare un concetto di lock invece di consentire a tutti gli utenti di lavorare contemporaneamente.
La gestione delle transazioni previene comunque l'ingresso del database in uno stato non consistente, con dati sfalsati o incongruenti.