Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema con int.Parse en C#

Estas en el tema de Problema con int.Parse en C# en el foro de .NET en Foros del Web. Mi codigo: (Visual Studio C# 2010). Access DB @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C#: Ver original private void tbPagos_Click ( object sender , EventArgs e ) { ...
  #1 (permalink)  
Antiguo 20/02/2011, 10:04
 
Fecha de Ingreso: junio-2010
Mensajes: 37
Antigüedad: 13 años, 10 meses
Puntos: 0
Problema con int.Parse en C#

Mi codigo: (Visual Studio C# 2010). Access DB


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

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 en la línea 6:

No se controló FormatException
La cadena de entrada no tiene el formato correcto.
  #2 (permalink)  
Antiguo 20/02/2011, 11:19
Avatar de s00rk  
Fecha de Ingreso: octubre-2010
Ubicación: Mexico
Mensajes: 238
Antigüedad: 13 años, 6 meses
Puntos: 48
Respuesta: Problema con int.Parse en C#

No se el porque pero se me ocurre algo asi en esa parte en ves de
Código C#:
Ver original
  1. int pSaldo = int.Parse(tc.Rows[iPosact]["saldo"].ToString()); //error en esta línea.
Algo como
Código C#:
Ver original
  1. String pS = tc.Rows[iPosact]["saldo"].ToString();
  2. int pSaldo = 0;
  3. if(pS == 0 || pS < 0) {
  4. pSaldo = 0; } else {
  5. pSaldo = int.Parse(tc.Rows[iPosact]["saldo"].ToString());
  6. }

Bueno nose si funcione pero no tengo idea muy bien del porque el error
  #3 (permalink)  
Antiguo 20/02/2011, 14:24
 
Fecha de Ingreso: junio-2010
Mensajes: 37
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con int.Parse en C#

Gracias pero no funciona porque pS es string y si lo convierto a int (para evaluarlo == 0) volvemos a lo mismo. Si el valor es 0 da el error.

Ya encontré el problema. Estamos usando una DB Access y el campo saldo lo definieron como MONEY (MONEDA). Simplemente cambié a NUMERO y todo funciona ok. Gracias de todo modos.

Última edición por jotaeva; 20/02/2011 a las 18:59
  #4 (permalink)  
Antiguo 20/02/2011, 20:06
Avatar de s00rk  
Fecha de Ingreso: octubre-2010
Ubicación: Mexico
Mensajes: 238
Antigüedad: 13 años, 6 meses
Puntos: 48
Respuesta: Problema con int.Parse en C#

o.O, ok hehe no sabia que existiera el tipo de campo Money jeje
Bueno bien men ^^

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:03.