Q&A

  • DBGrid에 순번(seq) 넣는 방법
DBGrid에 순번(seq) 넣는 방법 좀 알려줘요.



StringGrid에 순번(seq) 넣는 방법처럼 넣는 건 아닌 것 같은데..



Table에 없는 값인데 어떻게 넣을 수 있죠?



6  COMMENTS
  • Profile
    좋은날 2000.04.15 02:47
    capia wrote:

    > DBGrid에 순번(seq) 넣는 방법 좀 알려줘요.

    >

    > StringGrid에 순번(seq) 넣는 방법처럼 넣는 건 아닌 것 같은데..

    >

    > Table에 없는 값인데 어떻게 넣을 수 있죠?

    >



    하하 하얀까마귀님께서 말씀하신 사람입니다.

    CalcField는 화면 스크롤 시에도 발생해서 구해진 Calc Field값이 계속 누적됩니다.

    게다가 Navigator로 이동시에도 원하는 순번값을 구할 수 없었습니다.



    류종택님에게는 전에 큰 도움도 받았구여...아직도 감사..꾸뻑



    이제 제가 해결한 방법을 설명하겠습니다.



    1. sql문장에 순번을 구하기 위한 필드를 추가한다.

    select 0 as q_seq, deal_date,

    sum(qty)

    from tbmemo

    group by deal_date

    order by sum(qty) desc // 큰 점수(숫자)가 first가 되게...오름차순...



    2. updatesql콤포넌트를 추가하고 쿼리와 연결만 시킨다.

    (update, insert, delete sql문장은 필요없음.단지 연결만.)



    3. query의 catchedupdate := true; Requestlive := false;로 만들어 준다.



    4. query의 afteropen또는 조회버튼 이벤트에서 루프 돌리며 순번 값을 구해 준다.

    procedure TForm1.Query1AfterOpen(DataSet: TDataSet);

    var

    lvi_seq : Integer;

    begin

    lvi_seq := 1;

    query1.first;

    try

    query1.DisableControls;

    while not query1.eof do begin

    query1.edit;

    query1.FieldByName('q_seq').AsInteger := lvi_seq;

    inc(lvi_seq); // lvi_seq := lvi_seq + 1;

    query1.Next;

    end;

    finally

    query1.EnableControls;

    query1.First;

    end;



    end;

    -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



    query1.FieldByName('q_seq').AsInteger := lvi_seq;

    이부분에서 정렬된 자료에대해 순번을 구해줍니다.

    그리고 캐시업데이트를 사용하므로 디비는 건들지 않고

    캐시에만 값을 쓰는 거죠.



    그럼...

  • Profile
    이경수 2000.04.12 05:35
    capia wrote:

    > DBGrid에 순번(seq) 넣는 방법 좀 알려줘요.

    >

    > StringGrid에 순번(seq) 넣는 방법처럼 넣는 건 아닌 것 같은데..

    >

    > Table에 없는 값인데 어떻게 넣을 수 있죠?

    >



    우선 DB거 뭔지 궁금하군요

    일단 오라클이면 시이퀀스를 생성하면 되구

    MS-SQL 서버 같으면 자동 증가 필드로 선언만 해주면되구

    아니면(파라독스) 쿼리를 이용해 간단하게....



    select MAX(seq_field) AA from demo

    .......



    open;



    ... := fieldByName('AA').AsInteger +1;



    자세한 사항은 메일루......













  • Profile
    류종택 2000.04.12 03:33
    Calculated Field를 작성하시고..

    OnCalcFields 이벤트에서 아래와 같이 하세요..



    procedure TForm1.Table1CalcFields(DataSet: TDataSet);

    begin

    Dataset['Calculated Field Name']:= Datase.RecordCount;

    end;





    From 류..



    capia wrote:

    > DBGrid에 순번(seq) 넣는 방법 좀 알려줘요.

    >

    > StringGrid에 순번(seq) 넣는 방법처럼 넣는 건 아닌 것 같은데..

    >

    > Table에 없는 값인데 어떻게 넣을 수 있죠?

    >

  • Profile
    하얀까마귀 2000.04.13 02:55
    안녕하세요 하얀까마귀 입니다.



    음.. 전에 제가 테스트 안해보구 순번을 calcField에 넣으라고 답변을 했던적이



    있었는데.... 뒤에 그게 잘못되었더라구요... 흑흑...



    그분한테 무척 죄송하네요...



    그래서 뒤에 생각을 해 봤는데... 아무리 생각해도 일반적인 방법은 없더군요..



    생각난 3가지 방식.. ( 이것도 테스트는 안했는데.. 될겁니다. )



    1. 기냥 테이블 생성할때 그렇게 만든다.. ( 이건 order by를 안먹을테니 안되겠죠?)



    2. SQL문으로 순번을 만들어 준다.. (이건 충분히 가능성이 있고 예전에 제가 했던



    방식인데.. 이거 무지 느리거든요.. 특히 테이블이 큰경우에는 좀 끔직스럽죠 )



    별로 추천하고 싶지 않은 방식이긴 하지만 SQL문으로 만들어 주니까 여러가지 옵션이



    가능하구요 등수등을 할때 쓰시면 되죠...



    3. 이방식 또한 테이블이 크면 무지 느릴겁니다.



    템프 테이블을 생성해서 거기에 넣는거죠....



    이건 등수를 할때는 쿼리와 마찬가지로 속도가 느릴꺼고요.. 디비 성능에 따라서 다르



    겠지만. 2번과 비슷하게 나오겠죠... 조금은 빨라질수도 있을겁니다.



    그리고 등수가 아닌 그냥 순번이 필요한 경우에는 자동증가 필드로 템프테이블을



    만들면 그냥 결과를 거기에 넣기만 하면 순번이 나올겁니다...



    이런경우에는 아주 좋겠죠... 속도도 꾀나 나올테고..





    그다음엔 stored procedure로 구현하는게 있는데 이방식은 커서를 이용하거나



    2번 방식과 비슷하게 될테니 생략하죠.. 개인적으로 커서는 좀 싫어해서...



    이 질문 역시 별로 도움은 못된것 같네요...



    죄송... 그럼 즐거운 시간 되세요



    - 하얀까마귀 -

  • Profile
    류종택 2000.04.13 05:02
    저는 예전에 사용하던 것이라 올린 답변입니다..

    다만 런타임에만 적용된다는 것이 문제지요..

    (CalField를 사용하는 방안에 대해서 입니다)

    여하튼 전에 올린 답변 예제에 오타는 있었네요..



    procedure TForm1.Table1CalcFields(DataSet: TDataSet);

    begin

    Dataset['RecNo']:= Dataset.RecNo; <-- 이부분

    end;







    From 류..



    하얀까마귀 wrote:

    > 안녕하세요 하얀까마귀 입니다.

    >

    > 음.. 전에 제가 테스트 안해보구 순번을 calcField에 넣으라고 답변을 했던적이

    >

    > 있었는데.... 뒤에 그게 잘못되었더라구요... 흑흑...

    >

    > 그분한테 무척 죄송하네요...

    >

    > 그래서 뒤에 생각을 해 봤는데... 아무리 생각해도 일반적인 방법은 없더군요..

    >

    > 생각난 3가지 방식.. ( 이것도 테스트는 안했는데.. 될겁니다. )

    >

    > 1. 기냥 테이블 생성할때 그렇게 만든다.. ( 이건 order by를 안먹을테니 안되겠죠?)

    >

    > 2. SQL문으로 순번을 만들어 준다.. (이건 충분히 가능성이 있고 예전에 제가 했던

    >

    > 방식인데.. 이거 무지 느리거든요.. 특히 테이블이 큰경우에는 좀 끔직스럽죠 )

    >

    > 별로 추천하고 싶지 않은 방식이긴 하지만 SQL문으로 만들어 주니까 여러가지 옵션이

    >

    > 가능하구요 등수등을 할때 쓰시면 되죠...

    >

    > 3. 이방식 또한 테이블이 크면 무지 느릴겁니다.

    >

    > 템프 테이블을 생성해서 거기에 넣는거죠....

    >

    > 이건 등수를 할때는 쿼리와 마찬가지로 속도가 느릴꺼고요.. 디비 성능에 따라서 다르

    >

    > 겠지만. 2번과 비슷하게 나오겠죠... 조금은 빨라질수도 있을겁니다.

    >

    > 그리고 등수가 아닌 그냥 순번이 필요한 경우에는 자동증가 필드로 템프테이블을

    >

    > 만들면 그냥 결과를 거기에 넣기만 하면 순번이 나올겁니다...

    >

    > 이런경우에는 아주 좋겠죠... 속도도 꾀나 나올테고..

    >

    >

    > 그다음엔 stored procedure로 구현하는게 있는데 이방식은 커서를 이용하거나

    >

    > 2번 방식과 비슷하게 될테니 생략하죠.. 개인적으로 커서는 좀 싫어해서...

    >

    > 이 질문 역시 별로 도움은 못된것 같네요...

    >

    > 죄송... 그럼 즐거운 시간 되세요

    >

    > - 하얀까마귀 -

  • Profile
    하얀까마귀 2000.04.13 05:30
    안녕하세요 하얀까마귀 입니다.



    -----------------------------------------------------------

    음.. 전에 제가 테스트 안해보구 순번을 calcField에 넣으라고 답변을 했던적이

    >

    > 있었는데.... 뒤에 그게 잘못되었더라구요... 흑흑...

    ----------------------------------------------------------

    이 부분은 류종택님을 지칭한게 아니라 얼마전에 누가 질문한지는 모르겠지만



    그분한테 답변을 calcfield를 써서 하도록 했었거든요... 그런데...



    생각해보니 잘못이 있어서... ... 그분께 사죄하는 뜻에서.....



    오해가 생긴것 같네요...



    ////////////////////////////



    capia님 께..



    경수님이 올리신 내용에서 보듯이.. 디비에 따라서 다르게 만드셔야 합니다..



    파라독스의 경우 류종택님의 말씀처럼 간단히 구현하실수 있습니다만.. 쿼리를



    쓰시는걸로보아 디비를 사용하시는것 같은데.. 이런경우는 RecNo가 안됩니다..



    이놈의 값이 0인가?? -1인가 뭐 그럴겁니다.. 항상..



    그런경우는 제가 말씀드린 방법을 사용하셔야 할겁니다...





    • 이경수
      2000.04.12 05:30
      한정섭 wrote: > 너무 막막해서 고수님들의 도움을 청합니다. > > 파라독스DB를 이용하는 프로그램에서...
    • 한정섭
      2000.04.12 21:01
      이경수 wrote: > 한정섭 wrote: > > 너무 막막해서 고수님들의 도움을 청합니다. > > > > 파라독스DB...
    • 김형종
    • 2000.04.12 04:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이경수
      2000.04.12 05:21
      var I, J : Integer; begin for I :=1 to 9 do begin for J := 1 to 9 do begin Memo1....
    • 홍세비
      2000.04.12 07:13
      스타시커 wrote: > > 엔티 4.0에 웹사이트로 돌리는 웹서버입니다.. > IIS는 깔리지 않았구요... > ...
    • 박재권
    • 2000.04.12 03:50
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.04.12 04:03
      안녕하세요. 최용일입니다. Log파일이라면 INI파일을 말하는 것입니니까? 좀 질문이 너무 막연하네요.. ...
    • 홍세비
      2000.04.12 07:19
      타락천사 wrote: > 안녕하세여.. 타락임다.. 꾸벅.. > 한델에서 열쒸미 배우고 있는 초봅니다.. > 다중 ...
    • capia
    • 2000.04.12 03:24
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 좋은날
      2000.04.15 02:47
      capia wrote: > DBGrid에 순번(seq) 넣는 방법 좀 알려줘요. > > StringGrid에 순번(seq) 넣는 방법처...
    • 이경수
      2000.04.12 05:35
      capia wrote: > DBGrid에 순번(seq) 넣는 방법 좀 알려줘요. > > StringGrid에 순번(seq) 넣는 방법처...
    • 류종택
      2000.04.12 03:33
      Calculated Field를 작성하시고.. OnCalcFields 이벤트에서 아래와 같이 하세요.. procedure TForm1.Ta...
    • 하얀까마귀
      2000.04.13 02:55
      안녕하세요 하얀까마귀 입니다. 음.. 전에 제가 테스트 안해보구 순번을 calcField에 넣으라고 답변을 ...
    • 류종택
      2000.04.13 05:02
      저는 예전에 사용하던 것이라 올린 답변입니다.. 다만 런타임에만 적용된다는 것이 문제지요.. (CalField...
    • 하얀까마귀
      2000.04.13 05:30
      안녕하세요 하얀까마귀 입니다. ----------------------------------------------------------- 음.. ...
    • 나그네
    • 2000.04.12 02:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.04.13 02:57
      안녕하세요 하얀까마귀 입니다.. 음... 델파이 설치프로그램을 만들어 주는 install shield라고 있잖아...
    • 까마귀
    • 2000.04.12 02:52
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 좋은날
      2000.04.15 03:09
      까마귀 wrote: > 안녕하세요. > 까마귀입니다. 바쁘게 지내시느라 다들 욕보십니다. > > 트랜잭션 문...
    • 이경수
      2000.04.12 05:45
      트랜잭션 처리는 비교적 너무 단순합니다. 아래의 소스를 참조 하세요,,,,,, 참고로 RequestLive 속성...
    • paulyoon
      2000.04.12 04:10
      까마귀 wrote:> 안녕하세요. > 까마귀입니다. 바쁘게 지내시느라 다들 욕보십니다. > > 트랜잭션...
    • 까마귀
      2000.04.14 11:03
      paulyoon wrote: > > > > 까마귀 wrote:> 안녕하세요. > > 까마귀입니다. 바쁘게 지내시느라 다들 ...
    • paulyoon
      2000.04.15 08:37
      까마귀 wrote: > paulyoon wrote: > > > > > > > > 까마귀 wrote:> 안녕하세요. > > > 까마귀입니...
    • 최용일
      2000.04.12 02:45
      안녕하세요. 최용일입니다. 페이지컨트롤에 삽입되는 탭쉬트에 PageColtrol이라는 속성이 있습니다. ...
    • 이수정
      2000.04.12 03:05
      안녕하세요.. 뉴페이지해서 만들었는데... 페이지 삭제하는건 왜 없나요?? 황당~~~ 그리고,, for...
    • 최용일
      2000.04.12 03:16
      안녕하세요. 최용일입니다. 페이지를 숨기려면 그 페이지의 PageControl을 nil로 해주세요. 숨기기 ...
    • ghost Lee
    • 2000.04.12 00:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.04.12 01:35
      안녕하세요. 최용일입니다. CSV형식의 문자열에서 각각의 필드 스트링을 얻는 함수입니다. 저도 CSV문자...
    • 유상민
    • 2000.04.12 00:22
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이재식
      2000.04.12 01:31
      유상민 wrote: > 오라클을 이용해 프로그래밍을 하는데, table이 있으면 table생성을 하지않고 없으면 생...
    • 유상민
      2000.04.12 03:48
      이재식 wrote: > 유상민 wrote: > > 오라클을 이용해 프로그래밍을 하는데, table이 있으면 table생성을 ...
    • hee
    • 2000.04.12 00:13
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이치형
      2000.04.12 00:32
      hee wrote: > 다음의 코드의 문제가 무엇인지 좀 봐주시겠어요? 한번은 되는데 다시 한번 버튼을 누르면 ...
    • 최용일
      2000.04.12 04:49
      안녕하세요. 최용일입니다. 컨트롤의 영역은 크게 두가지로 나눌수 있는데 클라이언트역역과 비클라이언...