2013-01-24 1 views
0

그래서 SQL 쿼리로 채워진 DBGrid가 있습니다. 프로그램이 실행되는 동안 테이블이 잠기지 않도록 쿼리를 읽기 전용으로 원합니다. 문제는 읽기 전용으로 설정되어 있는데 테이블을 전혀 편집 할 수 없다는 것입니다.Delphi DBGrid를 편집하고 읽기 전용 모드로 데이터베이스를 업데이트 하시겠습니까?

내가 원하는 것은 읽기 전용 모드에서 DBGrid의 필드를 편집 한 다음 모든 것을 한 번에 업데이트 할 수 있기 때문에 연결을 열어 두지 않아도됩니다.

이 작업을 수행하는 방법을 잘 모르겠습니다. DBGrid에는 OnChange 이벤트가 없으므로 셀이 변경 될 때마다 업데이트 쿼리를 실행할 수 없습니다.

누구나 아이디어가 있습니까?

+0

연결을 열린 채로두면 테이블이 잠기는 이유는 무엇입니까? 그렇게해서는 안됩니다. –

답변

3

이것은 TClientDataSet이 작성된 정확한 이유입니다. 이 도구를 사용하면 데이터의 스냅 샷을 만들어 메모리에 저장하고 실제 데이터 세트처럼 업데이트 한 다음 해당 업데이트를 원래 데이터베이스에 다시 적용 할 수 있습니다.

너무 나쁘지 않은 자습서 here이 있습니다. Embarcadero 사이트의 Scalabiumseries에서 또 하나를 찾을 수 있습니다. Cary Jensen이 나중에 책으로 바뀌 었습니다 (Amazon에서 찾을 수 있습니다 - 링크가 필요하지 않음).

+0

DBGrid 및 쿼리를 사용하여 이미 많은 작업을 수행했습니다. TClientDataSet을 사용하면 모든 것을 다시 실행하지 않아도됩니까? 나는 정말로 그렇게하고 싶지 않습니다. – user1970794

+0

아니요. 데이터 집합을 변경하고 쿼리에서 ClientDataSet으로 읽는 문제입니다. 실제 데이터베이스를 많이 사용하는 응용 프로그램을 변환하여 데이터 입력 행을 저장하여 약 1 시간 후에 ClientDataSet을 사용하여 오프 라인 (서류 가방) 모드로 작동하게했습니다. –

+0

예를 들어 새 쿼리를 열고 쿼리를 실행 한 후에 닫으면 새 행을 추가 할 수있는 단추가 있습니다. – user1970794

관련 문제