FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[1802] Re:Re:Re:[질문]Firebird2.0-Delphi7-DBExpress에서 레코드 수정시 오류
civilian,안영제 [civilian] 2193 읽음    2006-02-14 13:59
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.
: : :
: : : 이런 에러를 발생시키네요.
: : : 물론 수정시 기본키값을 변경시키지는 않았습니다.
: : : 도대체 모가 문제일까요?
: : : 조언 부탁드립니다.

+ -

관련 글 리스트
1784 [질문]Firebird2.0-Delphi7-DBExpress에서 레코드 수정시 오류 어렵다 1736 2006/02/08
1799     Re:[질문]Firebird2.0-Delphi7-DBExpress에서 레코드 수정시 오류 civilian,안영제 1622 2006/02/14
1801         Re:Re:[질문]Firebird2.0-Delphi7-DBExpress에서 레코드 수정시 오류 어렵다. 2122 2006/02/14
1802             Re:Re:Re:[질문]Firebird2.0-Delphi7-DBExpress에서 레코드 수정시 오류 civilian,안영제 2193 2006/02/14
1803                 감사합니다.^^ 많은 도움 되었습니다.(냉무) ^^ 2056 2006/02/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.