• Lunes 18 de Noviembre de 2024, 00:49

Autor Tema:  Un caso con int.Parse  (Leído 2206 veces)

jotae

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Un caso con int.Parse
« en: Domingo 20 de Febrero de 2011, 16:58 »
0
Mi codigo: (Visual Studio C# 2010) Access DB

Código: C#
  1.  
  2. private void tbPagos_Click(object sender, EventArgs e)
  3. {
  4.   iPosact = dgView.CurrentRow.Index;
  5.   pId = tc.Rows[iPosact]["id"].ToString();
  6.   pNombre = tc.Rows[iPosact]["nombre"].ToString();
  7.   int pSaldo = int.Parse(tc.Rows[iPosact]["saldo"].ToString()); //error en esta línea.
  8.   if (pSaldo == 0)
  9.     {
  10.      res = MessageBox.Show("No tiene saldos pendientes. ¿Desea anular un pago?", "Anular Pago", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
  11.      if (res == DialogResult.No)
  12.         {
  13.           cargarDataGrid();
  14.           return;
  15.         }
  16.         Form pagos = new pagos();
  17.         pagos.ShowDialog();
  18.    }
  19.  }
  20.  

El problema:

saldo es un campo numérico en la tabla. Si pSaldo es > 0, todo anda bien pero si el valor de pSaldo es 0 (cero), genera este error:

No se controló FormatException
La cadena de entrada no tiene el formato correcto.

gabio2

  • Miembro MUY activo
  • ***
  • Mensajes: 402
  • Nacionalidad: mx
    • Ver Perfil
Re: Un caso con int.Parse
« Respuesta #1 en: Lunes 21 de Febrero de 2011, 04:13 »
0
Para empezar el int.Parse() NO funciona si tu decimal no es entero, es decir, antes de convertir tienes que redondearlo  puedes usar el Math.Round() para hacer eso, otro error típico, es cuando tu "saldo" es null, estás 100% seguro que te regresa algún valor?.. checalo guardando el valor en una variable de tipo Object y con tus puntos de interrupción.. ejemplo:

Código: C#
  1.  
  2. Object _obj = tc.Rows[iPosact]["saldo"]; //No estoy seguro pero creo que debe tener una propiedad .Value, ejemplo: tc.Rows[iPosact]["saldo"].Value checalo..
  3.  
  4.  

saludos espero te haya servido.. te recomiendo leer este link http://msdn.microsoft.com/es-es/library ... 95%29.aspx
@gabio87

jotae

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Un caso con int.Parse
« Respuesta #2 en: Lunes 21 de Febrero de 2011, 04:41 »
0
Gracias. De acuerdo a esto me puse a investigar y efectivamente el campo saldo en una tabla Access estaba definido como MONEY. Lo cambié a NUMBER y... voilá. Todo OK. Gracias gabio.  :good: