2012-07-30 56 views
0

我是使用水晶報表和c#創建報表的新手。我創建了一個C#程序,顯示客戶的津貼。我現在唯一的問題是,一個字段不顯示我想要的。我在我的sql中有一個'varchar'數據類型的表,因爲我想讓它顯示一個帶有文本的數字。我的問題是,當值有一千個分隔符時,它不會輸入逗號。我想要的是顯示我的價值爲25,000 /天而不是25000 /天。這可能嗎?我應該使用哪種數據類型?錢+字符的SQL數據類型

+0

你有沒有考慮單位的單獨列?一個'VarChar'或者更好的是一個id到一個查找表中。這將增加額外的數據,例如計算中使用的因素,如「星期」中的天數。 – HABO 2012-07-30 03:30:47

回答

2

在SQL Server中沒有支持您的需求的數據類型。

更好的方法是將decimal用於您的數字,併爲您的文本部分使用單獨的列,即/day。這將幫助您在小數域上運行需要平均值,最小值和最大值的查詢。稍後,您可以使用C#格式化您的報告。

但是,如果你不能改變數據庫,那麼你可以根據字符「/」在c#中分割字符串,然後你可以使用ToString()來用逗號來格式化數字。東西上下面的行:

string str = "25000/day"; 
    string[] tempArray = str.Split('/'); 
    double number = 0; 
    if(double.TryParse(tempArray[0],out number)) 
    { 
     Console.WriteLine("Invalid Number"); 
    } 
    Console.WriteLine(number.ToString("###,###.#######") + "/" + tempArray[1]); 
0

廣東話你它存儲爲小數並做格式化,當你顯示它,使用ToString

string display = value.ToString("N") + "/day"; 

存儲只是小數將採取更小的空間,你也可以在球場上很容易以後如果做計算您需要

0

嘗試使用的String.format()方法來進行格式化。

string disp = String.Format("{ 0:C}", Convert.ToInt32(value.split(@"/")[0])) + @"/" + value.split(@"/")[1]; 

其中值是需要顯示該值(即, 「25000 /天」)

HTH。