제가 짜는 프로그램은 DBGrid을 이용하여 한 레코드 단위로 바로 바로 데이터 베이스을 Access하는프로그램을 짜고 있습니다.
그런데 문제가 있어 이렇게 글을 올리게 되었습니다.
그럼 본론으로 들어가서....
Query1.CachedUpdates := True; 로 설정하고요..데이타를 한행단위로 바로바로 입력하도록 하고 싶습니다.(제가 짠 예제 프로그램을 밑에 첨부합니다.)
그런데.. Insert시에만 DBGrid상에서 이상하게 나오더군요.
실제로 데이터는 정상적으로 입력이 되는데 DBGrid상에는 입력한 데이터가 반복적으로 나타나더라고요. 제가 방법이 틀린것인지.. 아니면 다른 방법으로 했야 하는지 했야 하면 어떻게 해야 하는지 좀 가르쳐 주시겠습니까?
아! 그리고요.
query1.commitupdates;를 사용하니 위와는 반대로 입력은 되는데 DBGrid 상에서는 입력한 데이터가 안나타나더군요. 좀 가르쳐 주십시요....
procedure TForm1.Query1BeforePost(DataSet: TDataSet);
begin
database1.StartTransaction ;
end;
procedure TForm1.Query1AfterPost(DataSet: TDataSet);
begin
try
Query1.ApplyUpdates ;
database1.Commit;
except
database1.Rollback ;
end;
end;
> 제가 짜는 프로그램은 DBGrid을 이용하여 한 레코드 단위로 바로 바로 데이터 베이스을 Access하는프로그램을 짜고 있습니다.
> 그런데 문제가 있어 이렇게 글을 올리게 되었습니다.
>
> 그럼 본론으로 들어가서....
> Query1.CachedUpdates := True; 로 설정하고요..데이타를 한행단위로 바로바로 입력하도록 하고 싶습니다.(제가 짠 예제 프로그램을 밑에 첨부합니다.)
>
> 그런데.. Insert시에만 DBGrid상에서 이상하게 나오더군요.
> 실제로 데이터는 정상적으로 입력이 되는데 DBGrid상에는 입력한 데이터가 반복적으로 나타나더라고요. 제가 방법이 틀린것인지.. 아니면 다른 방법으로 했야 하는지 했야 하면 어떻게 해야 하는지 좀 가르쳐 주시겠습니까?
>
> 아! 그리고요.
> query1.commitupdates;를 사용하니 위와는 반대로 입력은 되는데 DBGrid 상에서는 입력한 데이터가 안나타나더군요. 좀 가르쳐 주십시요....
>
> procedure TForm1.Query1BeforePost(DataSet: TDataSet);
> begin
> database1.StartTransaction ;
> end;
>
> procedure TForm1.Query1AfterPost(DataSet: TDataSet);
> begin
> try
> Query1.ApplyUpdates ;
> database1.Commit;
> except
> database1.Rollback ;
> end;
> end;
>
Transaction의 event 가 틀렸네요.
FormShow Event에서 StartTransaction 해주시고
저장버튼의 Try...Except 문에서
Commit, Rollback해주셔야 함다.
참고로 저는 query의 beforepost event에서 키값체크등의