Form::Load create cursor c_Owners ( iOWNERS (x)...) create cursor c_Persons ( iOWNERS (x)...) create cursor c_Address ( iOWNERS (x)...) create cursor c_phones ( iOWNERS (x)...) create cursor c_Email ( iOWNERS (x)...) create cursor c_CrCard ( iOWNERS (x)...)The following is not how I would implement this in my own system but it demonstrates how an existing application such as yours could be made to adapt to C/S.
Form::GetCursors SqlExec(nMySQL,'select * from OWNERS where iOWNERS = '+ tiOWNER,'cOwners') SqlExec(nMySQL,'select * from Persons where iOWNERS = '+ tiOWNER,'cPersons') SqlExec(nMySQL,'select * from Address where iOWNERS = '+ tiOWNER,'cAddress') SqlExec(nMySQL,'select * from Phones where iOWNERS = '+ tiOWNER,'cPhones') SqlExec(nMySQL,'select * from Email where iOWNERS = '+ tiOWNER,'cEmail') SqlExec(nMySQL,'select * from CrCard where iOWNERS = '+ tiOWNER,'cCrCard') * * Since all controls are bound to Load event cursors * We must populate those cursors with the current data from the back end * select c_owners zap append from (dbf('cOwners')) select c_Persons zap append from (dbf('cPersons')) select c_Address zap append from (dbf('cAddress')) select c_Phones zap append from (dbf('cPhones')) select c_Email zap append from (dbf('cEmail')) select c_CrCard zap append from (dbf('cCrCard'))I don't know how to lock a current record in a client server scenario other than by begin transaction / end transaction, which I think could be used when handling your updates.