Q&A

  • 출력물인데요..
안녕하세요..

출력물에 관해서 해결방안 좀 찾구 있슴다.. 고수님들의 많은 조언 부탁드립니다.

문제는
데이타가 1, 2, 3, 4, 5, ... 10,
             1-1, 1-2, 1-3,
             1-1-1, 1-1-2, ....
             2-1, 2-2,
             3-1, 3-2 등이 있을때...

1
1-1
1-1-1
1-1-2
1-2
1-3
2
2-1
2-2
3
3-1
3-2
4
...
10

등의 순으로 출력물하고 싶습니다.
subdetail을 사용하려니... 1에 관련해서 몇단계까지 내려가는지 정확한 데이타를 모릅니다....
해당단계 아래의 데이타를 검색해서 있슴 내려서 출력하고 없슴 다음 데이타로 이동하는 식입니다.....

quick으로 표현하려는데 방법을 아신다면 꼭 조언부탁드립니다.

수고하십시요...

^^ 포르투칼에서 이기기를....
저는 축구보러 갑니다.. ^^~~


4  COMMENTS
  • Profile
    KDDG_ZZOM 2002.06.15 18:50
    답변이라고 말하기는 그렇구요...
    우선 데이타가 쿼리를 할때 order by를 해도 원하는대로 않될것같네요...
    숫자필드이면 가능한데... 문자필드인것같네요...
    편법으로 소트기능을 할수있는 필드를 추가시켜서 하는 방법도 있는데...


  • Profile
    호기심 2002.06.15 23:22
    그 편법이란 것이 어떤 방법이신지요 ???
    잘 몰라서 그런데..... 한번더 부탁드립니다.

  • Profile
    KDDG_ZZOM 2002.06.16 00:25
    아래답변처럼해도 되지만...
    테이블설계때 추가하는방법도 있습니다...

  • Profile
    정정호 2002.06.16 00:09
    걍 소트하면 돼네요
    function ParChrStr(c: Char; var s: string): string;
    var p: Integer;
    begin
      p:= Pos(c, s + c);
      Result:= Copy(s, 1, p);
      Delete(s, 1, p);
    end;
    // 1번째 Node가 최대 99면 '00'   999면 '000'등으로 입력
    const NodesFormat = ('00', '00', '000'); // ....최대Data Node 수
                                          //만큼 Format 배열을 잡아준다

    function MakeNodeStr(s: string): string;
    var I: Integer;
    begin
      I:= 0;
      Result:= '';
      while s > '' do begin
         Result:= FormatFloat(NodesFormat[I], StrToInt(ParChrStr('-', s)))
         Inc(I);
      end;
    end;

    procedure DataSort;
    var I: Integer;
         Data: array[0..10]of string;
         SL: TStringList;

    begin
       SL:= TStringList.Create;
       Data[0]:= '1';
       Data[1]:= '1-1';
       Data[2]:= '1-3';
       Data[3]:= '1-2';
       Data[4]:= '2-3';
       Data[5]:= '2-2';
       Data[6]:= '2-1';
       Data[7]:= '3-4';
       Data[8]:= '3-1';
       Data[9]:= '3-2';
       Data[10]:= '3-3';
       for I:= 0 to 10 do
         SL.Add(MakeNodeStr(Data[I]);
       SL.Sort;
    end;