form1.buffermode= 2 - optimistic form1.datasession= 2 - Private Data Sessionin form1.load event (as below)
SET EXACT OFF SET TALK OFF SET MULTILOCKS ON SET DELETED ONin form1.active event
thisform.grid1.Refresh()i make relation between header and detail in grid.
grid1.childorder= tagdetail grid1.linkmaster= header grid1.recordsource= detail grid1.recordsourcetype= 1 - alias grid1.relationalexpr= h1i have 7 buttons :
"Add header" "Add Grid Line " "Next" "Previous" "Save" "Revert" "Exit"in click event of "add header"
select HEADER append blank ThisForm.Edit1.Refresh() ThisForm.Edit1.SetFocus()in click event of "Add Grid Line "
SELECT DETAIL APPEND BLANK REPLACE DETAIL.H1 WITH ThisForm.Edit1.vALUE thisform.grdDetail.Refresh() ThisForm.Grid1.REFRESH() ThisForm.Grid1.SETFOCUS() ThisForm.Grid1.Column2.Text1.SETFOCUS() SELECT HEADERin click event of "Next "
select HEADER IF NOT EOF() skip ENDIF ThisForm.Refresh()in click event of "Previous "
select HEADER IF NOT BOF() skip -1 ENDIF ThisForm.Refresh()in click event of "Save "
begin transaction select HEADER tableupdate(.t., .t.) select DETAIL tableupdate(.t., .t.) end transaction THISFORM.Refresh()in click event of "Revert "
begin transaction select HEADER tablerevert(.t.) select DETAIL tablerevert(.t.) end transaction THISFORM.Refresh()in click event of "Exit "
RELEASE THISFORMthis above is the complete setting and source of my form