안녕하세요 아래와 같이 query1.CommitUpdates하게 되면
DB상에는 입력이 되어 있는데 문제는 DBGrid상에서는 보여지지 않는다는 겁니다.
자동증가형 필드를 키로 가지고 있는 테이블에서 데이타를 입력하고 쿼리를 커밋시켰을때
자동생성된 키값을 알아낼 수 없을까요?
아울러 DB에는 자동증가 되어있는데 왜 그리드에서는 요지부동 자동생성된 키값이 보여지지 않나요?
그렇다고 늘 쿼리를 닫았다가 열어주는 짓(?)을 항상 할 수도 없고...
혹시 몰라 쿼리의 AutoRefresh나 Fields프로퍼티의 AutoGenerateValue 값도 변경시켜 보았지만
아무런 반응도 없네요...
AutoRefresh 나 AutoGenerateValue 프로퍼티가 하는 기능에 대해서도 알고싶습니다.
아시는분 답변 주시면 정말 감사하겠습니다.
참고로 C/S 이고 SQLserver사용하며 쿼리의 CashUpdate와 UpdateSQL컴포넌트를 사용해 입력수정 삭제하고 있습니다.
// DB 테이블
Create table Table1
(
Code integer identity not null, <- 자동증가형으로 지정했습니다.
Name varchar(20) not null,
constraint pk_Table1_Code primary key(Code)
)
// 저장버튼클릭
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if query1.UpdatesPending then
begin
query1.ApplyUpdates; // Code는 자동증가형 필드라 Name만 입력하고 커밋 시켜보면
query1.CommitUpdates; // DB에는 Code가 입력되어 있지만 query1.Fieldbyname('Code').asinteger 값을 디버깅해보면 늘 0 으로 되어져 있습니다.
// 물론 그리드에는 생성되어져 보이질 않습니다.
//query1.close;
//query1.open; // 쿼리를 닫았다가 열어주면 정상적으로 코드값이 보여지거든요...
end;
end;
AutoRefresh...
이거 True하세여.