iT邦幫忙

0

{已解決} Crystal Report 如何讓有逗號處 自動換行

Crystal Reports 2008
有一欄位 列印報表輸出值
C00001.C00002,c00003,C00004,C00005
請問可以在 Crystal Reports 設定
讓有逗號處 自動換行 列印報表輸出值
C00001.
C00002,
c00003,
C00004,
C00005

謝謝

https://ithelp.ithome.com.tw/questions/10199217 想辦法把多列資料合併在一欄中
這裡就要把一欄資料列印成多列

這就是人生啊.....
chare168 iT邦新手 5 級 ‧ 2020-07-17 11:33:35 檢舉
水晶報表 Crystal Report 2008 程式 與 Excel 相同嗎?
謝謝
player iT邦大師 1 級 ‧ 2020-07-17 23:47:43 檢舉
自己在報表檔裡寫腳本函數給你的欄位用啊
應該是把 逗點字元換成 ASCII 的13吧?

1 個回答

0
souda
iT邦研究生 2 級 ‧ 2020-07-20 08:03:57
最佳解答

CrystalReport 細目就可以跑回圈了!
你的字串(C00001.C00002,c00003,C00004,C00005)可以再程式處理後再給CrystalReport顯示即可.

看更多先前的回應...收起先前的回應...
chare168 iT邦新手 5 級 ‧ 2020-07-20 10:31:12 檢舉

請問能請教您語法範例嗎?
是在自訂欄位如何下公式
IF 欄位 逗號 THEN
換行
END
謝謝

souda iT邦研究生 2 級 ‧ 2020-07-20 12:54:57 檢舉

你是用甚麼語言?我建議不用CrystalReport是後端(.NET/C#/PHP....)程式做掉後再傳到CrystalReport

souda iT邦研究生 2 級 ‧ 2020-07-20 13:14:57 檢舉

Dim value As String = "C00001,C00002,c00003,C00004,C00005"
Dim delimiter As Char = ","
Dim substrings() As String = value.Split(delimiter)
Dim substring = ""
For Each substring In substrings
Console.WriteLine(substring)
Next

我用VB範例讓你參考把你要的字串分割取出,塞暫存表後再傳到CrystalReport細目就完成了.

chare168 iT邦新手 5 級 ‧ 2020-07-20 13:15:20 檢舉

前端 Genero Studio (鼎新)
傳報表程式(SEP CRYSTAL REPORT 2008)

souda iT邦研究生 2 級 ‧ 2020-07-20 13:22:23 檢舉

喔~~你也是4GL~那應該更簡單!
你C00001,C00002,c00003,C00004,C00005怎麼得到的?

給你參考4js範例!
https://4js.com/online_documentation/fjs-fgl-2.50.02-manual-html/c_fgl_ClassStringTokenizer_create.html
DEFINE tok base.StringTokenizer
-- Using a single pipe delimiter
LET tok = base.StringTokenizer.create("aaa|bbb|ccc","|")
-- Using several delimiters
LET tok = base.StringTokenizer.create("aaa|bbb;ccc+ddd","|+;")

你可以先用小程式是跑看看就知道結果了.

chare168 iT邦新手 5 級 ‧ 2020-07-20 17:43:32 檢舉
  LET l_sql_b_bmd04 =    #2020/07/15 
            "SELECT bmd04 FROM bmd_file",
            " WHERE bmd01='",sr[i].bmb03,"' ",
            "  AND bmd08='",g_bma01,"' ",
            "  AND bmdacti = 'Y' ",
            "  AND bmd02 = '2' ",   #bmd02 值 1 取代 VS 2 替代 VS 3 配方替代
            "ORDER BY bmd03"
           

        PREPARE r001_bmd04 FROM l_sql_b_bmd04
        IF SQLCA.sqlcode THEN
           CALL cl_err('P7:',SQLCA.sqlcode,1)
           EXIT PROGRAM
        END IF
        DECLARE r601_cur7 CURSOR FOR r001_bmd04

        FOREACH r601_cur7 INTO sqlb_bmd04

          IF sr[i].b_bmd04 IS NULL THEN
            LET sr[i].b_bmd04 = sqlb_bmd04
          ELSE
            LET sr[i].b_bmd04 = sr[i].b_bmd04 clipped,',' clipped,sqlb_bmd04
          END IF
        END FOREACH 
        
   PS:
   LET sr[i].b_bmd04 = sr[i].b_bmd04 clipped, ',' clipped,sqlb_bmd04 可能多個值用(多個項次值) , 串接起來的
 
 能否再 , 處改成換行語法
 
 因我是新手 還不太會運用
 謝謝
   
        
chare168 iT邦新手 5 級 ‧ 2020-07-20 17:49:18 檢舉

https://ithelp.ithome.com.tw/upload/images/20200720/20078008sDjlqeR9Rb.jpg

目前如圖 難分辨 所以如果可以在有逗號處換行

souda iT邦研究生 2 級 ‧ 2020-07-20 22:26:46 檢舉

這欄位名多少?

chare168 iT邦新手 5 級 ‧ 2020-07-20 23:11:00 檢舉

抓bmd04欄位值 INTO b_bmd04

souda iT邦研究生 2 級 ‧ 2020-07-21 08:29:15 檢舉

DEFINE tok base.StringTokenizer

LET tok = base.StringTokenizer.create(sr[i].b_bmd04,",")
WHILE tok.hasMoreTokens()
DISPLAY tok.nextToken()
END WHILE

大概就是這樣放在FOREACH之外 EXECUTE前.
你要把替代料拆開的話這樣在CR報表就會顯示很多項是你要的嗎?
可以私下密喔交換聯絡方式!

chare168 iT邦新手 5 級 ‧ 2020-07-21 11:27:59 檢舉

好像有限制 符號
我原用 ','執行肥反映 改用'\' 結果是 少一個 \ 一樣部會換行

PS:請問如何私下密https://ithelp.ithome.com.tw/upload/images/20200721/20078008CKHcnEAYIV.jpghttps://ithelp.ithome.com.tw/upload/images/20200721/20078008SUXJcqoJ15.jpg

souda iT邦研究生 2 級 ‧ 2020-07-21 13:22:35 檢舉

1.C00001/C00002/c00003/C00004/C00005 測試可以
C00001\C00002\c00003\C00004\C00005 測試可以
2.先SELECT bmd04 FROM bmd_file WHERE bmd01 = 'XXX' 看看資料是如何顯示的!
3.你這支報表代號是多少?
4.我有傳資料給你站內簡訊!!
5.看來\是事後加入的你可以改任意字元 如 ,

我要發表回答

立即登入回答