Q&A

  • DBGrid의 마지막 레코드에서만 레코드 자동 삽입을 막으려면?
안녕하세요. 이주선입니다.



DBGrid를 이용하여 사용하고 있는데 마지막레코드에서 다운키나 마지막레코드의 마지막 필드에서 TAB키를 눌렸을 경우에 자동적으로 레코드가 삽입이 됩니다.

저는 위와 같은 처리를 하지 못하게 막고 싶어서 여러 곳으로 찾아 다녔지만, 현재 찾은 내용이 있는데 아래와 같습니다.



DBGrid에 자동 추가 기능 없애기



그리드에서 키를 아래로 누러서 맨 마지막 자료일땐.. 자동으로

레코드가 하나 추가되는데.. 그걸 막는 팁입니다.



//Table1에 BeforInsert이벤트에 추가

procedure TForm1.Tbable1BeforeInsert(DataSet: TDataset);

begin

Abort;

end;



이것은 삽입처리전에 삽입기능을 하지못하게 하는 기능인데, 위의 기능을 사용할 경우는 삽입처리가 전혀 되지 않습니다. 삽입기능은 되면서 마지막레코드에서 자동삽입기능만을 막을려면 어떻게 하면 되는지요.



델파이 전문가님 도움을 부탁드립니다.



그럼 이만, 항상건강하시고 행복한 하루보내세요.



이주선 올림.

3  COMMENTS
  • Profile
    델사랑 2000.09.02 08:19
    이주선 wrote:

    > 안녕하세요. 이주선입니다.

    >

    > DBGrid를 이용하여 사용하고 있는데 마지막레코드에서 다운키나 마지막레코드의 마지막 필드에서 TAB키를 눌렸을 경우에 자동적으로 레코드가 삽입이 됩니다.

    > 저는 위와 같은 처리를 하지 못하게 막고 싶어서 여러 곳으로 찾아 다녔지만, 현재 찾은 내용이 있는데 아래와 같습니다.

    >

    > DBGrid에 자동 추가 기능 없애기

    >

    > 그리드에서 키를 아래로 누러서 맨 마지막 자료일땐.. 자동으로

    > 레코드가 하나 추가되는데.. 그걸 막는 팁입니다.

    >

    > //Table1에 BeforInsert이벤트에 추가

    > procedure TForm1.Tbable1BeforeInsert(DataSet: TDataset);

    > begin

    > Abort;

    > end;

    >

    > 이것은 삽입처리전에 삽입기능을 하지못하게 하는 기능인데, 위의 기능을 사용할 경우는 삽입처리가 전혀 되지 않습니다. 삽입기능은 되면서 마지막레코드에서 자동삽입기능만을 막을려면 어떻게 하면 되는지요.

    >

    > 델파이 전문가님 도움을 부탁드립니다.

    >

    > 그럼 이만, 항상건강하시고 행복한 하루보내세요.

    >

    > 이주선 올림.



    흘흘.... 이건 편법인데여..



    그리드의 OnKeyDown Event에서 기냥 막아 버리세여..



    procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;

    Shift: TShiftState);

    begin

    if Key = 40 then // 즉 아래쪽 방향키를 누르면..

    begin

    if DBGrid1.DataSource.DataSet.Eof then

    begin

    ShowMessage(' 마지막 ');

    Abort;

    end;

    end;

    end;



    도움이 되셨기를...



  • Profile
    이주선 2000.09.02 08:19
    델사랑 wrote:

    > 이주선 wrote:

    > > 안녕하세요. 이주선입니다.

    > >

    > > DBGrid를 이용하여 사용하고 있는데 마지막레코드에서 다운키나 마지막레코드의 마지막 필드에서 TAB키를 눌렸을 경우에 자동적으로 레코드가 삽입이 됩니다.

    > > 저는 위와 같은 처리를 하지 못하게 막고 싶어서 여러 곳으로 찾아 다녔지만, 현재 찾은 내용이 있는데 아래와 같습니다.

    > >

    > > DBGrid에 자동 추가 기능 없애기

    > >

    > > 그리드에서 키를 아래로 누러서 맨 마지막 자료일땐.. 자동으로

    > > 레코드가 하나 추가되는데.. 그걸 막는 팁입니다.

    > >

    > > //Table1에 BeforInsert이벤트에 추가

    > > procedure TForm1.Tbable1BeforeInsert(DataSet: TDataset);

    > > begin

    > > Abort;

    > > end;

    > >

    > > 이것은 삽입처리전에 삽입기능을 하지못하게 하는 기능인데, 위의 기능을 사용할 경우는 삽입처리가 전혀 되지 않습니다. 삽입기능은 되면서 마지막레코드에서 자동삽입기능만을 막을려면 어떻게 하면 되는지요.

    > >

    > > 델파이 전문가님 도움을 부탁드립니다.

    > >

    > > 그럼 이만, 항상건강하시고 행복한 하루보내세요.

    > >

    > > 이주선 올림.

    >

    > 흘흘.... 이건 편법인데여..

    >

    > 그리드의 OnKeyDown Event에서 기냥 막아 버리세여..

    >

    > procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;

    > Shift: TShiftState);

    > begin

    > if Key = 40 then // 즉 아래쪽 방향키를 누르면..

    > begin

    > if DBGrid1.DataSource.DataSet.Eof then

    > begin

    > ShowMessage(' 마지막 ');

    > Abort;

    > end;

    > end;

    > end;

    >

    > 도움이 되셨기를...

    >



    답변에 감사를 드립니다.

    위와 같이 작업을 하여도 우선권이 삽입처리쪽인것 같습니다. 다른 방법은 없는지요..



    그럼 이만, 항상건강하시고, 행복한 하루보내세요.



    이주선 올림.

  • Profile
    임형호 2000.09.02 08:20
    정확한것은 아니고요.

    앞서 말씀하신분의 코딩에다 약간 수정해보니까 되는것 같아서요..

    그런데 query를 사용할 경우에는 recordcount를 못 읽는경우가 있어서 이케 될지는 장담못합니다.

    그냥 table을 사용하신다면 한번 테스트를 해보시고, 더좋은 방법도 있을것 같은데....



    if Key = 40 then // 즉 아래쪽 방향키를 누르면..

    begin

    if table1.RecordCount=table1.recno then

    table1.prior;

    end;









    이주선 wrote:

    > 델사랑 wrote:

    > > 이주선 wrote:

    > > > 안녕하세요. 이주선입니다.

    > > >

    > > > DBGrid를 이용하여 사용하고 있는데 마지막레코드에서 다운키나 마지막레코드의 마지막 필드에서 TAB키를 눌렸을 경우에 자동적으로 레코드가 삽입이 됩니다.

    > > > 저는 위와 같은 처리를 하지 못하게 막고 싶어서 여러 곳으로 찾아 다녔지만, 현재 찾은 내용이 있는데 아래와 같습니다.

    > > >

    > > > DBGrid에 자동 추가 기능 없애기

    > > >

    > > > 그리드에서 키를 아래로 누러서 맨 마지막 자료일땐.. 자동으로

    > > > 레코드가 하나 추가되는데.. 그걸 막는 팁입니다.

    > > >

    > > > //Table1에 BeforInsert이벤트에 추가

    > > > procedure TForm1.Tbable1BeforeInsert(DataSet: TDataset);

    > > > begin

    > > > Abort;

    > > > end;

    > > >

    > > > 이것은 삽입처리전에 삽입기능을 하지못하게 하는 기능인데, 위의 기능을 사용할 경우는 삽입처리가 전혀 되지 않습니다. 삽입기능은 되면서 마지막레코드에서 자동삽입기능만을 막을려면 어떻게 하면 되는지요.

    > > >

    > > > 델파이 전문가님 도움을 부탁드립니다.

    > > >

    > > > 그럼 이만, 항상건강하시고 행복한 하루보내세요.

    > > >

    > > > 이주선 올림.

    > >

    > > 흘흘.... 이건 편법인데여..

    > >

    > > 그리드의 OnKeyDown Event에서 기냥 막아 버리세여..

    > >

    > > procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;

    > > Shift: TShiftState);

    > > begin

    > > if Key = 40 then // 즉 아래쪽 방향키를 누르면..

    > > begin

    > > if DBGrid1.DataSource.DataSet.Eof then

    > > begin

    > > ShowMessage(' 마지막 ');

    > > Abort;

    > > end;

    > > end;

    > > end;

    > >

    > > 도움이 되셨기를...

    > >

    >

    > 답변에 감사를 드립니다.

    > 위와 같이 작업을 하여도 우선권이 삽입처리쪽인것 같습니다. 다른 방법은 없는지요..

    >

    > 그럼 이만, 항상건강하시고, 행복한 하루보내세요.

    >

    > 이주선 올림.