Q&A

  • 크리스탈 레포트 포뮬러에 관해서..
크리스탈 레포트를 처음 사용해 봅니다.
VB는 여러가지 예제가 있어서 쉬웠는데..
델파이는 예제를 찾기가 힘들더군요~
그나마 여기에서 자료를 많이 찾을수 있었습니다.
VCL, 라이브러리 install 등등.. 하나씩 찾아가면서 해봤습니다.
결국 소스 비스꾸리한 모양을 만들어 냈습니다.
그런데...

Crpe1.Formulas.Formula.text :='''+Edit1.text+''';

여기가 에러입니다..
Crpe1 속에 Formulas가 있고, Formulas 속에 Formula 라는 속성이 있는거잖아요..
그런데... Formulas 속에 Formula 가 없다고 합니다.
Undeclared identifier. 'Formula' 이게 그런듯 맞죠???

어떻게 해야 하나요???

또한가지...
포뮬라는 크리스탈 레포트에 edit 컴포넌트 말하는거 맞죠??
5  COMMENTS
  • Profile
    프로글래머 2005.08.24 00:01
    크리스탈리포트에서 Formulas 는 배열입니다.
    그러므로 Crpe1.Formulas[0]:='''+Edit1.text+'''; 형식으로 사용하여야 하는데
    Formulas[n] 이라는 것은 리포트에서 받아들일 수 있도록 먼저 정의 되어있어야 하는것으로 기억이 납니다.

    즉, 리포트에서 먼저  Formulas 가 10개 정의되어 있으면 프로그램에서는 Formulas[0] 부터 Formulas[9]
    까지를 사용하여 자료를 넘겨줄 수 있겠지요. Label 성격의 객체나 Table Field 등 직접 넘겨받을 수 있는
    객체들 외에 프로그램으로부터 넘겨받아 출력하여야 할 객체들이 있으면 먼저 그 수만큼의 Formulas 를
    리포트에서 정의한 후 프로그램에서 함수에 인수 넘겨주듯이 넘겨주어 출력하는 것 입니다.

    옜날의 소스 일부를 보니 다음같은 형식으로 되어있군요.

    <!--CodeS-->
    Formulas[0]:='Napn='+'"'+Copy(Edit1.Text, 1, 4)+'"';  
    Formulas[1]:='Napw='+'"'+Copy(Edit2.Text, 6, 2)+'"';
    Formulas[2]:='Napl='+'"'+Copy(Edit3.Text, 9, 2)+'"';
    <!--CodeE-->

    이게 어떤 인쇄서식(고지서종류)에 납기년월일 입력한 것을 받아 출력하는 것 이군요.

    위의 코드를 보니 우선 먼저 크리스탈 리포트에서 출력할 객체들을 정의한 후
    그것이 프로그램에서 넘겨주는 자료라면 Formulas[n] 으로 받아 출력하도록 되어있으며,
    리포트에서 받아들일 Formulas를 정의할 때 'Napn' 따위의 변수형식으로 처리한 후 넘겨주는 것 같습니다.

    SelectionFormula 는 출력에서 직접 필터링을 해주는 등 아주 쓸만한 출력도구라는 기억입니다만
    배포할 때 출력엔진을 포함해서 배포를 하여야 하기때문에 배포 프로그램이 너무 무거워지는
    경향이 있어서 지금은 지금은 모든것을 QuickReport로 전부 처리하고 있기 때문에 '... 인것 같다' 는
    식으로 밖에 적지를 못하겠네요.

    사용한지 오래되어서 가물가물 합니다. 도움이 될지 모르겠네요.
    그러한 이유로 추가질문은 사양 합니다. 도움이 되기를 바랍니다.

  • Profile
    조진희 2005.08.24 01:17
    영~ 모르겠어서 다시 질문드립니다..
    Crpe1.Formulas[0]:='''+Edit1.text+''';
    이렇게 고쳐서 해 봤는데도 에러가 납니다.
    Connot  assign to a read-only property 라고요...
    Crpe가 read-only속성이라는 건가요?


    그리고 또 하나만 더 질문 드릴께요~~
    그럼 포뮬라는 크리스탈 레포트 프로그램을 직접 열고 배치하는거자나요..
    수식필드부분에 추가시키는거 맞죠???
    그러면 타이틀과 실제 값이 들어가는 본문 부분에 @sbs_no 라는게 생기는데..
    프로그램에서 이 이름을 직접 지정해서 값을 넣을수도 있는거죠?


  • Profile
    프로글래머 2005.08.24 01:55
    가물가물 한데요 ......
    기억을 더듬어 가면서 한번 설명을 해 보도록 하지요. 나의 공부도 되니까.

    바로 전 답변에 적은 코드를 보면 아래와 같습니다.
    <!--CodeS-->
    Formulas[0]:='Napn='+'"'+Copy(Edit1.Text, 1, 4)+'"';  
    Formulas[1]:='Napw='+'"'+Copy(Edit2.Text, 6, 2)+'"';
    Formulas[2]:='Napl='+'"'+Copy(Edit3.Text, 9, 2)+'"';
    <!--CodeE-->

    그 때 적은것과 마찬가지로 Formulas[0]:='"'+Edit1.Text, 1, 4)+'"';  식으로
    바로 대입하면 안되고 Formula Name을 정하여야 할 것 입니다. 어디에서 정하느냐면
    버전이 무엇인지는 모르겠으나 6을 기준으로 하여 보면
    Standard ToolBar에 있는 Insert Field 버튼을 클릭하면 Insert dialog box 가 뜨는데
    그 dialog box  에서 New 버튼을 누르면 다시 Formula Name 입력Box 가 뜹니다.
    그곳에 해당 Formula 의 이름을 입력합니다.

    위 코드에서 보면
    납기년용 Formulas가 첫번째로 Insert 하여 정의 되었고 이름은 Napn,
    납기월용 Formulas가 두번째로 Insert 하여 정의 되었고 이름은 Napw,
    납기일용 Formulas가 세번째로 Insert 하여 정의 되었으며 이름은 Napl  인것을 알 수 있네요.

    그런 다음에 각각의 Formula Editor에서 Function, Operators 등을 가지고 설정을 했는데
    단순한 것은 별로 손대지 않았던 것 같습니다.

    크리스탈 리포트는 보면 이게 리포트 툴만으로 거의 프로그래밍 수준의 코딩을 해서
    출력을 다룰 수 있는 툴 입니다. 대부분 있는 기능들중 반도 제대로 사용하지 않을 것 같네요.
    그렇다면 굳이 이걸 사용하려고 애를 쓸 이유가 있을가 싶습니다.  

    이거 사용한지가 그야말로 호랑이 담배피던 시절인것 같은데요(말하면 모두들 놀랠까봐
    비밀로 합니다.) 그 때 아무에게도 물어볼 데도 없었고요, 아는 사람도 없었고요, 있는거라곤 달랑
    영어로 된 사용설명서 한권뿐 이었더랬습니다. 정품을 구입했었으니까요.

    사용설명서라는게 책만 두꺼웠지 설명이 제대로 되어있지도 않았어요.
    그냥 혼자서 해치워 버렸엇걸랑요. 이정도만이라도 설명해주는 사람이 있었으면
    엄청 쉬웠을 것 같은 기억입니다. 지금 몰라서 그렇지 알고나면 아무것도 아닙니다.

    한번 해 보세요.


  • Profile
    조진희 2005.08.24 04:46
    답변 정말 감사드립니다..
    정말로 많은 도움이 되고있습니다.
    그런데,,제가 아직도 잘 모르겠어서..(너무 바본가???)
    지금 Crystal Report 9, Delphi 7 을 사용합니다.
    CR6의 Insert Field 버튼은 CR9에서 아마도 텍스트 객체 삽입 버튼인거 같습니다.
    맞나요?
    맞다면 텍스트 개체 삽입 버튼 클릭하면 자동 생성 됩니다.
    이것은 일반 텍스트 인거 같구요~
    포뮬라는 수식필드에서 만드는거 같은데..
    수식필드로 만들어야 수식편집기(Formula Editord인거 같은데...)에서 Function, Operators 등을
    사용할수가 있습니다. 하지만 테스트를 위한 리포트에서는 별도로 함수를 만들어 주진 않았습니다.
    함수나 연산자 같은걸 델파이에서 처리해 줘야 하는부분이라고 생각하니까요~
    이것도 맞나요?
    맞다면 이렇게 포뮬라를 만들고 나서도 이전과 같은 메세지가 나옵니다.
    리포트를 잘못 만들어 놓은걸까요?
    아니면 델파이에서 크리스탈 레포트를 지원하는 뭔가를 빼먹은걸까요?
    델파이용 크리스탈 레포트를 구매 한게 아니라서..
    크리스탈 레포트 홈페이지에서 VCL을 다운받아서 깔았거든요~~
    다시 한번 알려주세요~~~

    제가 이제까지 테스트했던 소스입니다.

    <!--CodeS-->
    procedure TForm1.ViewReport3;
    var
       FileName : String;
    begin
      Application1:= CRAXDDRT_TLB.TApplication.Create(self);
      FileName := ExtractFilePath(Forms.Application.ExeName);
      FileName := FileName + 'Report2.rpt';
      CrReport := Application1.OpenReport(FileName,crOpenReportByTempCopy);
      CrReport.EnableParameterPrompting := false;
      CrReport.DiscardSavedData;

      with Query1 do begin
        Close;
        SQL.Clear;
        SQL.Add('select * from store where store_no >''7'' ');
        Sql.Add('and sbs_no =''1'' and active =1 and store_no >100 ');    
        Open;
      end;

      Crpe1.Formulas.Clear;

    //***********************************//
      Crpe1.Formulas.Retrieve;   //<--------이넘도 에러
    //************************************//

      while not (Query1.Eof) do begin
        Crpe1.Formulas[1] := FieldByName('sbs_no').AsString;
        Crpe1.Formulas[2] := FieldByName('store_no').AsString;
        Crpe1.Formulas[3] := FieldByName('store_code').AsString;
        Crpe1.Formulas[4] := FieldByName('store_name').AsString;
        Crpe1.Formulas[5] := FieldByName('active').AsString;
        Query1.Next;
        Crpe1.Formulas.Send;
      end;

      CRViewer91.ReportSource := CrReport;
      CRViewer91.ViewReport;
    end;

    <!--CodeE-->

  • Profile
    프로글래머 2005.08.24 18:23

    말씀하시는것을 보니 쓰고계시는 버전 9와 6이 엄청난 차이가 있는것 같군요.
    죄송합니다만 버전 9를 구해서 사용해 보기 전에는 더 이상 답변을 드리기가
    어렵겠습니다.

    한번 구해서 사용해 보고나서 그때도 필요하시면 답변을 드리도록 하겠습니다.
    • 마이크로김
      2005.08.30 02:43
      form create 적어주면 화면이 clear 됩니다 AForm.Brush.Style := bsClear;
    • 최용일
      2005.08.26 08:25
      안녕하세요. 최용일입니다. HTML로 파일 저장하실때 그냥 텍스트문서를 확장자만 html로 만들어서 저장...
    • 프로글래머
      2005.08.26 01:43
      SpeedButton 의 Flat 를 True 로 하여 필요한 부분에 내려놓고 사용하면 될 것 같은데요 ? 마우스가 가면 ...
    • 나도초급
      2005.08.26 02:38
      답변 감사합니다.. 그런데, 사각 이미지 가 아니라 스피드 버튼으로 처리가 어려워요. 그리고 투명폼을...
    • 권형근
    • 2005.08.26 00:07
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 모영철
      2005.08.26 00:16
      일반 도스용 프로그램들 생각하면 됩니다. CreateProcess함수에 파라미터 집어넣는 부분이 따로 없으니 ...
    • 권형근
      2005.08.27 01:08
      답변 감사합니다. 다른 질문을 또 하고자 합니다. 테스트1, 테스트2 프로그램이 있고, 테스트2는...
    • TeamB
      2005.08.30 04:15
      메인폼의 OnActive 나 OnShow 에서 적절히 처리 해주시면 될듯 한데요.. 메인폼이 열릴때... Param...
    • 토픽
    • 2005.08.25 21:35
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 윤경미
    • 2005.08.25 21:15
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 모영철
      2005.08.26 00:08
      아실지 모르겠습니다만.. 그 에러코드를 더블 클릭하면 알아서 어디서 났는지 찾아줍니다. 아마 이전...
    • 데빠이
      2005.08.25 23:15
      위에 선언한건 procedure buttoncontrol(ntag:integer; bflag:boolean); 이구... 아래 소스상에는 procedu...
    • 최용일
      2005.08.26 08:16
      안녕하세요. 최용일입니다. 델파이의 Source폴더에 보시면 각각의 소스가 있으니 그걸 보시고 새로 함수...
    • 허 강
    • 2005.08.25 12:34
    • 2 COMMENTS
    • /
    • 0 LIKES
    • TeamB
      2005.08.25 18:22
      델 7의 ADO 콤포를 사용해보지 않아서 모르겟는데, 아마도 DisableControls, EnableControls 라는 메소드...
    • 허 강
      2005.08.26 08:35
      답변 감사합니다. 모든것이 해결되었습니다. > >델 7의 ADO 콤포를 사용해보지 않아서 모르겟는데, 아...
    • 김상균
    • 2005.08.25 07:29
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 박홍재
      2005.08.27 11:14
      안녕하세요. 문제는 두개의 필드를 합친 것에 대한 조회에 있는거 같군요. Select 문에서 두개의 Field를...
    • TeamB
      2005.08.26 10:07
      흠...데이터는 검색되지 않습니다. 디비가 MySQL이라고 하셨죠? out_date 가 date 형이나 datetime 형일...
    • 김상균
      2005.08.26 04:36
      out_date 는 날짜형이고 lend_su 는 숫자형입니다. 검색하고자 하는것은 out_date(대여일자)+lend_su(대여...
    • 박홍재
      2005.08.25 23:49
      out_date와 lend_su를 더하는 이유가 무엇인가요.  out_date는 Table의 Field 일거 같은데요.&...
    • 조진희
      2005.08.25 20:28
      저도 잘은 모르지만.. 아마도.. out_date는 형식이 데이터 일꺼 같고.. lend_su는 숫자 일꺼 같은데....
    • 모영철
      2005.08.25 17:58
      이렇게 하면 됩니다 SendMessage(Form2.handle, WM_MOUSEWHEEL, WheelDelta * 256 * 256, MousePos.X + ...
    • 기타맨
    • 2005.08.25 01:50
    • 1 COMMENTS
    • /
    • 0 LIKES
    • TeamB
      2005.08.25 19:13
      Level 과 GetPrev 를 사용하면 될듯합니다. <!-- CodeS --> var   nNode: TTreeNod...
    • 모영철
      2005.08.25 20:30
      메인폼을 없앨순 없습니다. 퀵리포트 폼을 메인으로 바꾸면 가능하겠지만요.. 이런방법이 있는진 모...
    • 장재림
      2005.08.26 08:36
      제가 바라는건 반대로 인데요 메인에서 반대로 프리뷰를 끌수 있는 지 없는지를 알고싶어서 그런건데 ...
    • nilriri™
      2005.08.30 05:48
      가능합니다.. 프리뷰창의 닫기버튼 클릭시 정말로 닫을까요?  라고 confirm메시지 처리를 하...
    • 김성진
      2005.08.25 02:40
      소켓팅이라는 것이 서버와 클라이언트간의 통신이것을 아실겁니다. 그럼 일반적으로 서버쪽은 오픈되어 있...
    • 델파이-델짱
      2005.08.26 18:09
      네 그렇군요.^^; 도움글 감사 드립니다. 관련 해서 한가지 더 질문 할께요^:^ 그러면 혹시 서버소켓...
    • 꼬미사랑
      2005.08.31 02:39
      안녕하세요^^* 가비지나 사용하지 않는 클라이언트 소켓을 찾는 방법보다는 일정 시간 규약된 시간내에 아...
    • 조현태
    • 2005.08.24 12:55
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 꼬미사랑
      2005.08.24 22:22
      클라이언트에서 사용하신 DB랑 원격 서버에 있는 DB의 종류에 따라서 틀리겠죠..방식에 대해서는.. 클라이...
    • 천희택
      2005.08.24 17:59
      안 돌아갑니다. Kernel 자체가 틀린데 안 돌아갑니다. 유닉스의 소스를 리눅스로 옮겨서 컴파일, 링...
    • 임형준
      2005.08.24 19:10
      제가 TStringList, TList, TStream같은 VCL 관련 오브젝트를 사용해서 보통의 표준 파스칼에서는 컴파...
    • ez.J
      2005.08.24 22:39
      유닉스용 델파이는 없습니다. 터보파스칼과 어느정도 호환되는 pascal을 사용해보시기 바랍니다. 수...
    • 임형준
      2005.08.24 08:26
      자문자답입니다만... 제가 만드려는 건 콘솔프로그램인데, 콘솔프로그램은 실행이 되더군요. ^^
    • 윤경미
    • 2005.08.24 02:33
    • 1 COMMENTS
    • /
    • 0 LIKES
    • Runo
      2005.08.24 03:02
      Table Properties 가시면 TableName 항목이 있습니다. 오른쪽에 있는 화살표를 누르면 Table 리스트가 나...
    • 조진희
    • 2005.08.23 23:04
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 프로글래머
      2005.08.24 00:01
      크리스탈리포트에서 Formulas 는 배열입니다. 그러므로 Crpe1.Formulas[0]:='''+Edit1.text+'''; 형식으로...
    • 조진희
      2005.08.24 01:17
      영~ 모르겠어서 다시 질문드립니다.. Crpe1.Formulas[0]:='''+Edit1.text+'''; 이렇게 고쳐서 해 봤는데...
    • 프로글래머
      2005.08.24 01:55
      가물가물 한데요 ...... 기억을 더듬어 가면서 한번 설명을 해 보도록 하지요. 나의 공부도 되니까. ...
    • 조진희
      2005.08.24 04:46
      답변 정말 감사드립니다.. 정말로 많은 도움이 되고있습니다. 그런데,,제가 아직도 잘 모르겠어서..(너무...
    • 프로글래머
      2005.08.24 18:23
      말씀하시는것을 보니 쓰고계시는 버전 9와 6이 엄청난 차이가 있는것 같군요. 죄송합니다만 버전 9를 구...
    • 모영철
      2005.08.23 03:08
      ㅁㅁ
    • 권태훈
      2005.08.23 03:09
    • 민스맘
    • 2005.08.22 23:54
    • 0 COMMENTS
    • /
    • 0 LIKES