2016-03-29 32 views
0

Crystal Reports sürüm 8'i kullanıyorum ve bir numbervar'ı stringvar'a dönüştürmem gerekiyor. ToText() (tüm büyük harf çeşitlemeleriyle birlikte) ve CStr() (çeşitli büyük harflerle de) denedim ve her seferinde CR bana "Burada bir numara gerekiyor" yazıyor ve imleci diğer blokumun başına taşıyor. Nihayetinde hem NumberVars olarak kaydedilen saat ve dakikaları dizelere çevirmeye çalışıyorum, böylece 8.50 yerine "8h 30m" görüntüleyebiliyorum.Crystal Raporları, sayıyı metne dönüştürüyor

if {Collect2000Log.LogCode} = "0002" then 0 
else 
(
NumberVar OldTime := ((DateDiff("n",{@NextTime},{Collect2000Log.LogWhen})/60)*-1); 

NumberVar Hours; 
NumberVar Minutes; 
StringVar strHours; 
StringVar strMinutes; 
StringVar NewTime; 
//Extract the number of hours 
Hours := Int(OldTime); 
//Get the decimal portion for minutes 
Minutes := Remainder(OldTime, 1) * 100; 
//Divide the minutes by 60 to increase the number of hours 
Hours := Hours + Int(Minutes/60); 
//Get the remainder for the number of minutes left over 
Minutes := Remainder(Minutes, 60); 
//Convert hours & mins to strings 
strHours := ToText(Hours); 
strMinutes := ToText(Minutes): 
NewTime := strHours & "h " & strMinutes & "m"; 
); 

Ve bu formülü eklediğinizde şimdi CR "bitiş) eksik" ve stumped diyor ki: Burada

Bugüne kadar formülü için ne var. Bunu bir kez daha anlayabiliyordum ama şimdi umutlu görünmüyordu.

Herhangi bir yardım çok takdir edilecektir!

cevap

1

Sorun böylece dönüştürmek .. aynı veri türü dönmek gerekir ama başka bloğunun başlangıç ​​at dolayısıyla hata a Number is requiredElse aracılığıyla IF içinden bir sayı ve bir String dönüyor Else bir IF KOLAY ... ve If'un çıkışı, aşağıdaki gibi dizilecek.

if {Collect2000Log.LogCode} = "0002" 
then ToText(0) 
else 
(
NumberVar OldTime := ((DateDiff("n",{@NextTime},{Collect2000Log.LogWhen})/60)*-1); 

NumberVar Hours; 
NumberVar Minutes; 
StringVar strHours; 
StringVar strMinutes; 
StringVar NewTime; 
//Extract the number of hours 
Hours := Int(OldTime); 
//Get the decimal portion for minutes 
Minutes := Remainder(OldTime, 1) * 100; 
//Divide the minutes by 60 to increase the number of hours 
Hours := Hours + Int(Minutes/60); 
//Get the remainder for the number of minutes left over 
Minutes := Remainder(Minutes, 60); 
//Convert hours & mins to strings 
strHours := ToText(Hours); 
strMinutes := ToText(Minutes): 
NewTime := strHours & "h " & strMinutes & "m"; 
); 
+0

Ah, bunun basit bir şey olduğunu düşündüm! Yardımın için çok teşekkür ederim! :) –

İlgili konular