function TInsaCard1.Update_mode2 : Boolean;
var
i,j,k,l : Integer;
p_no : string;
p_no1 : array of string;
p_no2 : array of string;
begin
Result := False;
inherited;
SetLength(p_no1,2);
SetLength(p_no2,2);
try
advstrngrd1.BeginUpdate;
with orqry2 do
begin
for j := 1 to advstrngrd1.RowCount -1 do
begin
Close;
SQL.Clear;
SQL.ADD('MERGE INTO TB_INSA_COM A USING ' +
' (SELECT * ' +
' FROM TB_INSA_DEV ' +
' WHERE PERSON_NO = :PERSON_NO1 ' +
' ) B ON (A.PERSON_NO = B.PERSON_NO) ' +
'WHEN MATCHED THEN ' +
' UPDATE ' +
' SET COM_NAME = :COM_NAME1, ' +
' DAY_C = :DAY1, ' +
' GRADE = :GRADE1, ' +
' DEF_C = :DEF1 WHEN NOT MATCHED THEN ' +
' INSERT ' +
' ( ' +
' COM_NAME, ' +
' DAY_C, ' +
' GRADE, ' +
' DEF_C, ' +
' PERSON_NO ' +
' ) ' +
' VALUES ' +
' ( ' +
' :COM_NAME2, ' +
' :DAY2, ' +
' :GRADE2, ' +
' :DEF2, ' +
' :PERSON_NO2 ' +
' ) ' +
' ; ' );
if advstrngrd1.Cells[1,j] = '' then
begin
ShowMessage('수정할 데이터가 없습니다.');
Exit;
end
else
ParamByName('PERSON_NO1').AsString := advstrngrd1.Cells[1,j];
ParamByName('COM_NAME1').AsString := advstrngrd1.Cells[2,j];
ParamByName('DAY1').AsString := advstrngrd1.Cells[3,j];
ParamByName('GRADE1').AsString := advstrngrd1.Cells[4,j];
ParamByName('DEF1').AsString := advstrngrd1.Cells[5,j];
ParamByName('PERSON_NO2').AsString := advstrngrd1.Cells[1,j];
ParamByName('COM_NAME2').AsString := advstrngrd1.Cells[2,j];
ParamByName('DAY2').AsString := advstrngrd1.Cells[3,j];
ParamByName('GRADE2').AsString := advstrngrd1.Cells[4,j];
ParamByName('DEF2').AsString := advstrngrd1.Cells[5,j];
ExecSQL;
end;
end;
advstrngrd1.EndUpdate;
Result := True;
except
On E:Exception do
begin
ShowMessage('오류'+ E.Message);
orsn2.Rollback;
Exit;
end;
end;
end;
머가 문제일까요?
|