Q&A

  • 델파이5, 크리스탈레포트8.0 코딩으로 연결하기
CR.ReportFileName := 'C:\Report\내역(비정상).rpt';
CR.SQLQuery := 'SELECT * FROM AutoBank..BankList ORDER BY Cnt';
CR.WindowTitle := '비정상 내역';
GetVatSum2(intVat, intTotal);
CR.Formulas[0] := 'company = ''' + frmBankAuto.edt_Company.text + '''';
CR.Formulas[1] := 'user = ''' + frmBankAuto.mUserName + '''';
CR.Formulas[2] := 'condition = ''처리일자: ' + cboBankDay.Text + '''';
CR.Formulas[4] := 'TOTALSUM = ''' + formatfloat('#,##0', intTotal) + '''';

CR.WindowState := 2;

// 데이터베이스에 연결한다.
CR.LogonServer ('pdsodbc.dll', 'rptdata', '', 'cjp', 'cjp');

CR.Action := 1;

위와같이 델파이5 + MSSQL-Server7.0 + 크리스탈레포트7.0으로 코딩이 되어 있습니다.

크리스탈7.0을 지우고 8.0으로 새로 깔았습니다.

문제는 CR.LogonServer ('pdsodbc.dll', 'Rptdata', '', 'cjp', 'cjp'); 이부분인데 'rptdata라는게 ODBC 명이  맞나여?

ODBC 제어판에 보니깐 rptdata라는놈이 있긴합니다.(이걸 삭제하면 기존것도 실행이 안되구여..느낌상으론 분명 ODBC명이 맞긴 할 거 같은데)

또 8.0을 까니깐 'pdsodbc.dll' 이 파일이 어디에도 존재하지 않네요.

그런데 실행은 되더라구요.

또하나 문제는 'Rptdata' 가 ODBC명이 맞다면 다른 ODBC 명을 주고 하면 될거 같아서 'RptdataReal'로 바꿔서 하면 자꾸 dll을 찾을 수가 없다는 메세지와 서버에 연결 할 수가 없다는 메세지가 나와요.

델파이5 에서 TCrystalReport컴포넌트를 가지고  mssql 7.0 서버 연결을 코딩으로 어떻게 하면 되나요?

크리스탈 많이 써보신 분들의 많은 도움 부탁합니다.
3  COMMENTS
  • Profile
    김동수 2004.04.22 00:29
    CR.LogonServer ('pdsodbc.dll', 'rptdata', '', 'cjp', 'cjp');
    이걸 삭세 후

    이렇게 하니깐 되네요    
    //AutoBank (ODBC 명)
    //UID (mssql 로그인 아이디)
    //pwd( mssql password)
    CR.Connect :=  'DSN=' + 'autobank' + ';UID=cjp;PWD=cjp;DSQ=';

    이상입니다.

    정보는 여기서 얻었습니다 http://forums.aspfree.com/archive/t-18281

  • Profile
    오병주 2004.04.21 23:18
    저는 예전에 이렇게 연결해서 잘썼던기억이있네여...

    제가 했던건 크리스탈 레포트 9로 사용했던거라...

    도움이 될지 모르겠지만....

    참고해보세요....

    간단하게 예제 올립니다...

    그럼 ..... 권투를...

    private
        { Private declarations }
        CrReport : IReport;
    선언하시고...

    FileName := ExtractFilePath(Forms.Application.ExeName);
    FileName := FileName + 'report2_10.rpt';
    CrReport :=
    Application1.OpenReport(FileName,crOpenReportByTempCopy);

    CrReport.EnableParameterPrompting := false;
    CrReport.DiscardSavedData;

    // ** 포뮬라 필드 넣는 곳 ** ////////////////////////////////////////////////
       CrReport.FormulaFields.Item[1].Text := '"1111111"';
       CrReport.FormulaFields.Item[2].Text := '"2222222"';


    CRViewer91.ReportSource := CrReport;
    CRViewer91.ViewReport;
    CrReport := nil;
    Application1.Destroy;


  • Profile
    김동수 2004.04.22 03:12
    답변 감사합니다....