Q&A

  • 진짜 궁금한건...
DBGrid에서 특정 테이블을 조회한 레코드 수가 10개일때... 그중 7번째 Row를 클릭했다면...

클릭한 레코드가 몇번째인지를 알고자 합니다.

방법좀 알려주세요
1  COMMENTS
  • Profile
    오익환 2003.10.06 19:28


    DataBase에 따라 RowNumber를 알수 있는게 있지만
    (Oracle의 경우 RowNum : Select RowNum,Field1  from Table....)
    없는 경우에는 쉽지 않지요.

    억지로 만들어 보았습니다. (RecNo를 DataSet과 비교)
    Record가 많은 경우에는 사용하지 않는것이 좋을거라 생각합니다.

    //====================================================================procedure TFmCtrlGrid.DBGrid1CellClick(Column: TColumn);
    var lCURRECNO : integer;
    var lBOOKMARK : TBookmark;
    var i         : integer;
    begin
      DbGrid1.Perform(WM_SETREDRAW,0,0);
      With DbGrid1.DataSource.DataSet do
        begin
          lCURRECNO:=RecNo;
          lBOOKMARK:=GetBookmark;

          First;
          for i:=0 to RecordCount-1 do
            begin
              if RecNo=lCURRECNO then
                begin
                  ShowMessage(IntToStr(i+1));
                  Break;
              end;
              Next;
          end;
          GotoBookmark(lBOOKMARK);
      end;

      DbGrid1.Perform(WM_SETREDRAW,1,0);
      DbGrid1.Refresh;
    end;

    좀 무식하고 속도가 늦겠지만 원하는 답은 나올겁니다.