Q&A

  • 테이블에 데이타 존재의 유.무=_+


안녕하세요... 매경인데요...^^



웅... 이걸 if문에 관한 질문이라고 할런지... 테이블에 관한 질문이라고 할런지...

무쟈게 고민되는 군엽=_-



다름이 아니라...^^;;;



테이블을 검색(BANKCODE로...)해서 검색 결과가 암것두 없으면... 버튼을 disalbe시키고 싶거든요... (테이블을 검색한 내용은 그리드로 뿌려진답니다...^^)



그런데 제가 그리드를 이용하는 방법두 잘 모르고 해서... BANKCODE라는 DBTEXT를 폼에 하나 올려 놓구 Visable = False로 한담에... 그 DBText에 아무 내용도 없으면, 버튼을 disable시키게 하려구 했는데... BtnDelete.Enabled := False; 까진 되는데... !_!



Bankcode로 검색해서 데이타가 있는 경우엔... 버튼이 다시 enable루 되는건... 안되네엽... 흑~ 도와주세여...!_!



procedure TF_Ent_Info.BtnSearchClick(Sender: TObject);

begin

if (BANKCODE = nil) then

begin

BtnEdit.Enabled := False;

BtnDelete.Enabled := False;

end

else

begin

BtnEdit.Enabled := True;

BtnDelete.Enabled := True;

end;

end;



3  COMMENTS
  • Profile
    임형호 1999.11.30 02:51
    김매경 wrote:

    >

    > 안녕하세요... 매경인데요...^^

    >

    > 웅... 이걸 if문에 관한 질문이라고 할런지... 테이블에 관한 질문이라고 할런지...

    > 무쟈게 고민되는 군엽=_-

    >

    > 다름이 아니라...^^;;;

    >

    > 테이블을 검색(BANKCODE로...)해서 검색 결과가 암것두 없으면... 버튼을 disalbe시키고 싶거든요... (테이블을 검색한 내용은 그리드로 뿌려진답니다...^^)

    >

    > 그런데 제가 그리드를 이용하는 방법두 잘 모르고 해서... BANKCODE라는 DBTEXT를 폼에 하나 올려 놓구 Visable = False로 한담에... 그 DBText에 아무 내용도 없으면, 버튼을 disable시키게 하려구 했는데... BtnDelete.Enabled := False; 까진 되는데... !_!

    >

    > Bankcode로 검색해서 데이타가 있는 경우엔... 버튼이 다시 enable루 되는건... 안되네엽... 흑~ 도와주세여...!_!

    >

    > procedure TF_Ent_Info.BtnSearchClick(Sender: TObject);

    > begin

    > if (BANKCODE = nil) then

    > begin

    > BtnEdit.Enabled := False;

    > BtnDelete.Enabled := False;

    > end

    > else

    > begin

    > BtnEdit.Enabled := True;

    > BtnDelete.Enabled := True;

    > end;

    > end;

    >

    DBText값을 확인할 필요가 없을것 같은데요...

    음... DB에 연결된 DataSource의 이벤트에보면 OnDataChange 이벤트라는것이 있습니다.

    이부분에다 이렇게 기입하면 될것 같습니다.



    OnDataChange이벤트는 DB의 내용이 입력, 수정, 삭제나 검색에 의해 변화될때 발생되는 이벤트로 알고있습니다. 즉 검색을 해서 레코드의 변화가 생긴다면 발생하게 되죠.

    그리고 recordcount로 검색하면 값이 있는지 없는지 알수 있을것 같습니다.

    만약 아래와 같이 했는데 에러가 발생하는 경우에는 문장앞에

    if (form1.visible=false) or (table1.active=false) then

    exit;

    구문을 써주시면 될것 같습니다.



    procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);

    begin



    if table1.recordcount=0 then begin

    btnedit.enable:=fasle;

    BtnDelete.Enabled:=false;

    end

    else begin

    btnedit.enable:=true;

    BtnDelete.Enabled.true;

    end;



    end;

  • Profile
    김영해 1999.11.30 06:16
    임형호 wrote:

    > 김매경 wrote:

    > >

    > > 안녕하세요... 매경인데요...^^

    > >

    > > 웅... 이걸 if문에 관한 질문이라고 할런지... 테이블에 관한 질문이라고 할런지...

    > > 무쟈게 고민되는 군엽=_-

    > >

    > > 다름이 아니라...^^;;;

    > >

    > > 테이블을 검색(BANKCODE로...)해서 검색 결과가 암것두 없으면... 버튼을 disalbe시키고 싶거든요... (테이블을 검색한 내용은 그리드로 뿌려진답니다...^^)

    > >

    > > 그런데 제가 그리드를 이용하는 방법두 잘 모르고 해서... BANKCODE라는 DBTEXT를 폼에 하나 올려 놓구 Visable = False로 한담에... 그 DBText에 아무 내용도 없으면, 버튼을 disable시키게 하려구 했는데... BtnDelete.Enabled := False; 까진 되는데... !_!

    > >

    > > Bankcode로 검색해서 데이타가 있는 경우엔... 버튼이 다시 enable루 되는건... 안되네엽... 흑~ 도와주세여...!_!

    > >

    > > procedure TF_Ent_Info.BtnSearchClick(Sender: TObject);

    > > begin

    > > if (BANKCODE = nil) then

    > > begin

    > > BtnEdit.Enabled := False;

    > > BtnDelete.Enabled := False;

    > > end

    > > else

    > > begin

    > > BtnEdit.Enabled := True;

    > > BtnDelete.Enabled := True;

    > > end;

    > > end;

    > >

    > DBText값을 확인할 필요가 없을것 같은데요...

    > 음... DB에 연결된 DataSource의 이벤트에보면 OnDataChange 이벤트라는것이 있습니다.

    > 이부분에다 이렇게 기입하면 될것 같습니다.

    >

    > OnDataChange이벤트는 DB의 내용이 입력, 수정, 삭제나 검색에 의해 변화될때 발생되는 이벤트로 알고있습니다. 즉 검색을 해서 레코드의 변화가 생긴다면 발생하게 되죠.

    > 그리고 recordcount로 검색하면 값이 있는지 없는지 알수 있을것 같습니다.

    > 만약 아래와 같이 했는데 에러가 발생하는 경우에는 문장앞에

    > if (form1.visible=false) or (table1.active=false) then

    > exit;

    > 구문을 써주시면 될것 같습니다.

    >

    > procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);

    > begin

    >

    > if table1.recordcount=0 then begin

    > btnedit.enable:=fasle;

    > BtnDelete.Enabled:=false;

    > end

    > else begin

    > btnedit.enable:=true;

    > BtnDelete.Enabled.true;

    > end;

    >

    > end;



    주제넘은 답변인것 같지만 한마디 해야 겠네요 ^^;;





    recordcount 를 쓰셔도 무방하지만 데이타 건수가 많을경우에는 대책이 없습니다.



    recordcount는 일일이 건수를 세어서 보여주기 때문에 건수가 많으면 속도는 보장할수가 없습니다.



    eof 를 이용하시면 될것 같네요....







    table1.open;

    table1.first;



    if table1.eof then beign

    btnedit.enable:=fasle;

    BtnDelete.Enabled:=false;

    end

    else begin

    btnedit.enable:=true;

    BtnDelete.Enabled.true;

    end;



  • Profile
    임형호 1999.11.30 17:33
    김영해 wrote:

    > 임형호 wrote:

    > > 김매경 wrote:

    > > >

    > > > 안녕하세요... 매경인데요...^^

    > > >

    > > > 웅... 이걸 if문에 관한 질문이라고 할런지... 테이블에 관한 질문이라고 할런지...

    > > > 무쟈게 고민되는 군엽=_-

    > > >

    > > > 다름이 아니라...^^;;;

    > > >

    > > > 테이블을 검색(BANKCODE로...)해서 검색 결과가 암것두 없으면... 버튼을 disalbe시키고 싶거든요... (테이블을 검색한 내용은 그리드로 뿌려진답니다...^^)

    > > >

    > > > 그런데 제가 그리드를 이용하는 방법두 잘 모르고 해서... BANKCODE라는 DBTEXT를 폼에 하나 올려 놓구 Visable = False로 한담에... 그 DBText에 아무 내용도 없으면, 버튼을 disable시키게 하려구 했는데... BtnDelete.Enabled := False; 까진 되는데... !_!

    > > >

    > > > Bankcode로 검색해서 데이타가 있는 경우엔... 버튼이 다시 enable루 되는건... 안되네엽... 흑~ 도와주세여...!_!

    > > >

    > > > procedure TF_Ent_Info.BtnSearchClick(Sender: TObject);

    > > > begin

    > > > if (BANKCODE = nil) then

    > > > begin

    > > > BtnEdit.Enabled := False;

    > > > BtnDelete.Enabled := False;

    > > > end

    > > > else

    > > > begin

    > > > BtnEdit.Enabled := True;

    > > > BtnDelete.Enabled := True;

    > > > end;

    > > > end;

    > > >

    > > DBText값을 확인할 필요가 없을것 같은데요...

    > > 음... DB에 연결된 DataSource의 이벤트에보면 OnDataChange 이벤트라는것이 있습니다.

    > > 이부분에다 이렇게 기입하면 될것 같습니다.

    > >

    > > OnDataChange이벤트는 DB의 내용이 입력, 수정, 삭제나 검색에 의해 변화될때 발생되는 이벤트로 알고있습니다. 즉 검색을 해서 레코드의 변화가 생긴다면 발생하게 되죠.

    > > 그리고 recordcount로 검색하면 값이 있는지 없는지 알수 있을것 같습니다.

    > > 만약 아래와 같이 했는데 에러가 발생하는 경우에는 문장앞에

    > > if (form1.visible=false) or (table1.active=false) then

    > > exit;

    > > 구문을 써주시면 될것 같습니다.

    > >

    > > procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);

    > > begin

    > >

    > > if table1.recordcount=0 then begin

    > > btnedit.enable:=fasle;

    > > BtnDelete.Enabled:=false;

    > > end

    > > else begin

    > > btnedit.enable:=true;

    > > BtnDelete.Enabled.true;

    > > end;

    > >

    > > end;

    >

    > 주제넘은 답변인것 같지만 한마디 해야 겠네요 ^^;;

    >

    >

    > recordcount 를 쓰셔도 무방하지만 데이타 건수가 많을경우에는 대책이 없습니다.

    >

    > recordcount는 일일이 건수를 세어서 보여주기 때문에 건수가 많으면 속도는 보장할수가 없습니다.

    >

    > eof 를 이용하시면 될것 같네요....

    >

    >

    >

    > table1.open;

    > table1.first;

    >

    > if table1.eof then beign

    > btnedit.enable:=fasle;

    > BtnDelete.Enabled:=false;

    > end

    > else begin

    > btnedit.enable:=true;

    > BtnDelete.Enabled.true;

    > end;

    >

    그렇군요! 제가 생각이 짧았습니다. 샘플데이타를 돌려보고 말씀드린거라서 미처 생각을 하지 못했군요. 좋은걸 배우고 갑니다.