Crystal Report + Delphi 2005 |
答題得分者是:dongpo
|
瘋狂火星人
一般會員 發表:1 回覆:29 積分:6 註冊:2005-06-17 發送簡訊給我 |
我在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 發送簡訊給我 |
|
dongpo
一般會員 發表:1 回覆:8 積分:6 註冊:2006-11-01 發送簡訊給我 |
|
瘋狂火星人
一般會員 發表:1 回覆:29 積分:6 註冊:2005-06-17 發送簡訊給我 |
感謝您的回應。
想再請教~~~ <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 發送簡訊給我 |
您好,感謝您的回應。
您提到的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 發送簡訊給我 |
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |