Q&A

  • 다이얼로그창 안닫히게(재 질문)
먼저 김영대님과 어린왕자님께 깊은 감사들 드립니다.



두분 말씀대로 OK Button의 Default 값을 False로 하고



Modal을 mrNone, mrYes등을 해 보았는데 다음과 같은 결과가 나옴니다.



결과

1. 창은 안닫히는데 입력된 데이타가 한번 이상 DB에 저장이 안되고

2. 창을 닫고 다시 입력하면 역시 한번 만 저장되고

3. 저장된 1개의 항목은 수정, 삭제가 안됩니다.



저의 생각은 창은 임의로 닫을 수 있는 버턴이 있고

창을 닫기 전까지는 계속해서 db에 저장할 수 있도록 되어야 하는데 잘 안되네요..



그래서 참고로 소스를 적어놓았어요..

아직 초보라 소스코드가 고수님들의 눈을 어지럽힌점을 깊히 사과드리옵나이다.

고수님들의 명쾌한 가르치심을 기다리겠나이다.



파라독스 db사용





// 데이타 등록하는 이벤트 Procedure

procedure TForm1.N8Click(Sender: TObject);

var

CurDate : TDateTime;

Year, Month, Day, Hour, Min, Sec, MSec: Word;

StrID : string;



begin

CurDate := Now;

DecodeDate(CurDate, Year, Month, Day);

DecodeTime(CurDate, Hour, Min, Sec, MSec);

StrID := IntToStr(Year) + IntToStr(Month) + IntToStr(Day) +

IntToStr(Hour) + IntToStr(Min) + IntToStr(Sec);

Table1.Open;

Table1.Append;



if Form3.ShowModal = mrOK then

begin

if Form1.Table1.FieldByName('SuperNo').AsString ='' then

showmessage('관리번호를 입력 하세요')



else begin

Table1.FieldByName('id').asstring := StrID



end;

end;

end;



// 등록된 이력을 삭제하는 이벤트 Procedure

procedure TForm1.N9Click(Sender: TObject);

begin

if Form1.Table1.FieldByName('Id').Asstring = '' then exit;



if MessageDlg('확실합니까?',mtConfirmation, mbOKCanCel, 0) = mrOK then

begin

Table1.Open;

Table1.Delete;

Table1.Close;

Table1.Open;

end;

end;



// 등록된 이력을 수정하는 이벤트Procedure

procedure TForm1.N10Click(Sender: TObject);

begin

if form1.Table1.FieldByName('Id').Asstring ='' then exit;

Table1.Open;

Table1.Edit;

if form3.ShowModal = mrOK then begin

Table1.post;

end;

Table1.Close;

Table1.Open;



end;





1  COMMENTS
  • Profile
    김영대 2000.10.16 19:49
    안녕하세여...

    컴맹입니다.

    Source를 보니..

    Append 문후에 Post 를 해주시지 않은것 같네여...



    TTable의 Insert,Append,Edit문은



    Insert

    .....// 구문

    post

    를 하셔야 합니다.



    그리구 입력할때마다.. 오픈을 하게 되어 있는데..

    별로 좋은방법은 아니네여...

    그럴거면 차라리 쿼리를 쓰는게...

    이만 줄이 겠습니다.







    델왕초보 wrote:

    > 먼저 김영대님과 어린왕자님께 깊은 감사들 드립니다.

    >

    > 두분 말씀대로 OK Button의 Default 값을 False로 하고

    >

    > Modal을 mrNone, mrYes등을 해 보았는데 다음과 같은 결과가 나옴니다.

    >

    > 결과

    > 1. 창은 안닫히는데 입력된 데이타가 한번 이상 DB에 저장이 안되고

    > 2. 창을 닫고 다시 입력하면 역시 한번 만 저장되고

    > 3. 저장된 1개의 항목은 수정, 삭제가 안됩니다.

    >

    > 저의 생각은 창은 임의로 닫을 수 있는 버턴이 있고

    > 창을 닫기 전까지는 계속해서 db에 저장할 수 있도록 되어야 하는데 잘 안되네요..

    >

    > 그래서 참고로 소스를 적어놓았어요..

    > 아직 초보라 소스코드가 고수님들의 눈을 어지럽힌점을 깊히 사과드리옵나이다.

    > 고수님들의 명쾌한 가르치심을 기다리겠나이다.

    >

    > 파라독스 db사용

    >

    >

    > // 데이타 등록하는 이벤트 Procedure

    > procedure TForm1.N8Click(Sender: TObject);

    > var

    > CurDate : TDateTime;

    > Year, Month, Day, Hour, Min, Sec, MSec: Word;

    > StrID : string;

    >

    > begin

    > CurDate := Now;

    > DecodeDate(CurDate, Year, Month, Day);

    > DecodeTime(CurDate, Hour, Min, Sec, MSec);

    > StrID := IntToStr(Year) + IntToStr(Month) + IntToStr(Day) +

    > IntToStr(Hour) + IntToStr(Min) + IntToStr(Sec);

    > Table1.Open;

    > Table1.Append;

    >

    > if Form3.ShowModal = mrOK then

    > begin

    > if Form1.Table1.FieldByName('SuperNo').AsString ='' then

    > showmessage('관리번호를 입력 하세요')

    >

    > else begin

    > Table1.FieldByName('id').asstring := StrID

    >

    > end;

    > end;

    > end;

    >

    > // 등록된 이력을 삭제하는 이벤트 Procedure

    > procedure TForm1.N9Click(Sender: TObject);

    > begin

    > if Form1.Table1.FieldByName('Id').Asstring = '' then exit;

    >

    > if MessageDlg('확실합니까?',mtConfirmation, mbOKCanCel, 0) = mrOK then

    > begin

    > Table1.Open;

    > Table1.Delete;

    > Table1.Close;

    > Table1.Open;

    > end;

    > end;

    >

    > // 등록된 이력을 수정하는 이벤트Procedure

    > procedure TForm1.N10Click(Sender: TObject);

    > begin

    > if form1.Table1.FieldByName('Id').Asstring ='' then exit;

    > Table1.Open;

    > Table1.Edit;

    > if form3.ShowModal = mrOK then begin

    > Table1.post;

    > end;

    > Table1.Close;

    > Table1.Open;

    >

    > end;

    >

    >