es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Fila de datos “La conversión especificada no es válida” C#

No puedo entender por qué esto no funciona. Recibo el mismo mensaje de error “Cast especificado no válido”. Soy nuevo en C#, por favor sé amable. Falla en la línea if(!((int)WrkRow[“ManualWeight”] == 1 |, etc. He intentado varias variaciones de código, no todas pegadas aquí. ManualWeight es un campo de número en la tabla.

2nd intento:

Si (dt.Rows.Count > 0) {
DataRow WrkRow = dt.Rows [0]; // ds.Tables (0) .Rows (0)
si (mod1.IsTareout == true)
recortar = (string) WrkRow [“Trucker”];
sBarcode = $ “{trim.Trim()} {(string) WrkRow [“TruckNo”]} “;

XRSwatLaserCert rSwatLaserCert = nuevo XRSwatLaserCert();
rSwatLaserCert.DataSource = dt;

ReportPrintTool rpt = nueva ReportPrintTool(rSwatLaserCert);
{
XRBarCode XrBCTareOut = nuevo XRBarCode();
rSwatLaserCert.XrBCTareOut = nuevo XRBarCode
{
Texto = sBarcode
};
if (WrkRow.Field(“ManualWeight”)! = 1 | (int) WrkRow.Field(“ManualWeight”)! = 3)
{
rSwatLaserCert.XrLabelManualGross1.Visible = falso;
rSwatLaserCert.XrLabelManualGross2.Visible = falso;
rSwatLaserCert.XrLabelManualGross3.Visible = falso;
}
}

3er intento:

si (dt.Rows.Count > 0) {
DataRow WrkRow = dt.Rows [0]; // ds.Tables (0) .Rows (0)
si (mod1.IsTareout == true)
recortar = (string) WrkRow [“Trucker”];
sBarcode = $ “{trim.Trim()} {(string) WrkRow [“TruckNo”]} “;

XRSwatLaserCert rSwatLaserCert = nuevo XRSwatLaserCert();
rSwatLaserCert.DataSource = dt;

ReportPrintTool rpt = nueva ReportPrintTool(rSwatLaserCert);
{
XRBarCode XrBCTareOut = nuevo XRBarCode();
rSwatLaserCert.XrBCTareOut = nuevo XRBarCode
{
Texto = sBarcode
};
var manweight = WrkRow.Field(“ManualWeight”);
if (manweight! = 1 | manweight == 3)
{
rSwatLaserCert.XrLabelManualGross1.Visible = falso;
rSwatLaserCert.XrLabelManualGross2.Visible = falso;
rSwatLaserCert.XrLabelManualGross3.Visible = falso;
}
}

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema parece estar relacionado con la conversión del valor del campo “ManualWeight” a un entero. El mensaje de error indica que la conversión no es válida.

    En el primer y segundo intento, el código intenta utilizar el operador “|” en lugar de “||” para evaluar las condiciones en la instrucción if. “|” es un operador OR a nivel de bits, y “||” es un operador OR lógico.

    En el tercer intento, el código utiliza correctamente “||” para el operador OR lógico. Sin embargo, la condición todavía parece ser incorrecta. La condición comprueba si un valor int no es igual a 1 O igual a 3, lo que significa que siempre será verdadero para cualquier int que no sea 1.

    Para solucionar el problema, la condición debe cambiarse para comprobar si el campo “ManualWeight” es igual a 1 o 3, utilizando el operador “==” en ambos casos:

    var manweight = WrkRow.Field<int>("ManualWeight");
    if (manweight != 1 && manweight != 3)
    {
        rSwatLaserCert.XrLabelManualGross1.Visible = false;
        rSwatLaserCert.XrLabelManualGross2.Visible = false;
        rSwatLaserCert.XrLabelManualGross3.Visible = false;
    }
    

    Esto ocultará las etiquetas solo si el valor “ManualWeight” no es ni 1 ni 3.

Comments are closed.