벌써 몇달을 헤매다가 이곳을 글을 올립니다.
1. 저는 Access DB를 이용하여 프로그램을 하고 있습니다. 그런데 BDE를 이용하여 만든 프로그램은 윈도우 2000에서는 작동하지 않더군요. 더군다나 Access 2000을 이용할 경우에는 BDE에서는 연결할 수 없었습니다.
2. 위의 문제를 해결하기 위해서 ADO를 사용했습니다. 그랬더니 윈도우 2000에서도 작동되고 Access 2000과도 잘 붙었습니다. 아! 드디어 나에게 햇살이... 배포할 때도 수월했고요.
3. 그런데 새로운 문제가 발생하였습니다. BDE를 쓸 때에는 2개 이상의 테이블을 조인한 퀴리도 UpdateSQL 컴포넌트를 이용해서 자유롭게 수정 및 삭제 등의 작업이 가능했었는데 ADO 퀴리에서는 UpdateSQL을 사용할 수 없더군요.
4. 위의 문제는 또다른 ADO 퀴리를 하나 더 써서 SQL 문으로 해결하였습니다. 아주 불만이 많았지만요. 이전에 간단했던 일을 복잡하게 해결하였으니까요.
5. 그런데 또 새로운 문제가 발생하였습니다. 가령 내용이 같은 두개의 레코드가 있을 때 BDE를 사용할 때에는 Query1.Delete 하면 간단히 삭제할 수 있었습니다. 그런데 ADO퀴리를 쓸 때에는 ADOQuery1.Delete 하면 에러가 발생합니다. '키열에 대한 정보가 부족하거나 올바르지 않습니다. 업데이트가 너무 많은 행에 영향을 주었습니다.'
6. 위의 에러메시지가 이해가 안가는 것은 아닙니다. 데이터가 똑같으니 서로 식별할 수 없어서 나타나는 것이라고 생각됩니다. 그러나 BDE에서는 레코드를 인식해서 현재 레코드를 삭제하는 것 같은데 ADO에서는 왜 안되냐는 것이지요. 물론 자동증가 필드를 하나 더 달면 되지만 제가 작성한 DB는 그렇게 한다고 치고 다른 사람이 작성한 DB가 그렇지 않을 경우에는 어떻게 해야 하나?
7. 하나의 문제를 해결하면 또다른 문제가 발생하고... 제가 아직 잘모르는 것이 많아서 그런 것 같습니다. 위 문제들로 몇달 째 헤매고 있습니다. 깨우침을 주실 분 없으신가요?
정리하면...
1. BDE와 Access는 윈도우 2000에서는 사용할 수 없는가?
2. BDE는 Access 2000과 연결할 수 없는가?
3. ADO에서는 UpdateSQL과 같이 조인된 퀴리를 직접 조작할 수 있는 기능은 없는가?
4. ADO에서는 왜 중복된 레코드가 있을 때 Delete 명령이 에러를 발생시키며 이를 해결할 수 있는 방법은 없는가?
머리 아픈이가....