Q&A

  • 최수영님! 소스좀 봐주세요.
안녕하세요. 최수영님의 웹에 올린글을 보고, 크리스탈리포트를 델파이에서 실행 하였습니다. 물론, Crystal7VCL4 컴포넌트도 델파이에 셋팅을 했구요. 컴포넌트의 라이센스는 어떻게 되나요?(비지니스용으로...)

크리스탈리포트는 odbc를 이용해 오라클서버의 뷰테이블로 작성했습니다. 델파이에서 첨으로 실행을 했는데.... 크리스탈 엔진 에러 메세지가 나옵니다.

에러번호는 599이고, "cannot open SQLserver Method:Excute " 에러 메세지 내용입니다.

델파이쪽의 소스코딩은 아래와 같습니다.

procedure Tfrm_abd_print.Button1Click(Sender: TObject);

Var

sReportName : String; //파일 이름

sFilePath : String; //파일 경로

sWorkMan : String; //작업자 (로그인 명)

from_date : String; // 시작일자

to_date : String; // 끝일자

from_hour : String; // 시작 시간

to_hour : String; // 끝시간



begin



sFilePath := 'C:rpt'; //파일 경로

sWorkMan := '네이버';

from_date := Crpe1.DateToStr(DateTimePicker1.Date) ; // 시작일자

to_date := Crpe1.DateToStr(DateTimePicker2.Date) ; // 끝일자

from_hour := Crpe1.TimeToStr(DateTimePicker3.Time); // 시작 시간

to_hour := Crpe1.TimeToStr(DateTimePicker4.Time); // 끝시간

if RadioButton1.Checked = true then

sReportName := sFilePath + 'd_abd_call_time'

else if RadioButton2.Checked = true then

sReportName := sFilePath + 'd_abd_call_day'

else if RadioButton3.Checked = true then

sReportName := sFilePath + 'd_abd_call_mon'

else if RadioButton4.Checked = true then

sReportName := sFilePath + 'd_abd_call_week';



if cbCamp.Items.Strings[cbCamp.ItemIndex] = '' then

begin

messagedlg('센터명을 확인 하십시오!!! ',mterror,[mbok],0);

exit;

end;

with Crpe1 do

begin

Selection.Clear;

GroupSelection.Clear;

OutPut:=toWindow; //uses문에 ucrpe32등록하여야 함

// if Uppercase((Sender as TBitBtn).name) = UpperCase('print_bit') then

// OutPut:=toPrinter;

WindowStyle.Title:=caption;

Connect.ServerName := 'server1';

Connect.UserID := 'cti';

Connect.Password := 'cti';

Connect.DatabaseName:= 'sec';



if cbGroup.Items.Strings[cbGroup.ItemIndex] = '' then

begin

ReportName := sReportName + '_1.rpt';

Selection.Formula[0] := '{d_abd_call_time.campaign_id} like "'+listCenterID.Strings[ cbCamp.ItemIndex ]+'" ' +

'and {d_abd_call_time.dd} >= DTSToDate("'+ from_date + '") '+

'and {d_abd_call_time.dd} <= DTSToDate("'+ to_date + '") '+

'and {d_abd_call_time.hh} = "' + from_hour + '" '+

'and {d_abd_call_time.hh} = "' + to_hour + '" ';



end

else

begin

ReportName := sReportName + '.rpt';

Selection.Formula[0] := '{d_abd_call_time.campaign_id} like "'+listCenterID.Strings[ cbCamp.ItemIndex ]+'" '+

'and {d_abd_call_time.group_id} like "'+listGroupID.Strings[ cbGroup.ItemIndex ]+'" '+

'and {d_abd_call_time.dd} >= DTSToDate("'+ from_date + '") '+

'and {d_abd_call_time.dd} <= DTSToDate("'+ to_date + '") '+

'and {d_abd_call_time.hh} = "' + from_hour + '" '+

'and {d_abd_call_time.hh} = "' + to_hour + '" ';

end;

Formulas.Clear;

Formulas.Add('기간1');

Formulas.Formula.Text := from_date ;

Formulas.Add('기간2');

Formulas.Formula.Text := to_date ;

Formulas.Add('시간1');

Formulas.Formula.Text := from_hour ;

Formulas.Add('시간2');

Formulas.Formula.Text := to_hour ;

Formulas.Add('작업자');

Formulas.Formula.Text := sWorkMan ;

Formulas.Add('센터');

Formulas.Formula.Text := cbCamp.Items.Strings[cbCamp.ItemIndex] ;

if cbGroup.Items.Strings[cbGroup.ItemIndex] <> '' then

begin

Formulas.Add('그룹명');

Formulas.Formula.Text := cbGroup.Items.Strings[cbGroup.ItemIndex] ;

end;



Formulas.Send;

Execute;

end;











end;



1  COMMENTS
  • Profile
    최수영 2000.02.02 18:06
    늦게 답변을 보내 되었네요..

    점검사항

    1. 날자타입이 smalldatetime인가 varchar(8) or char(8)인지요...

    smalldatetime이라면 델파이의 날자변수는 "2000/01/01"같인 중간에

    /가 들어가야 합니다! ->515 formula error가 나오는디...



    2. 크리스탈7.0에 가셔서 문제의 레포트를 부르신다음 set location을 실행

    해당데이블을 정확한 드라이버 ex) SQL Server->sybase,ms-sqlserver)

    에 해당되는 것을 각각 테이블을 다시연결, data verifiy실행





    최수영올림







    지니 wrote:

    > 안녕하세요. 최수영님의 웹에 올린글을 보고, 크리스탈리포트를 델파이에서 실행 하였습니다. 물론, Crystal7VCL4 컴포넌트도 델파이에 셋팅을 했구요. 컴포넌트의 라이센스는 어떻게 되나요?(비지니스용으로...)

    > 크리스탈리포트는 odbc를 이용해 오라클서버의 뷰테이블로 작성했습니다. 델파이에서 첨으로 실행을 했는데.... 크리스탈 엔진 에러 메세지가 나옵니다.

    > 에러번호는 599이고, "cannot open SQLserver Method:Excute " 에러 메세지 내용입니다.

    > 델파이쪽의 소스코딩은 아래와 같습니다.

    > procedure Tfrm_abd_print.Button1Click(Sender: TObject);

    > Var

    > sReportName : String; //파일 이름

    > sFilePath : String; //파일 경로

    > sWorkMan : String; //작업자 (로그인 명)

    > from_date : String; // 시작일자

    > to_date : String; // 끝일자

    > from_hour : String; // 시작 시간

    > to_hour : String; // 끝시간

    >

    > begin

    >

    > sFilePath := 'C:rpt'; //파일 경로

    > sWorkMan := '네이버';

    > from_date := Crpe1.DateToStr(DateTimePicker1.Date) ; // 시작일자

    > to_date := Crpe1.DateToStr(DateTimePicker2.Date) ; // 끝일자

    > from_hour := Crpe1.TimeToStr(DateTimePicker3.Time); // 시작 시간

    > to_hour := Crpe1.TimeToStr(DateTimePicker4.Time); // 끝시간

    > if RadioButton1.Checked = true then

    > sReportName := sFilePath + 'd_abd_call_time'

    > else if RadioButton2.Checked = true then

    > sReportName := sFilePath + 'd_abd_call_day'

    > else if RadioButton3.Checked = true then

    > sReportName := sFilePath + 'd_abd_call_mon'

    > else if RadioButton4.Checked = true then

    > sReportName := sFilePath + 'd_abd_call_week';

    >

    > if cbCamp.Items.Strings[cbCamp.ItemIndex] = '' then

    > begin

    > messagedlg('센터명을 확인 하십시오!!! ',mterror,[mbok],0);

    > exit;

    > end;

    > with Crpe1 do

    > begin

    > Selection.Clear;

    > GroupSelection.Clear;

    > OutPut:=toWindow; //uses문에 ucrpe32등록하여야 함

    > // if Uppercase((Sender as TBitBtn).name) = UpperCase('print_bit') then

    > // OutPut:=toPrinter;

    > WindowStyle.Title:=caption;

    > Connect.ServerName := 'server1';

    > Connect.UserID := 'cti';

    > Connect.Password := 'cti';

    > Connect.DatabaseName:= 'sec';

    >

    > if cbGroup.Items.Strings[cbGroup.ItemIndex] = '' then

    > begin

    > ReportName := sReportName + '_1.rpt';

    > Selection.Formula[0] := '{d_abd_call_time.campaign_id} like "'+listCenterID.Strings[ cbCamp.ItemIndex ]+'" ' +

    > 'and {d_abd_call_time.dd} >= DTSToDate("'+ from_date + '") '+

    > 'and {d_abd_call_time.dd} <= DTSToDate("'+ to_date + '") '+

    > 'and {d_abd_call_time.hh} = "' + from_hour + '" '+

    > 'and {d_abd_call_time.hh} = "' + to_hour + '" ';

    >

    > end

    > else

    > begin

    > ReportName := sReportName + '.rpt';

    > Selection.Formula[0] := '{d_abd_call_time.campaign_id} like "'+listCenterID.Strings[ cbCamp.ItemIndex ]+'" '+

    > 'and {d_abd_call_time.group_id} like "'+listGroupID.Strings[ cbGroup.ItemIndex ]+'" '+

    > 'and {d_abd_call_time.dd} >= DTSToDate("'+ from_date + '") '+

    > 'and {d_abd_call_time.dd} <= DTSToDate("'+ to_date + '") '+

    > 'and {d_abd_call_time.hh} = "' + from_hour + '" '+

    > 'and {d_abd_call_time.hh} = "' + to_hour + '" ';

    > end;

    > Formulas.Clear;

    > Formulas.Add('기간1');

    > Formulas.Formula.Text := from_date ;

    > Formulas.Add('기간2');

    > Formulas.Formula.Text := to_date ;

    > Formulas.Add('시간1');

    > Formulas.Formula.Text := from_hour ;

    > Formulas.Add('시간2');

    > Formulas.Formula.Text := to_hour ;

    > Formulas.Add('작업자');

    > Formulas.Formula.Text := sWorkMan ;

    > Formulas.Add('센터');

    > Formulas.Formula.Text := cbCamp.Items.Strings[cbCamp.ItemIndex] ;

    > if cbGroup.Items.Strings[cbGroup.ItemIndex] <> '' then

    > begin

    > Formulas.Add('그룹명');

    > Formulas.Formula.Text := cbGroup.Items.Strings[cbGroup.ItemIndex] ;

    > end;

    >

    > Formulas.Send;

    > Execute;

    > end;

    >

    >

    >

    >

    >

    > end;

    >