2017-05-16 80 views
0

我有一個包含數字和字母像這樣的SQL Server數據庫的字段:分割字符串與水晶數字和字母報告

名稱surname1 surname2 3333 1T NP

領域是NCHAR數據類型

我需要在字段中提取名稱surname1和surname2,並在報告的其他字段中提取3333。

我用這個代碼

Whileprintingrecords; 
stringvar array Names := split({Table.Field}," "); 

If ubound(Names) >=3 then 
Names [1] + " " +Names [2] +" " + Names [3]; 

但只有名字和姓氏像作品「名surname1 surname2」

的問題是,這個名字可以是「何塞·路易斯·」和姓1或surname2「德拉貝拉「

如何在查找數字時拆分字段?

謝謝!

+0

這可能幫助https://kb.blackbaud.com/articles/Article/51212 – Hexxx

+0

如果你的最後兩場不必須在他們的文字空間,從尾部開始計數到現場 –

回答

0

如果數據字段是一致的&可以保證最後的三個指數都保留...... 正好連接,你知道會是名稱的一部分,surname1,& surname2(例如達到的數字索引的索引)

WhilePrintingRecords; 

Local StringVar Array Names := SPLIT({Table.Field}, " "); 
Local StringVar Name := ""; 

Local NumberVar index := 0; 
Local NumberVar limit := UBOUND(Names)-3; 

For index := 1 To limit Do(
    Name := Name & Names[index] & IIF(index = limit, "", " "); 
); 

Name 
+0

該代碼拋出一個警告: 「沒有太多參數已傳遞給此函數」 – Victor

+0

您可以說明whi ch函數會拋出這個錯誤嗎? –

+0

我不行。 Crystal報告只會拋出該消息並在最後標記「Next」。 – Victor