Como hacer adición de dos columnas de datos para otra columna en la que esos dos columnas son del tipo de cuerda?

StackOverflow https://stackoverflow.com/questions/2786771

Pregunta

Tengo tabla de datos y hay dos columnas, que es el tipo de cuerda y quiero hacer además de que las dos columnas de datos para otra columna cómo puedo hacer eso?

Mi nombre de la columna contiene un carácter especial y he utilizado "[" "]" para escapar de carácter especial y mis columnas son el tipo de decimal estoy haciendo

 TableExtractedFromFile.Columns[TOT BROK(Rs)].Expression = 
                "'"+"["+SER TAX(Rs)+"]"+"'+'"+"["+STT(Rs)+"]"+"'";

Pero La columna TOT BROK (R) contiene el contenation de valores de columnas de impuestos SER (Rs) y STT (Rs) .Pero quiero la suma de los valores de estas dos columnas.

Editar Funciona. Pero si lo hago como que hay tres columnas A, B y C. Ahora bien, si hacer que table.columns["A"].expression = "A+B+C"; entonces da error como No se puede conjunto de propiedades de expresión debido a la referencia circular en la expresión. a continuación, ¿cuál es la solución de ese ?

¿Fue útil?

Solución

Utilice esta:

dt.Columns.Add("fullname", typeof(string));
dt.Columns["fullname"].Expression = "lastname + ', ' + firstname";

Para la adición del valor (total, la cantidad y recargos son sus columnas existentes, y son tipo cadena, que necesita para poner función CONVERT en los nombres de columna para que se fundidas a decimal (System.Decimal), si el uso del Sistema int .Int32 o System.Int64, etc):

dt.Columns["Total"].Expression = 
  "CONVERT(Amount,System.Decimal) + CONVERT(Surcharge,System.Decimal)";

[EDIT]

Sólo hazlo en su base de:

    select *, CONVERT(SERTAX(Rs), DECIMAL) 
        + CONVERT(STT(Rs), DECIMAL) AS brokerage 
    from tbl

Si usted tiene el control de su base de datos, modificar el SERTAX y la función STT para que pueda volver decimal / moneda / int, no cadena.

A continuación, en su front-end, haga lo siguiente:

dt.ColumnChanging += (ds, de) =>
{
    if (de.Column.ColumnName == "Rs")
    {
        decimal serTaxResult = (decimal)new SqlCommand("select SERTAX(" + de.ProposedValue + ")").ExecuteScalar();
        decimal sttResult = (decimal)new SqlCommand("select STT(" + de.ProposedValue + ")").ExecuteScalar();

        // if your SERTAX AND STT really return string, use this:                        
        // decimal serTaxResult = decimal.Parse( (string) new SqlCommand("select SERTAX(" + de.ProposedValue + ")").ExecuteScalar() );
        // decimal sttResult = decimal.Parse( (string) new SqlCommand("select STT(" + de.ProposedValue + ")").ExecuteScalar() );


        de.Row["brokerage"] = serTaxResult + sttResult;
    }
};

[EDIT]

Si todos sus columnas son de tipo cadena, que tiene que encerrado cada uno de ellos con sus propios conversos.

.Expression = string.Format("CONVERT({0},System.String)", 

      "CONVERT(" + serviceTaxClmnInCNote  + ", System.Int32)"
      + " + " 
      + "CONVERT(" + STTClmnInCNote + ", System.Int32)"

      );

Sólo cambia el System.Int32 a System.Decimal si el serviceTax y STT son el tipo de dinero.

Otros consejos

extraer los datos de dos columnas del te y llamar a la función de cadena concat. Consulte el siguiente enlace

http://www.1keydata.com/sql/sql-concatenate.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top