如何在呼叫.rpt檔時動態修改所連結的檔案型資料庫來源? |
答題得分者是:sryang
|
喬狼
一般會員 發表:2 回覆:3 積分:1 註冊:2010-08-25 發送簡訊給我 |
小弟的公司是做ERP的,
環境是D5、CR8(rpt開發程式而非Delphi開發用),還因為部份元件某些版權因素無法升級(舊就算了,侷限到有股想離職的衝動囧), 報表既有作法是程式印表將DBF丟到本機固定路徑,報表預設是讀該路徑,EX: C:\Report\ 程式呼叫報表時,報表會自己去開該路徑下的DBF, 後來ERP增加可以切換把這些暫存檔、工作檔丟到使用者目錄下, 即C:\Document and Settings\User\Application Data\Temp\Report\或C:\User\AppData\Temp\Report\ 在一開啟ERP時會設進一個公用的全域變數,供執行時期所有工作檔或報表使用, 但是問題來了,報表開啟會跳錯誤533,因為報表找不到資料庫所致, 網路找過可以透過設一個ADOQuery來動態取得dBase的路徑,再設給CrpeDS的DataSet使用: [code delphi] Crpe1.Tables[0].DataPointer := CrpeDS1.DataPointer; [/code] 試著安裝TCrpeDS結果install失敗,查過這顆元件是只能在含D6以上的版本Run, 像是DesignIntf.dcp在D5是Dsgnintf.dcp, 而DesignEditors.dcp是在D6之後從 Dsgnintf.dcp分出來的, 請問是否有其他方法可以在runtime時,去改.rpt檔的檔案型資料庫路徑? |
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
|
喬狼
一般會員 發表:2 回覆:3 積分:1 註冊:2010-08-25 發送簡訊給我 |
公司是幾十年前另一間做ERP的公司合夥人分出來的,
因為部份程式或元件是有擋權限或沒有Source,無法修改所以Delphi 6以上就不能跑, 目前使用的印表函數也是其一,因為是包死的沒Source,推測是呼叫crystal.dcp,所以算是VCL? 後來現在這間公司有自己另寫印表函數,Source是使用TCrpe,package也是使用crystal.dcp, 如果均是使用VCL,試過這個網站的方式:http://topic.csdn.net/t/20040413/20/2961272.html [code delphi] //Crpe.Connect.ServerName := ''; Crpe.Connect.DatabaseName := 'DBFDB'; //這是ERP底層預設的dBase Database AliasName //Crpe.Connect.UserID := ''; //Crpe.Connect.Password := ''; Crpe.Connect.Propagate := True; Crpe.SQL.Query.Text := 'SELECT * FROM ' DBFDIR 'AAA.DBF'; [/code] 不確定是否是這樣設,註記的地方針對dBase也不確定是否需要所以mark起來, 只是每支報表的DBF檔名都不一樣,例如說有的是以UnitName或FormName產生的, 真正的DBF檔名還是要抓得到RPT檔設的才準,程式只要負責改連結路徑就好 用什麼方法動態修改檔案型資料庫的資料目錄,與貴司使用何種方法呼叫 Crystal Report 有關 請問是使用 Crystal Report VCL?還是 ActiveX (CRAXDRT.DLL) 方式? |
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
|
喬狼
一般會員 發表:2 回覆:3 積分:1 註冊:2010-08-25 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |