갱신프로그램 Source입니다.
TQuiry구현하여 UpdateSql로 정리하는 내용인데요.
Modify나 삭제는 정상적으로 갱신되는데,
insert시 한번 Applyupdate하고 다시 StartTransaction으로 이동하여
갱신을 하면 Index Dup이 걸리내요, 혹시 문장을 확인 후 잘못된 점이나
이보다 나은 방법이 있으시면 부탁드리겠습니다.
procedure TFBAU001I.Q_BB4AfterPost(DataSet: TDataSet);
var UpdateKind: TUpdateKind;
begin
if M_DataMode = dmSearch then exit;
case M_DataMode of
DmInsert : Updatekind := UkInsert;
DmModify : Updatekind := UkModify;
DmDelete : Updatekind := UkDelete;
end;
MainForm.Database1.StartTransaction;
try
with UQ_BB4.Query[UpDateKind] do begin
if (M_DataMode = DmModify) or (M_DataMode = DmDelete) then begin
ParamByName('OLD_CMPY' ).asstring := gstrCompany;
ParamByName('OLD_PNO' ).asstring := Q_MASTER.FieldByName('Pno').asstring;
ParamByName('OLD_JUMIN').asstring := Q_BB4.FieldByName('Jumin').asstring; //dxDBGrid2.Items[OldNode.index].values[0];
end;
if (M_DataMode = DmModify) or (M_DataMode = DmInsert) then begin
ParamByName('CMPY' ).asstring := gstrCompany;
ParamByName('PNO' ).asstring := Q_MASTER.FieldByName('Pno').asstring;
ParamByName('JUMIN' ).asstring := Q_BB4.FieldByName('Jumin').asstring;
ParamByName('RELAT_CD' ).asstring := Q_BB4.FieldByName('RElat_Cd').asstring;
ParamByName('KNAME' ).asstring := Q_BB4.FieldByName('Kname').asstring;
ParamByName('SCH_CD' ).asstring := Q_BB4.FieldByName('Sch_cd').asstring;
ParamByName('B016' ).asstring := Q_BB4.FieldByName('B016').asstring;
ParamByName('JKCD' ).asstring := Q_BB4.FieldByName('JKCD').asstring;
ParamByName('EDCATION_MONY_YN').asstring := 'Y' ;
ParamByName('OLD_AGE_YN').asstring := '';
ParamByName('LIVE_YN' ).asstring := '';
ParamByName('HANDICAP_YN').asstring := '';
ParamByName('SUPPORT_YN').asstring := '';
ParamByName('ALWC_YN' ).asstring := '';
ParamByName('INDATE' ).asstring := '';
ParamByName('INOPR' ).asstring := '';
ParamByName('SBTR_2CNT' ).asstring := '';
ParamByName('SBTR_5CNT' ).asstring := '';
ParamByName('SBTR_7CNT' ).asstring := '';
ParamByName('SBTR_Add' ).asstring := '';
ParamByName('MDCL_TYPE' ).asstring := '';
end;
ExecSql;
end;
MainForm.Database1.Commit;
Except
MainForm.Database1.RollBack;
MessageDlg('저장중 에러가 발생하였읍니다. 다시 시도하십시오.',mtError,[mbOK],0);
end;
Q_BB4.ApplyUpdates;
M_DataMode := dmSearch;
P_BB4_Open;
end;