Проблема с входной строкой - PullRequest
0 голосов
/ 11 июля 2020

Я программирую на ASP. NET MVC, используя C#, и получаю эту ошибку:

Входная строка неправильно отформатирована

Я подтвердил в базе данных, и это нормально. Итак, я хотел бы знать, видите ли вы ошибку. Я хочу уточнить, что и dni, и dnidos имеют в базе данных Float. Но по какой-то неизвестной причине он не работает в коде.

Класс:

public double dniDos { get; set; }

public Solicitud(double dni, string codigo, decimal? monto, string soli,
            DateTime fechaSol, double? valnom, string desc,
            string apellido,
            string nombre,
            string domicilio, string numero,
            string piso, string dpto, string mono, string barrio,
            string zona, string localidad, string provincia,
            int? cp, string tipoDni, string fechaNac, string ocupacion,
            string tel, string cel,
            string email,
            string estadoCivil, string observaciones, 
            string nomdos, double dniDos, 
            string codagencia, string codCobrador, string cobdom,
            string ase, int cuo)
            {
            this.DniNumero = dni;
            this.Codigo = codigo;
            this.Monto = monto;
            this.Solicitudes = soli;
            this.fechaSol = fechaSol;
            this.ValNom = valnom;
            this.DescPlanActual = desc;
            this.Apellido = apellido;
            this.Nombre = nombre;
            this.Domicilio = domicilio;
            this.Numero = numero;
            this.Piso = piso;
            this.Dpto = dpto;
            this.Mono = mono;
            this.Barrio = barrio;
            this.acidzona = zona;
            this.Localidad = localidad;
            this.Provincia = provincia;
            this.CodigoPostal = cp;
            this.DniTipo = tipoDni;
            this.fechaNac=fechaNac;
            this.ocupacion = ocupacion;
            this.Telefono = tel;
            this.Celular = cel;
            this.email=email;
            this.estadoCivil=estadoCivil;
            this.observaciones = observaciones;
            this.nomDos = nomdos;
            this.dniDos = dniDos;
            this.agenciaCodigo = codagencia;
            this.codCobrador = codCobrador;
            this.cobDomicilio = cobdom;
            this.asesor = ase;
            this.cantCuo = cuo;
        }

SQL Подключение:

public List<Solicitud> cargarDatosPDF(string sol)
        {
            List<Solicitud> salida = new List<Solicitud>();
            string con = "Data Source = dasdasd; Initial Catalog = ProvidusWeb; Persist Security Info = True; User ID = id; Password = pass";
            using (SqlConnection conexion = new SqlConnection(con))
            {
                conexion.Open();
                string sql = "SELECT DniNumero, codigo, monto, solicitud, " +
                    "FechaSolicitud, valnom, DescPlanActual, " +
                    "apellido, " +
                    "nombre, " +
                    "domicilio, numero," +
                    "piso, dpto, mono, barrio, " +
                    "acidzona, localidad, provincia, " +
                    "codigopostal, dnitipo, FechaNacimiento, ocupacion, " +
                    "telefono, celular, " + 
                    "mail, " +
                    "EstadoCivil, Observaciones, " +
                    "NomSegundoSus, DNIsegundoSus, " +
                    "AgenCob, CodCobrador, " +
                    "asesor, ancantcuoplan, " +
                    "CobradorDomicilio " +
                    " FROM V_SolicitudWeb " +
                    " WHERE solicitud = @sol ";
                SqlCommand cmd = new SqlCommand(sql, conexion);
                cmd.Parameters.AddWithValue("@sol", sol);
                SqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    try
                    {
                        double dni = Convert.ToDouble(dr["dninumero"]?.ToString());
                        string codigo = dr["codigo"]?.ToString();
                        decimal? monto = Convert.ToDecimal(dr["monto"]?.ToString());
                        string soli = dr["solicitud"]?.ToString();

                        DateTime fechaSolicitud = Convert.ToDateTime(dr["FechaSolicitud"]?.ToString());
                        double? valnom = Convert.ToDouble(dr["valnom"]?.ToString());
                        string desc = dr["descplanactual"]?.ToString();

                        string apellido = dr["apellido"]?.ToString();

                        string nombre = dr["nombre"]?.ToString();

                        string domicilio = dr["domicilio"]?.ToString();
                        string numero = dr["numero"]?.ToString();

                        string piso = dr["piso"]?.ToString();
                        string dpto = dr["dpto"]?.ToString();
                        string mono = dr["mono"]?.ToString();
                        string barrio = dr["barrio"]?.ToString();

                        string zona = dr["acidzona"]?.ToString();
                        string localidad = dr["localidad"]?.ToString();
                        string provincia = dr["provincia"]?.ToString();

                        int? cp = Convert.ToInt32(dr["codigopostal"]?.ToString());
                        string dnitipo = dr["dnitipo"]?.ToString();
                        string fechaNac = dr["FechaNacimiento"]?.ToString();
                        string ocupacion = dr["ocupacion"]?.ToString();

                        string tel = dr["telefono"]?.ToString();
                        string cel = dr["celular"]?.ToString();
                        
                        string email = dr["Mail"]?.ToString();

                        string estadoCivil = dr["EstadoCivil"]?.ToString();
                        if (estadoCivil == "C") 
                        {
                            estadoCivil = "Casado";
                        } else if (estadoCivil == "S")
                        {
                            estadoCivil = "Soltero";
                        }
                        else if (estadoCivil == "V")
                        {
                            estadoCivil = "Viudo";
                        }
                        else if (estadoCivil == "D")
                        {
                            estadoCivil = "Divorciado";
                        }

                        string observaciones = dr["Observaciones"]?.ToString();

                        string nomDos = dr["NomSegundoSus"]?.ToString();
                        double dniDos = Convert.ToDouble(dr["DNIsegundoSus"]?.ToString());

                        string codAgencia = dr["AgenCob"]?.ToString();
                        string codCobrador = dr["CodCobrador"]?.ToString();
                        string cobDom = dr["CobradorDomicilio"]?.ToString();

                        string ase = dr["asesor"]?.ToString();

                        int cantidadCuotas = Convert.ToInt32(dr["ancantcuoplan"]?.ToString());
                        
                        Solicitud p = new Solicitud(dni, codigo,monto, soli,
                            fechaSolicitud, valnom, desc, 
                            apellido,
                            nombre,
                            domicilio,numero,
                            piso, dpto,mono,barrio,
                            zona,localidad,provincia,
                            cp,dnitipo, fechaNac, ocupacion,
                            tel,cel,
                            email, 
                            estadoCivil, observaciones, 
                            nomDos, dniDos, 
                            codAgencia, codCobrador, codCobrador, 
                            ase, cantidadCuotas);
                        salida.Add(p);
                    }
                    catch (SqlException ex)
                    {
                        
                        throw ex;
                    }
                }
                conexion.Close();
                return salida;
            }
        }

Ошибка возникает в этой строке кода:

double dniDos = Convert.ToDouble(dr["DNIsegundoSus"]?.ToString());

введите описание изображения здесь

1 Ответ

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

Он пытается преобразовать что-то, что вызывает исключение FormatException. Если вы можете это сделать, сделайте что-то вроде этого

ISNULL(dr[DNIsegundoSus], 0) as 'DNIsegundoSus'

в вашем SELECT. Если вы не можете этого сделать и вам нужно показать значение NULL, вы можете вернуть его в виде строки и позволить контроллеру определить передачу 'NULL, blank,' 'и т.д. c в представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...