由Delphi傳字串參數給報表,Crystal Reorpt中如何拆解剖析字串? |
答題得分者是:st33chen
|
cindyliu
一般會員 發表:16 回覆:18 積分:6 註冊:2008-09-17 發送簡訊給我 |
報表的查詢視窗上的查詢條件有:
客戶名稱、客戶類別、交易日期起、交易日期迄、交易金額起、交易金額迄 USER選擇了哪些條件都要列在報表表頭上,假如我只選了其中這三個條件: 客戶類別:A 交易日期起:20081201 交易日期迄:20081231 在報表表頭裡的結果是: XXXXX 統計表 客戶名稱:XX 客戶類別:A 交易日期:20081201~20081231 交易金額:XX ================================================================ 客戶名稱 交易日期 交易金額 購買產品 ================================================================ ABCDEFG 20081202 1500 AAAAAAAA TEST 20081202 5000 BBBBBBBBBBBBBBBB XYZ 20081215 400 CCCCCCCCCCC ..... (沒有選到的條件就先用XX代替) 現在程式裡只提供了一個變數給報表參數使用 所以我必預把這些條件加起來組成一個字串給報表 請問在串字串時要怎麼串才會比較好呢? CRYSTAL REPORT又要怎麼去拆解傳進來的字串? 有FUNCTION可以使用嗎?如何使用? 現在我想到組字串的方式有: (1) TmpStr := 'XX;A;20081201;20081231;XX;XX'; // 全部都組起來 (用分號連接) (2) TmpStr := 'A;20081201;20081231'; // 只組有值的部份 或是有其他更好的組法? 請各位幫幫忙~提供點意見...3Q3Q |
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您好,
建議用 tstringlist : 1. 取得條件 : stringlist.clrear; 將條件依某順序放入 stringlist 裏 --> stringlist.add(條件值) 或 stringlist.add('XX'); 2. 呼叫 report : 將 stringlist.text 傳入 report (假設變數名為 parstr --> parstr := stringlist.text; 或不用傳, 在 report 中直接取用 stringlist ) 3. report 裏取用 傳入的變數 stringlist2.text := parstr; ( 這時就自己切好了) stringlist2.strings[0] --> 第一個條件值 stringlist2.strings[1] --> 第二個條件值 ... 註 : tstringlist.text 的內容 為 string1 #13#10 string2 #13#10 ... 也就是把用 #13#10 分隔的字串串(string串)當成一個字串, 取用時 strings[0] 就是第一個子字串, 類推. 您也可以把 #13#10 (也就是 delimeter) 改為分號. 奇怪, 為何這一題沒回答 ============================================ 又, 如果 條件是在 form1 指定, 報表是在 report1 從quickreport 的作法, 就在 report1 直接用 form1.條件值 (例如 form1.date1.text) 也可以才對, 不需要傳. crystal report 我是沒用過, 不知是否一樣, 也請參考一下.
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
cindyliu
一般會員 發表:16 回覆:18 積分:6 註冊:2008-09-17 發送簡訊給我 |
謝謝您的幫忙喔...
一直忘記回來看看.. 問題已經解決了,只是方法也許不是很好.. 後來我的方法是在程式中將字串組起來, 且每一組都會有一定的長度,就算是user沒選也預留固定的長度 TmpStr := 'XX A 2008120120081231XX XX (長度:5,5,8,8,5,5) 然後在報表裡再加formula 用mid 截字串 客戶名稱 = mid(TmpStr,1,5) 客戶類別 = mid(TmpStr,6,5) 交易日期1 = mid(TmpStr,11,8) 交易日期2 = mid(TmpStr,19,8)
編輯記錄
cindyliu 重新編輯於 2009-02-19 22:10:49, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |