fastreport 3.2 變數定義的問題 |
答題得分者是:bestlong
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
請問各位:
這是一個老系統了, 因為我幾乎都是使用 FastReport2.5, 最近改公司一個專案是 FastReport3.2 (我極少使用), 對於 fr3 有一個變數的定義查不到資訊, 是否有對 fr3 熟悉的網友可以幫忙解答 問題 我有一個 Memo1 的ojbect, 對應 [frxDBDataset1."COUNTS"] (masterdata1), 而 Memo2 object 則是統計 COUNTS 的 sum 值 (在Footer1) 為因應Delphi程式的一個switch(on, off)要決定是否 Memo1 是否要顯示 如果為 on, Memo1 object 則要顯示 counts, 如果為 off , 則 Memo1 不顯示 countprint 由 delphi導入 True, False 我在 fr3 的 Page1 的 這麼做 if Memo1.Visible := False; Memo2.Visible := False; Memo1.Text := ' '; Memo2.Text := ' '; end else begin Memo1.Visible := True; Memo2.Visible := True; Memo1.Text := '[frxDBDataset1."COUNTS"]'; Memo2.Text := '[sum( end; run fr3 後, Memo1 可以順利出現每一筆counts, 但sum 的部份是空白, 所以不知道如果要這麼做, Memo2 要如何指定? 另外, 再請問一個問題 我在 fr3 定義一個 tcounts 變數, 要如何在 fr3 中令 tcounts := tcounts 1 我下 如果下 tcounts := tcounts 1; 會出現 undeclared identifier : 'tcounts' 那要如何下才能達成計量的功能 |
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
這個部份我了解, 我的做法是
MasterData1 -> 加載 Child1 在 Child1 的 onBeforePrint 寫 以前 fr2.5 只要寫 tcounts := tcounts 1 是沒有問題的! tcounts 在 Data 的 Variable 中已先有新增一組 tcounts 變數 目前想了解的是, fr3 對於 Memo.Text 如何動態指定變數或函式(如 sum), 正確的語法應該如何下法? ===================引 用 bestlong 文 章=================== 目前有用 FR 4.8 自訂變數手動累加值,應該是在 MasterData 或 DetailData 的 OnBeforePrint 事件內處理。 |
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
離最後一次處理 FR 有點久,只好看官方文件
https://www.fast-report.com/public_download/html/FR5UserManual-HTML-en/index.html?aggregate_functions.htm 看起來 sum() 函數需要與 Group band 配合處理。 看能不能接受用一個元件計算值然後不顯示 然後才用程式碼決定是否設定到 Memo2
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
感謝副站提供的文件, 這個我也搜尋到(有fr3的), 每一章節都看過了, 其中s cript一節是比較接近我想要的, 但都說的很簡單,
手冊也建議我們使用 getvalue(), setvalue() 來做, 但都試過, 不是空白就是錯誤, 還是找不到能達成我想要的, 如果還達不到, 只能分兩張報表, 一張有 Memo1, 一張沒有Memo1 的, 但如此做, 我的程式一共有6張報表, 兩個版本, 那就要 6 * 2 * 2(有Memo1, 無Memo1), 光一支程式就搞到24張fr3, 太恐怖 ===================引 用 bestlong 文 章=================== 離最後一次處理 FR 有點久,只好看官方文件 https://www.fast-report.com/public_download/html/FR5UserManual-HTML-en/index.html?aggregate_functions.htm 看起來 sum() 函數需要與 Group band 配合處理。 看能不能接受用一個元件計算值然後不顯示 然後才用程式碼決定是否設定到 Memo2
編輯記錄
P.D. 重新編輯於 2015-07-17 16:29:42, 註解 無‧
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
試了一整天, 我找到方法了
Data->Variable 中設置一組 tcounts 變數 (計算數量值用), 一組 printon 變數(接收由Delphi傳進來的 旗標, 為True 則要計量, 為 False 則不顯示 MasterDataset1 設置一個 Memo1 -> [frxDataBaseset1."COUNTS"] (每筆數量, 不要寫入 Memo1.Text, 即保持空白, 預設 Visible=False) Footer1 設置一個 Memo2 -> [sum( 在 Page1 -> on BeforePrint 下寫 if Memo1.Visible := False; Memo2.Visible := False; Memo1.Text := ' '; // 不顯示時, 讓 Memo1 空白 end else begin Memo1.Visible := True; Memo2.Visible := True; Memo1.Text := '[frxDBDataset1."COUNTS"] '; // 這個寫法fr3可接受動態帶入dataset 值 end; 在 MasterDataset1 -> on BeforePrint 下寫 if 這樣就成了, 不但每筆可顯示 dataset 值, 最後 footer 也可加總 每一次 set() 的 tcounts 值, 我不知道 fr3 的原理是什麼, 似乎 sum() 的函式可以累加每次的 tcounts, 這是我的猜測, 因為所有的 fr 手冊都沒有提到 sum() 的原理 這也是我在不經意的測試下, 胡亂碰到的, 是幸或不幸, 不管! 只要能解決就好 但動態指定 Memo2.Text := '[sum( 我發上本袩的問題, 就是在於這部份不解, 要不然也不用這樣繞一大圈 |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
原則上是可以的, 但我並不想寫在Delphi上, 原因很簡單, 寫在delphi上就失去了 fr 原本最強的機動性功能, 一但要改變任何運算, 就得要重新編譯, 而且我面臨上千個不同客戶需求的報表, 所以不可能改1000支不同的程式!
===================引 用 chih 文 章=================== 這樣不知道可否?? TfrxMemoView(form1.FindObject('frxDBDataset1.FieldByName('COUNTS').AsString; Showreport之前... |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |