저장이 안됩니다
저장 후 DBGRID로보면 있는데
프로그램을 종료한 후 다시 들어와 DBGRID로 보면 없어요
네비게이터로 봐도 없고요
저장이 안됐다는 이야기 인가요 ?
그러면 왜 종료하기 전에는 보이죠 ?
DB는 PARADOX를 사용하고요 소스는 다음과 같습니다
답변해주시면 고맙겠습니다.
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Panel1.Caption := ' 자료를 신규입력합니다.';
if datasource1.state <> dsinsert then
table1.edit;
table1.post;
dbedit1.setfocus;
table1.append;
end;
.
.
.
.
.
. 마지막 DBEDIT입니다
procedure TForm1.DBEdit25KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
perform(WM_NEXTDLGCTL,0,0); //Enter시 다음 (Tab과 동일)
if key=#27 then begin
perform(WM_NEXTDLGCTL,1,0); //Enter시 다음 (Tab과 동일)
table1.post;
end;
end;
.
.
.
.
.
.
별도 저장버튼입니다.
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
if datasource1.state <> dsinsert then
table1.edit;
table1.post;
Panel1.Caption := ' 자료를 저장하였습니다.';
end;
귀하께서 입력과 수정을 동시에 생각하는 루틴입니까?,
아니면 입력만을 생각한 루틴입니까?
잘 모르겠지만 입력과 수정을 위한 명령어가 잘못됐습니다.
입력을 하는 경우와 수정을 하는 경우를 분명히 구분해야 되요.
입력버튼 클리시 : if Table1.state = dsBrows then
Table1.Append ;
그럼 사용자는 새로이 데이터를 추가하기 위해서
에디터 박스에 데이터를 입력하겠죠.
그런다음 사용자는 저장버튼을 클릭하겠죠.
저장버튼 클릭시 : if Table1.state = dsInsert then
Table1.Post ;
즉 bitbtn2이벤트에서 테이블이 입력모드가 아니면
Table1.Edit가 아니라 Table1.Append라고 해야됩니다.
아래에 있는 Table1.Append명령이 없어야 하고요.
그런데 사용자가 수정을 한다고 가정하면
그것을 위한 명령어는 따로 필요없어요.
이유는 DBEdit를 쓰기때문에 수정을 하면 내부적으로 판단해요.
따라서, 저장버튼의 이벤트를 확장해보면
if (Table1.state = dsInsert) or (Table1.state = dsEdit) then
Table1.Post ;
이렇게 하면 되요.
Table1.Edit명령어는 위의 경우(DBEdit)에 해당사항이 안됩니다.
자세한것은 메일을 주시면 답해드리죠.