Q&A

  • 나의 머리를 아프게 하는 몇가지 문제들
벌써 몇달을 헤매다가 이곳을 글을 올립니다.



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 명령이 에러를 발생시키며 이를 해결할 수 있는 방법은 없는가?



머리 아픈이가....

0  COMMENTS