lnHandle=Sqlstringconnect('DRIVER=SQL Server;'+; 'SERVER=servername;DATABASE=pubs;Trusted_Connection=Yes') SQLExec(lnHandle,'select * from dbo.authors','v_authors') Select v_authors * Could index a view - do it before setting buffering to table level Index On au_fname tag fname Index On au_lname tag lname Set Order To 0 On Key Label 'F2' set order to tag fname On Key Label 'F3' set order to tag lname On Key Label 'F4' set order to 0 On Key Label 'F5' browse CursorSetProp('KeyFieldList','au_id','v_authors') CursorSetProp('WhereType',1,'v_authors') CursorSetProp('Tables','authors','v_authors') CursorSetProp("UpdateNameList", ; "au_id authors.au_id,"+; "au_lname authors.au_lname,"+; "au_fname authors.au_fname,"+; "contract authors.contract",'V_authors') CursorSetProp('UpdatableFieldList','au_fname,au_lname,contract','v_authors') CursorSetProp('SendUpdates',.T.,'v_authors') CursorSetProp('Buffering',5,'v_authors') Browse Title 'Before updated' On Key Label 'F2' On Key Label 'F3' On Key Label 'F4' On Key Label 'F5' Tableupdate(2,.T.,'v_authors') SQLExec(lnHandle,'select * from dbo.authors','afterupdate') SQLDisconnect(lnHandle) Select afterupdate Browse Title 'After Updated'This sample uses browse just for ease. Since it's a cursor bind to whatever you like.