2013-11-28 3 views
-1

Вот мой код, я пытаюсь отобразить умножение Rate * Supply значений столбцов и присваиваем его Amount столбца в виде сетки данных:Как выполнить умножение на два столбца для представления datagrid и присвоить его в третьем столбце?

try 
{ 
    Query = "Select id,Code,Description,Rate,Cust_Id,Supply,Empty,Amount,Received from Items "; 
    adap = new SQLiteDataAdapter(Query, GlobalVars.conn); 
    ds = new DataSet(); 
    adap.Fill(ds, "Items"); 
    dtgVOuchers.DataSource = ds.Tables[0]; 

    ds.Tables[0].Columns["Amount"].DefaultValue = (ds.Tables[0].Columns["Rate"].DefaultValue) * (ds.Tables[0].Columns["Supply"].DefaultValue); //error 

    //dtgVOuchers.Rows.Clear(); 
    ds.Tables[0].Clear(); 
    dtgVOuchers.Refresh(); 
} 

Кто-нибудь знает, как я могу выполнить эту функцию в виде сетки данных? , .Пожалуйста, помогите мне исправить этот код. Благодаря

+0

Примечание: я хочу умножить код не в запросе. Спасибо – user3012262

ответ

0
  foreach (DataGridViewRow row in dtgVOuchers.Rows) 
      { 
       row.Cells[dtgVOuchers.Columns["Amount"].Index].Value = (Convert.ToDouble(row.Cells[dtgVOuchers.Columns["Rate"].Index].Value) * Convert.ToDouble(row.Cells[dtgVOuchers.Columns["Supply"].Index].Value)); 

      } 
0

просто использовать запрос

Select id,Code,Description,Rate,Cust_Id,Supply,Empty,isnull(Rate,0)*isnull(Supply,0) as [Amount],Received from Items 
+0

SQL даже не был помечен этим, так что вы можете пересмотреть свой ответ –

+0

yah я знаю, но пользователь не упомянул о том, что он хочет умножить код вместо этого это можно сделать легко в запросе. –

+0

Ошибка: SQLiteManager: Вероятная ошибка синтаксиса SQL: выберите id, Code, Description, Rate, Cust_Id, Supply, Empty, isnull (Rate, 0) * isnull (Supply, 0) as [Amount], Получено с элементов [near "isnull ": синтаксическая ошибка] Имя исключений: NS_ERROR_FAILURE Сообщение об исключении: код возврата компонента: 0x80004005 (NS_ERROR_FAILURE) [mozIStorageConnection.createStatement] – user3012262

0
DataTable myDataTable = new DataTable(); 

     DataColumn quantityColumn = new DataColumn("Quantity"); 
     DataColumn rateColumn = new DataColumn("Rate"); 
     DataColumn priceColumn = new DataColumn ("Price"); 

     quantityColumn.DataType = typeof(int); 
     rateColumn.DataType = typeof(int); 

     myDataTable.Columns.Add(quantityColumn); 
     myDataTable.Columns.Add(rateColumn); 
     myDataTable.Columns.Add(priceColumn); 

     //Set the Expression here 
     priceColumn.Expression = "Quantity * Rate"; 
+0

Как я не добавляю столбец в таблице данных. Поэтому, пожалуйста, скажите мне, как писать код для этого сценария. Здесь я пытаюсь как ваш код, но он дает ошибку: ds.Tables [0] .Columns ["Amount"] .Expression = (ds.Tables [0] .Columns ["Rate"]. Expression) * (ds.Tables [0] .Columns ["Supply"]. Expression); – user3012262

0

Используйте ниже code..run петлю, чтобы обновить столбец Сумма всех строк

Примечание: Хотя этот метод не является предпочтительным, как это Эффективность результатов. Итак, сделайте это вычисление в sql-запросе. Я не понимаю причину, по которой вы не выполняете munltiplication в запросе SQL.

foreach (DataRow row in ds.Tables[0].Rows) 
     { 
      row["Amount"]= Convert.ToDecimal(row["Rate"])* Convert.ToDecimal(row["Supply"]); 
      ds.Tables[0].AcceptChanges();   
     } 
    dtgVOuchers.DataSource = ds.Tables[0]; 
    dtgVOuchers.Refresh(); 
+0

Ошибка: он дает недопустимое исключение листинга .... Объект нельзя отбрасывать из DBNull в другие типы ..........., пожалуйста, удалите эту ошибку. – user3012262

+0

Отредактировав ответ для вас. Позвольте мне знать в случае возникновения каких-либо проблем. – user2859242