먼저 답변 감사드립니다.
제 질문이 좀 서툴렀네요. ^^
안영제님께서 말씀하신대로 단지 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.
: :
: : 이런 에러를 발생시키네요.
: : 물론 수정시 기본키값을 변경시키지는 않았습니다.
: : 도대체 모가 문제일까요?
: : 조언 부탁드립니다.
|