If ADOQuery1.State in [dsBrowse] then
Begin
If MessageDlg( '현재 자료를 삭제하시겠습니까?',mtConfirmation, [mbYes, mbNo], 0 ) = mrYes then
begin
ADOQuery1.Delete;
{ sSql := ADOQuery1.fieldbyname('C001').AsString;
ADOQuery1.SQL.Clear;
sSql := 'Delete from DC0001 WHERE C001 = ''' + ADOQuery1.fieldbyname('C001').AsString + '''';
ADOQuery1.SQL.Add(sSql);
ADOQuery1.ExecSQL;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
sSql := 'SELECT A.C001 AS C001, A.C002 AS C002, A.C003 AS C003, A.C004 AS C004, A.C005 AS C005, B.C002 AS R001 FROM DC0001 A ';
sSql := sSql + 'LEFT OUTER JOIN DC0004 B ON A.C003 = B.C001 ORDER BY A.C001';
ADOQuery1.SQL.Add(sSql);
ADOQuery1.Open;
}
end;
end;
위와 같이 DataSet.Delete를 하면 '업데이트나 새로 고치는 데 필요한 키열 정보가 부족합니다.'라고 나오면서 삭제 되질 않습니다..
또한 주석처리한 부분은 쿼리로 지우려고 했는데...
분명
sSql := ADOQuery1.fieldbyname('C001').AsString;
하면 잘 받아지는 값이
sSql := 'Delete from DC0001 WHERE C001 = ''' + ADOQuery1.fieldbyname('C001').AsString + '''';
이렇게 하는까 값이 비어 있네요^^
하루종일 헤매다가 답답해서 올립니다..!!!!
참고로 JOIN하지 않은 단독테이블에서는 잘 동작합니다..
근데 조인만 하면 안되네요..!!!!!!!!!!
답변 좀 부탁드립니다..!!!!!!!
즐프하세요^^
ADODataSet.Delete 를 하면 저도 저런 메시지가 떠서...
4개 테이블을 조인했는데... 하나씩 지우려 하니까...
'업데이트나 새로 고치는 데 필요한 키열 정보가 부족합니다.' 라는 메시지...
그래서 PK를 물고 테이블을 하나씩 지우려 하니까..
한 테이블 지우고 나면 2번째 테이블부터는 ADODataSet에서는 어쩌구 저쩌구...
지금 집이 아니라서 메시지 잘 기억이 안 나네요...
그래서 생각한 것이 ADOQuery를 쓸까 했는데...
역시나 저런 문제에 부딪히다니....
저도 어여 Delete를 해야하는데...
여러분 좀 도와주세요.. ㅠ,.ㅠ
다음에는 테이블을 조인 안하고 ADO하나에 한 테이블씩 불러서.. A테이블을 검색하고..
A테이블 값으로 B테이블을 검색학..
이런식으로 해야것네요.. 그래야 좀 속편하게 하지 않을까?