Como hacer adición de dos columnas de datos para otra columna en la que esos dos columnas son del tipo de cuerda?
-
03-10-2019 - |
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 ?
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