Не уверен, как это исправить, выполняя некоторые математические операции с проверкой ошибок и обновляя мое новое значение в tsql - PullRequest
0 голосов
/ 13 июля 2011
        if (freightCostTotal == 0)
        {
            freightCount = 1;
            dataGridView1.Rows[i].Cells[iFreightCount].Value = "1";
            if (freightCostDefinedTotal != 0)
            {
                freightCostTotal = Convert.ToDecimal(pcsg.Freight_CountColumn.Table.Rows[0]["Fixed Freight"].ToString());
            }
            else
            {
                if (!String.IsNullOrEmpty(dataGridView1.Rows[i].Cells[iCost_Prior_ReCompute].Value.ToString()))
                    Cost_Prior_ReCompute = Convert.ToDecimal(dataGridView1.Rows[i].Cells[iCost_Prior_ReCompute].Value.ToString());

                //freightCostPercentTotal = 0.05M;
                //decimal costFreight = Convert.ToDecimal(pcsg.Freight_CountColumn.Table.Rows[0]["Cost"].ToString());
                freightCostTotal = (Cost_Prior_ReCompute * freight_perc_);
            }
            dataGridView1.Rows[i].Cells[iFreight].Value = String.Format("{0:0.00}", freightCostTotal);
        }

Следующее не работает. Это моя первая попытка сделать sql math

select freightCostTotal, Cost_Prior_ReCompute],freight_perc_, FixedFreight,
            if (freightCostTotal == 0) then freightCount = 1;
                if (freightCostDefinedTotal != 0) then freightCostDefinedTotal = FixedFreight else
                 set  freightCostTotal = (Cost_Prior_ReCompute * freight_perc_);
from VF_CasINV_Cost

Спасибо

Jerry

1 Ответ

1 голос
/ 13 июля 2011

Не уверен, что именно вы ищете, но вот начало ниже.К вашему сведению - ваше условие для Cost_Prior_Recompute требует значения по умолчанию / else - я просто поставил '?'пока там, так как я не могу сказать, что это должно быть.

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

Так что вы бы выбрали это - имея в виду (я полагаю, прочитав ваш код), вы ищете данные, где frieghtCostTotalеще не был обновлен в базе данных.

SELECT
   1 as freightCount,
   CASE WHEN freightCostDefinedTotal <> 0
      THEN FixedFreight
      ELSE ISNULL(Cost_Prior_ReCompute,?) * freight_perc_
      END as freigntCostTotal,
   Cost_Prior_ReCompute,
   freight_perc_,
   FixedFreight
FROM
   VF_CasINV_Cost
WHERE
   freightCostTotal = 0

В качестве альтернативы, вы можете просто вытащить данные, как это, но они получат все данные, а не только данные freightCostTotal = 0.

SELECT
   1 as freightCount,
   freigntCostTotal,
   Cost_Prior_ReCompute,
   freight_perc_,
   FixedFreight
FROM
   VF_CasINV_Cost

Вот как бы вы обновились.Кстати, если вы новичок в обновлении с помощью SQL, я настоятельно рекомендую вам сначала проверить это на некоторых непроизводственных данных.Или, по крайней мере, сначала сделайте резервную копию своего стола.

UPDATE VF_CasINV_Cost
SET freightCostTotal = CASE WHEN freightCostDefinedTotal <> 0
                          THEN FixedFreight
                          ELSE ISNULL(Cost_Prior_ReCompute,?) * freight_perc_
                          END
WHERE freightCostTotal = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...