2016-06-25 22 views
1
SqlCommand cm = new SqlCommand(@"Select StockID,FoodId,StockName,StockDate, 
           StockNum,UnID,StockMin,StockCalulate 
           from StockCalutale", Conn); 
try 
{ 
    int currency = int.Parse(txtAmount.Text); 
    SqlDataReader dr = cm.ExecuteReader(); 
    while (dr.Read()) 
    { 
     ListViewItem item = new ListViewItem(dr["StockID"].ToString()); 
     item.SubItems.Add(dr["FoodId"].ToString()); 
     item.SubItems.Add(dr["StockName"].ToString()); 
     item.SubItems.Add(dr["StockDate"].ToString()); 
     item.SubItems.Add(dr["StockNum"].ToString()); 
     item.SubItems.Add(dr["UnID"].ToString()); 
     item.SubItems.Add(dr["StockMin"].ToString()); 
     item.SubItems.Add(dr["StockCalulate"].ToString()* txtAmount.Text); 

     listView1.Items.Add(item); 
    } 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message, "EROR"); 
} 
+3

文字列に別の文字列を掛けることはできません。 2つの文字列に数字が含まれていても意味がありません。 C#にはVB.NETのようなこのような自動変換はありません(幸運にも)両方の文字列を数値に変換してから乗算する必要があります。 1つはすでに変換されています。 – Steve

+0

_exact_の問題は何ですか?あなたはどこにいらっしゃいましたか? –

答えて

1

を計算リストビュー、カラムに選択します。 2つの文字列に数字が含まれていても意味をなさない。 C#にはVB.NETのようなこのような自動変換はありません(幸運にも)両方の文字列を数値に変換してから乗算する必要があります。すでに変換されているのは、例外の準備完了です。です。ところで

SqlCommand cm = new SqlCommand(@"Select StockID,FoodId,StockName,StockDate, 
           StockNum,UnID,StockMin,StockCalulate 
           from StockCalutale", Conn); 
try 
{ 
    int currency = 0; 

    // When input comes from the user don't trust its ability with the keyboard 
    // use a foolproof way to check its input.... 
    if(!Int32.TryParse(txtAmount.Text, out currency)) 
    { 
     MessageBox.Show("Invalid currency value!"); 
     return; 
    } 

    SqlDataReader dr = cm.ExecuteReader(); 
    while (dr.Read()) 
    { 
     // Also this line is risky. I assume that you never have null values 
     // in this StockCalulate field otherwise you need to check with dr.IsDbNull 
     int value = Convert.ToInt32(dr["StockCalulate"].ToString()); 
     int newStock = value * currency; 

     ListViewItem item = new ListViewItem(dr["StockID"].ToString()); 
     item.SubItems.Add(dr["FoodId"].ToString()); 
     item.SubItems.Add(dr["StockName"].ToString()); 
     item.SubItems.Add(dr["StockDate"].ToString()); 
     item.SubItems.Add(dr["StockNum"].ToString()); 
     item.SubItems.Add(dr["UnID"].ToString()); 
     item.SubItems.Add(dr["StockMin"].ToString()); 

     item.SubItems.Add(newStock.ToString()); 
     listView1.Items.Add(item); 
    } 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message, "EROR"); 
} 

あなたは小数点以下を維持する必要がある場合、私はここで使用するデータ型についてはよく分からないですし、小数点データ型と同等の変換方法(decimal.TryParseとConvert.ToDecimal)を使用することを検討してください。

+0

私は試してみましたが、item.SubItems.Add(newStock)でエラーが発生しました。ラインは赤色です –

+0

ToString()を追加することを忘れました – Steve

+0

ありがとうございました! –

関連する問題

 関連する問題