Q&A

  • 크리스탈레포트에서 쿼리한 필드 사용방법
크리스탈 레포트를 델파이에서 사용하시는 분들이 별루 없으신가봐요..ㅜ.ㅜ
질문을 올리는데.. 답변이 없어서 혼자 할려니 무지 힘듭니다.

질문요지는요..
델파이에서
레이블에 TQuery 를 사용해서 필드값을 옮길경우

  label1.Caption := Query1.FieldByName('Name').AsString;

이런식으루 필드값을 사용하잖아요..
그런데, 크리스탈 레포트에서도 그게 가능한지요..
도저히 그런 기능을 찾을수가 없네요..
Formula를 사용하는것 같기도 하구...
암튼.. 좀 가르쳐 주세요~
쿼리는 소스내에서 직접 처리했습니다.
Crpe1.SQL.Query.Text := 쿼리내용
이 쿼리한 내용을 레포트에 나오게 하려고 하는데요..
Formula를 사용하는 건지, 아님 그냥 레이블로 하는건지..
또 동적으로 생성된 쿼리의 내용을 어떤식으로 가져다 써야 하는지..
꼭 좀 답변 부탁합니다.
2  COMMENTS
  • Profile
    강동순 2002.06.28 01:53


    글세요 원하는 답이 델넌지 모르겠네요

    그런데 저희회사 Print (크리스탈 레포트로 만듬)아주 잘됨

    압측을 해서 파일을 첨부를 하려고 했는데

    파일 첨부하는데가 없어서 그냥 올립니다.

    파일 길다고 무엇라고 하지 마세요

    그럼 수고 하세요

    감사 합니다.



    procedure TFCusOrder.BitBtn5Click(Sender: TObject);// Form에서 Print 버튼 클릭
    begin
    Prt_Area(2);
    end;

    procedure TFCusOrder.Prt_Area(const JobTag:integer);
    begin
    TTemp_1.Active:=True;
    TTemp_1.Active:=False;
    TTemp_1.DatabaseName:=TempPath;
    TTemp_1.Tablename:='Tmp_01.db';
    TTemp_1.Exclusive:=True;
    TTemp_1.EmptyTable;
    TTemp_1.Active:=True;

    List_Area(JobTag);

    with fmMain.Crpe1 do
      begin
      Clear;
      if (JobTag = 1) then
         ReportName:=RptPath + 'Rpt24.Rpt'
         else
         ReportName:=RptPath + 'Rpt11.Rpt';

      Formulas.Clear;
      Formulas.Retrieve;
      if (JobTag <> 1) then
         begin
         ReportName:=RptPath + 'Rpt11.Rpt';
         Formulas.Name := 'H_1';
           if Radiobutton7.checked=true then
              Formulas.Formula.Text := '"Bal Qty"'
              else
              Formulas.Formula.Text := '"Worker"';
         end;
       Formulas.Name := 'T_t';
       Formulas.Formula.Text := '"Proforma Invoice"';
       WindowState:=wsMaximized;
       Output :=toWindow;

       Execute;
      end;
    end;

    procedure TFCusOrder.List_Area(const AcptTag:integer);
    var
    Seq:integer;
    begin
      with Query1 do
      begin
      Close;
      Sql.Clear;
      Sql.Add(' select a.*, b.GRAP_PATH, b.matr_name from Corder a, matr_code b');
      Sql.Add(' where a.matr_code = b.matr_code and a.matr_size=b.matr_size');
      Sql.Add(' and a.Bill_no = :p1');
      ParamByName('p1').asstring:=FlatEdit2.text;
      open;
      Seq:=0;
      while not eof do
        begin
        Seq:=Seq + 1;
        TTemp_1.Append;
        TTemp_1.FieldByName('Key_1').asstring         :=FieldByName('Bill_no').asstring;
        TTemp_1.FieldByName('Key_2').asstring         :=FieldByName('Comp_code').asstring;
        TTemp_1.FieldByName('Key_3').asstring         :=FieldByName('Matr_code').asstring;
        TTemp_1.FieldByName('Key_4').asstring         :=formatFloat('000001',Seq);
        TTemp_1.FieldByName('Data_1').asstring        :=CompFind(FieldByName('Comp_Code').asstring);
        TTemp_1.FieldByName('Data_2').asstring        :=FieldByName('Matr_Name').asstring;
        TTemp_1.FieldByName('Data_3').asstring        :=FieldByName('Matr_size').asstring;
        TTemp_1.FieldByName('Data_4').asstring        :=FieldByName('Matr_Color').asstring;
        TTemp_1.FieldByName('Data_5').asstring        :=FieldByName('Notes').asstring;
        if Radiobutton8.checked=true then
           begin
           if AcptTag=1 then
              TTemp_1.FieldByName('Qty_1').asinteger        :=FieldByName('Matr_Qty').asinteger
              else
              TTemp_1.FieldByName('Qty_1').asinteger        :=0;

           TTemp_1.FieldByName('Qty_2').asinteger        :=0;
           TTemp_1.FieldByName('Qty_3').asinteger        :=FieldByName('Matr_Qty').asinteger
                                                          -FieldByName('Out_Qty').asinteger;
           end else
           begin
           TTemp_1.FieldByName('Qty_1').asinteger        :=FieldByName('Matr_Qty').asinteger;
           TTemp_1.FieldByName('Qty_2').asinteger        :=FieldByName('Out_Qty').asinteger;
           TTemp_1.FieldByName('Qty_3').asinteger        :=FieldByName('Matr_Qty').asinteger
                                                          -FieldByName('Out_Qty').asinteger;
           end;
        TTemp_1.FieldByName('Date_1').asstring        :=FieldByName('Order_date').asstring;
        TTemp_1.FieldByName('Date_2').asstring        :=DateDisplay(FieldByName('Order_date').asstring);
        if AcptTag=1 then
           begin
           TTemp_1.FieldByName('Amt_1').ascurrency    :=FieldByName('Matr_dan').ascurrency;
           TTemp_1.FieldByName('Amt_2').ascurrency    :=FieldByName('Matr_Amt').ascurrency;
           end;

        TTemp_1.Post;
        Next;
        end;
    end;

    Query1.Close;
    TTemp_1.Close;
    end;
  • Profile
    백지연 2002.06.28 03:34
    답변 고맙습니다.
    예제로 주신거는 쿼리 결과를 임시 테이블에 저장해서
    사용하신것 같네요..
    그러면 이미 레포트에 임시 테이블들의 필드들을 출력할 수
    있게 만들어 놓은거잖아요... 맞죠?? ^^

    그렇게 말구여..
    그냥 일반 레이블 처럼요..
    델파이에서는 DBText 말구여.. 그냥 Text 를 쓰는 것처럼요..
    그런 방법이 없냐는 거죠...
    크리스탈 레포트 내에서 직접 하는방법 말구여..
    델파이 소스내에서 처리할 수 있냐는 거죠...

    다시한번 부탁드리겠습니다.
    그리고 답변해 주신건 정말 고맙습니다.
    도움이 많이 됐어요... ^^

    • 김영철
    • 2002.06.28 07:55
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이현철
      2002.06.28 20:31
      ErrorCode가 10053 인 경우가 바로 클라이언트가 비정상 종료가 발생되어서 생기는 에러코드 입니다. 왜 ...
    • 김영철
      2002.06.28 23:09
      먼저 답변감사드립니다 (__) 올려주신 예제대로는 아니지만 에러가 발생하면 ServerSocket1.sockett....
    • 이현철
      2002.06.29 02:17
      Do it!   [  Socket.close  ]
    • 서종환
    • 2002.06.28 06:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2002.06.28 15:19
      안녕하세요 하얀까마귀 입니다. WM_Paint 메세지는 기본적으로 클라이언트 영역을 모두 무효화 시켜 버...
    • 최용일
      2002.06.28 07:54
      안녕하세요. 최용일입니다. 그냥 간단히 마우스로 선택해서 복사해가지고 붙이시면 됩니다.  ...
    • 델파이사랑
      2002.06.28 18:14
      감사합니다..정말 그러네여....~~
    • 오현주
    • 2002.06.28 05:07
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 성더기
      2002.06.28 22:05
      프라이머리 키를 신경 안쓰셔두 된다면 insert into () select 문을 이용해 보세요 ()안에 오는 필드갯수...
    • 박준열
      2002.06.28 09:40
      TQuery Comp의 Afterscroll Event를 이용하여 처리하면 가장 좋을듯한데, Insert Into를 사용하지 않고 Ta...
    • 박재현
    • 2002.06.28 04:42
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 진돌
    • 2002.06.28 04:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.06.28 07:58
      안녕하세요. 최용일입니다. 델파이에서 자동으로 생성하는 폼은 기본적으로 하나의 인스턴스만 실행됩니...
    • 미러
    • 2002.06.28 03:20
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 미러
      2002.06.28 21:47
      for I := 0 to Grid.ColCount-1 do for J := 0 to Grid.RowCount-1 do Grid.Cells[I, J] := ''; 이...
    • KDDG_ZZOM
      2002.06.28 03:34
      cells단위로 clear할려면  루프돌려서 해야되는거 아닌가??? 다른방법은 모르겠네요... &n...
    • 이추형
      2002.06.29 21:40
      어디서 부터 말씀을 드려야 할지 감이 않오네요. 몇년전까지만 해도 출퇴근 체크기가 오라클등등의 DB에 ...
    • 허지영
      2002.06.28 03:25
      Local 입력용인지.. 아니면 출근카드 사용하는건지 확실히 말씀해 주세여 ^^ *
    • 소니기빵
      2002.06.28 01:50
      안녕하세요. 이벤트에 보시면 exit 이벤트가 있어요. 거기서 코딩하시면..^^ 그럼..이만.
    • 송강식
      2002.06.28 02:54
      단순히 tcp/ip만을 이용해서 오라클에 접속하는 컴포넌트가 있습니다. 그럴 쓴다면 일은 훨씬 쉽지요.. 오...
    • 머슴
      2002.06.28 02:25
      클라이언트를 전부 깔필요는 없구요.. Sql*net만 설치하시면 됩니다...
    • KDDG_ZZOM
      2002.06.28 02:21
      잘은 모르지만... 클라이언트깔아야 편할것 같기도 하고요... sql net이 다른거 보다 빠르다는걸로 알고 ...
    • 이현철
      2002.06.28 02:19
      우선 client pc 에슨 oracle 드라이버가 없기 때문에 oracle client 를 먼저 설치하셔야 할겁니다...
    • jslove
    • 2002.06.28 01:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.06.28 01:35
      안녕하세요. 최용일입니다. 자료실에서 검색해보세요. 10여개 정도 있을겁니다. Torry나 DSP같은 사...
    • 최용일
      2002.06.28 01:05
      안녕하세요. 최용일입니다. RX라이브러리에 있는 패키지중 몇몇개는 런타임전용 패키지입니다. 설명서에...
    • 최수림
      2002.06.28 02:04
      감사합니다..!! 저의 불찰이었군요..^^
    • 백지연
    • 2002.06.28 00:13
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 강동순
      2002.06.28 01:53
      글세요 원하는 답이 델넌지 모르겠네요 그런데 저희회사 Print (크리스탈 레포트로 만듬)아주 잘됨 ...
    • 백지연
      2002.06.28 03:34
      답변 고맙습니다. 예제로 주신거는 쿼리 결과를 임시 테이블에 저장해서 사용하신것 같네요.. 그러면 ...
    • 정태현
      2002.06.28 00:21
      Subject      ADO를 이용하여 동적으로 odbc의 알리아스를 생성하는 방법 ...
    • (_^^)~U
    • 2002.06.27 23:59
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최장원
      2002.06.27 23:38
        ComboBox1.SetFocus;   ComboBox1.DroppedDown := TRUE; 일케 해보세염..그럼 ...
    • 하기
      2002.06.27 22:20
      한가지 방법이 있느데 참고하세요... 앞의 코드로만 Combobox를 찾아가는 방법은 Function으로 작업 하시...
    • 세미콜론
      2002.06.27 22:38
      감사합니다. 좋은 방법이네요... 좀 더 쉬운 방법을 찾고싶었는데.. 이런 방법도 있었네요... 감사드리...
    • 최장원
      2002.06.28 00:46
      콤보박스 첸인쥐 이벤트에 ComboBox1.ItemIndex := ComboBox1.Items.IndexOf (ComboBox1.Text); 넣...
    • 한재령
    • 2002.06.27 21:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이현철
      2002.06.28 02:16
      ado 쓰지 마시고, mysql 전용 접속 dll 을 스세요 저두 그거 쓰는데, 빠르고 간편하고 속도도 빠르고 좋아...
    • 델초보
    • 2002.06.27 20:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이추형
      2002.06.27 21:18
        if tvEventList.Items.Count > 0 Then     label1.Caption:= inttost...