線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3073
推到 Plurk!
推到 Facebook!

Crystal Report + Delphi 2005

答題得分者是:dongpo
瘋狂火星人
一般會員


發表:1
回覆:29
積分:6
註冊:2005-06-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-03-13 18:30:43 IP:220.133.xxx.xxx 訂閱
我在Delphi 2005中import了Crystal Report 4的crystl32.ocx;並use crystal_tlb。
報表檔放在C:底下。
程式是這樣寫的:
<textarea class="delphi" rows="10" cols="60" name="code">procedure TForm9.FormCreate(Sender: TObject); var report:CrystalCtrl; begin report.ReportFileName:='C:\rad05f0.rpt'; report.Destination:=0; report.Action:=1; end; </textarea>
出現的錯誤訊息是:
Project Project9.exe raised exception class EAccessViolation with message 'Access violation at address 0045C220 in module 'Project9.exe'. Read of address 00000000'.

能否請板上先進幫忙看看是什麼原因造成的呢??
是否我還要再Import其他的DLL檔呢??
麻煩了,感激不盡!

hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-03-16 15:08:53 IP:59.124.xxx.xxx 未訂閱
看你的程式
應該是 report 這個變數還沒 Create
所以會有 Access Violation 的錯誤訊息了.
dongpo
一般會員


發表:1
回覆:8
積分:6
註冊:2006-11-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-03-16 22:10:18 IP:221.224.xxx.xxx 未訂閱
ocx 控件中 8.5版的有聲明 
public
report: ireport

然後在代碼裡寫上
report: =application1.openreport(filename,1);
.
.
.
crviewer1.datasource:=report
crviewer1.open;
..
供您參考一下.
瘋狂火星人
一般會員


發表:1
回覆:29
積分:6
註冊:2005-06-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-03-17 17:44:35 IP:220.133.xxx.xxx 訂閱
感謝您的回應。
想再請教~~~
<textarea class="delphi" rows="10" cols="60" name="code">uses Crystal_TLB; procedure TForm9.btnExitClick(Sender: TObject); var test:CrystalCtrl; begin test:=create();//<===== test.ReportFileName:='C:\rad05f0.rpt'; test.Destination:=0; test.Action:=1; end; </textarea>
其中CrystalCtrl是將crystl32.ocx這個檔案import之後在裡面找到的interface。

在程式中我用test:=create();來建立物件。
無法compile,錯誤訊息是 Incompatible types:'CrystalCtrl' and 'IDispatch' 。
我想應該是create後面要傳入一個component型態的物件當作owner。
試過傳form或application進去都不行。
那我應該用什麼東西來當作他的owner呢???

煩請撥冗指點,感激不盡~~

===================引 用 文 章===================
看你的程式
應該是 report 這個變數還沒 Create
所以會有 Access Violation 的錯誤訊息了.

瘋狂火星人
一般會員


發表:1
回覆:29
積分:6
註冊:2005-06-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-03-17 17:53:31 IP:220.133.xxx.xxx 訂閱
您好,感謝您的回應。
您提到的report: ireport;
這是以VCL的方式來處理的嗎??
或是要另外use哪些元件呢??
目前我只有use匯入的Crystal_TLB

===================引 用 文 章===================
ocx 控件中 8.5版的有聲明?
public?
report: ireport

然後在代碼裡寫上?
report: =application1.openreport(filename,1);
.
.
.
crviewer1.datasource:=report
crviewer1.open;
..
供您參考一下.
dongpo
一般會員


發表:1
回覆:8
積分:6
註冊:2006-11-01

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-03-19 13:19:10 IP:222.92.xxx.xxx 未訂閱
form 中放一个crviewer 一个 cr application

unit Unreport1;

interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleServer, CRAXDRT_TLB, OleCtrls, CRVIEWERLib_TLB;

type
Tfrmreport = class(TForm)
CRViewer1: TCRViewer;
Application1: TApplication;
procedure FormResize(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
Report :IReport;
end;

var
frmreport: Tfrmreport;
implementation

uses undm,ubasefun;
{$R *.dfm}

procedure Tfrmreport.FormResize(Sender: TObject);
begin
crViewer1.Top := 0;
crViewer1.Left := 0;
crviewer1.Height := self.Height - 40; // -150 to leave space for the buttons
crviewer1.Width := self.width-26;
end;

procedure Tfrmreport.FormShow(Sender: TObject);
begin
Report := Application1.OpenReport(ExtractFilePath(Forms.Application.ExeName) g_report,crOpenReportByTempCopy);
Report.DiscardSavedData;

Report.Database.SetDataSource(dm.rstreport.Recordset, 3, 1);
//Report.Database.Tables(1).SetLogOnInfo '10.5.2.20', 'ADO', 'shopflow', 'shopflow1';
//report.Database.Tables[1].SetLogOnInfo('10.5.2.20','ADO','shopflow','shopflow1');


crViewer1.ReportSource := Report;
crViewer1.ViewReport;
end;
procedure Tfrmreport.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Report := nil;
Application1 := nil;
Action := caFree;
frmreport:=nil;
end;
end.
瘋狂火星人
一般會員


發表:1
回覆:29
積分:6
註冊:2005-06-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-05-06 16:49:44 IP:218.169.xxx.xxx 訂閱
感謝樓上前輩的指點.... 小的在Crystall的官網找到可以用的vcl了。 目前測試摸索中。 感恩!!!
系統時間:2024-04-24 7:15:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!