civilian,안영제 님이 쓰신 글 :
: ApplyUpdate는 다량의 데이터를 업데이트 하고자 할 때 사용합니다.
: CachedUpdate가 설정되면 테이블에서 변경된 내용을 서버로 즉시 전달하는 것이 아니라
: 로컬 피씨에 가지고 있다가 ApplyUpdate를 호출할 때 한꺼번에 저장합니다.
:
: 따라서, 아래 코드처럼 사용하려면 Execute를 사용하지 말고
: Append -> 필드에 값 추가 -> Post;
: ...
: Append -> 필드에 값 추가 -> Post;
: 한 후 ApplyUpdate를 호출해야 합니다.
:
: 어렵다. 님이 쓰신 글 :
: : 먼저 답변 감사드립니다.
: : 제 질문이 좀 서툴렀네요. ^^
: : 안영제님께서 말씀하신대로 단지 Insert를 위해서라면 2~6번 코드는 필요없습니다.
: : 전 Sql문으로 일련의 데이타를 일괄등록(for문 이용) 후 추후 수정할 경우 오류가 발생하네요
: : 일례로 DBExpert에서
: : Insert into 테이블(기본키, 필드1) values (기본키값,필드1값)
: : 으로 테이블에 레코드 인서트 후
: : 델파이에서 Open - Edit(필드1값 변경) -Post - ApplyUpdates 하려고 하면 하기와 같은 오류가 발생합니다.
: : 모가 문제인지 힌트라도 부탁드립니다. ㅡ.,ㅡ;
: :
: : civilian,안영제 님이 쓰신 글 :
: : : 2 ~ 6번까진 필요없는 코드입니다.
: : :
: : : 어렵다 님이 쓰신 글 :
: : : : Firebird2.0-Delphi7-DBExpress로 레코드를 수정하려고 하는데 자꾸 에러가 나네요.
: : : :
: : : : 1. SimpleDataSet.Insert;
: : : : 2. SimpleDataSet.Post;
: : : : 3. SimpleDataSet.ApplyUpdates(0);
: : : : 4. SimpleDataSet.Close;
: : : : 5. SimpleDataSet.Open;
: : : : 6. SimpleDataSet.Edit;
: : : : 7. SimpleDataSet.Post;
: : : : 8. SimpleDataSet.ApplyUpdates(0);
: : : :
: : : : 위와 같은 코드로 작성한 레코드는 아무 이상없이 수정이 잘 됩니다.
: : : :
: : : : 근데,
: : : :
: : : : 1. Sql := ' Insert into 테이블(기본키, 필드1) ';
: : : : Sql := Sql+' values ('''+기본키값+''','''+필드1값+''') ';
: : : : SimpleDataSet := TSimpleDataSet.Create(Self);
: : : : SimpleDataSet .DataSet.CommandType := ctQuery;
: : : : SimpleDataSet .DataSet.CommandText := SQL;
: : : : try
: : : : SDS.Execute;
: : : : finally
: : : : FreeAndNil(SimpleDataSet );
: : : : end;
: : : : 2. SimpleDataSet.Close;
: : : : 3. SimpleDataSet.Open;
: : : : 4. SimpleDataSet.Edit;
: : : : 5. SimpleDataSet.Post;
: : : : 6. SimpleDataSet.ApplyUpdates(0);
: : : :
: : : : 위와 같이 쿼리로 바로 Execute 시킨 레코드는 5번 코드까지만 이상없이 돌고 6번 코드에서
: : : :
: : : : Project TEST.exe raised exception class EDatabaseError with message 'Record not found or changed by another user'. Process stopped. Use Step or Run to continue.
: : : :
: : : : 이런 에러를 발생시키네요.
: : : : 물론 수정시 기본키값을 변경시키지는 않았습니다.
: : : : 도대체 모가 문제일까요?
: : : : 조언 부탁드립니다.
|