// 참고로 db는 oracle를 쓰고요.. 에러는 안나는데 commit이 안먹네염 ..
로직상엔 문제가 없는듯 한데 뭐가 잘못된건가요...
아래 내용을 실행 시키면 업데이트와 삭제가 되다가
다시 조회하면 업데이트와 삭제가 안돼 있어여... 뭐가 문제죠..?
고수님들 제발 도와주세요...ㅠ.ㅠ
제일 아래 commit 이 안되는것 같은데 .//아거///
procedure TfrmProd_81.btnDeleteClick(Sender: TObject);
begin
if MessageDlg('삭제 하시겠습니까?',mtConfirmation, [mbYes, mbNo], 0) = mrNo then exit;
Screen.Cursor := crHourglass;
if DM.IsOracle then DM.DB.StartTranSaction;
with DM.Query2 do begin
Close;
SQL.Clear;
SQL.Add('UPDATE T_QTY');
SQL.Add('SET CHULDATE = null,');
SQL.Add('CHULTIME = null');
SQL.Add('WHERE FACTORY = :WFACTORY');
SQL.Add('AND HOGI = :WHOGI');
SQL.Add('AND PRDATE = :WPRDATE');
SQL.Add('AND SEQ = :WSEQ');
ParamByName('WFACTORY').AsString := Trim(Copy(cboSaup.Text,1,6));
ParamByName('WHOGI').AsString := Trim(Copy(cboHogi.Text,1,6));
ParamByName('WPRDATE').AsString := FormatDateTime('yyyymmdd',dtpYmd.Date);
ParamByName('WSEQ').AsString := mskSeq.Text;
try
DM.Query2.ExecSql;
except
on Err : EDatabaseError do {저장실패}
begin
if DM.IsOracle then DM.DB.Rollback;
ShowMessage(Err.Message);
DM.Query2.Close;
Screen.Cursor := crArrow;
Exit;
end;
end;
Close;
SQL.Clear;
SQL.Add('DELETE FROM P_QTY');
SQL.Add('WHERE QTY_FACTORY = :WFACTORY');
SQL.Add('AND QTY_HOGI = :WHOGI');
SQL.Add('AND QTY_PRDATE = :WPRDATE');
SQL.Add('AND QTY_SEQ = :WSEQ');
SQL.Add('AND QTY_CSNTIME IS NULL');
ParamByName('WFACTORY').AsString := Trim(Copy(cboSaup.Text,1,6));
ParamByName('WHOGI').AsString := Trim(Copy(cboHogi.Text,1,6));
ParamByName('WPRDATE').AsString := FormatDateTime('yyyymmdd',dtpYmd.Date);
ParamByName('WSEQ').AsString := mskSeq.Text;
try
DM.Query2.ExecSql;
except
on Err : EDatabaseError do {저장실패}
begin
if DM.IsOracle then DM.DB.Rollback;
ShowMessage(Err.Message);
DM.Query2.Close;
Screen.Cursor := crArrow;
edtJaejoNo.SetFocus;
edtJaejoNo.SelectAll;
Exit;
end;
end;
end;
if DM.IsOracle then DM.DB.Commit;
Screen.Cursor := crArrow;
btnSearchClick(Self);
end;
전에 이런 경우가 있어.. 저는 아예 처음 코딩시 부터 이렇게 하는데..
예로 님의 코드 중에서..
SQL.Add('WHERE FACTORY = :WFACTORY');
SQL.Add('AND HOGI = :WHOGI');
와 같은 코드의 경우 SQL 문이
WHERE FACTORY = :WFACTORYAND HOGI = :WHOGI
↑ 붙어버림..
이렇게 생성되어 날라가는 것으로 알고 있습니다. 실제로 전 그렇게 문제를
해결한 적이 있구여.
그러니까 SQL.Add 시 처음과 끝에 꼭 공백을 삽입하셔야 할 겁니다.
SQL.Add(' WHERE FACTORY = :WFACTORY ');
↑ ↑
와 같이 말입니다.
그럼 도움이 되었으면 좋겠네욤. 즐프염~