
error al grabar desde gridview
Publicado por eduardo (3 intervenciones) el 28/06/2014 20:51:56
hola :
tengo una grilla en la cual ingreso datos para actualizar una base sql express
en el momento de hacer la grabacion el msg que sale es :
"la cadena de entrada no tiene el formato correcto"
el codigo que tengo en el click del boton de grabacion es este:
try
{
foreach (DataGridViewRow row in dgvRecaudacion.Rows) // graba en la base de recaudaciones lo de la grilla
{
string lcChofer1, lcChofer2, lcTurno1, lcTurno2, lcPatente1, lcPatente2, lcTipoGasto, lcFecha;
float lnImp1, lnImp2, lnImpGas, lnSaldo;
if (row.Index < CDias)
{
lcFecha = dgvRecaudacion[0, row.Index].Value.ToString();
lcTurno1 = dgvRecaudacion[1, row.Index].Value.ToString();
lcChofer1 = dgvRecaudacion[2, row.Index].Value.ToString();
lcPatente1 = dgvRecaudacion[3, row.Index].Value.ToString();
lnImp1 = Convert.ToInt32(dgvRecaudacion[4, row.Index].Value);
lcTurno2 = dgvRecaudacion[5, row.Index].Value.ToString();
lcChofer2 = dgvRecaudacion[6, row.Index].Value.ToString();
lcPatente2 = dgvRecaudacion[7, row.Index].Value.ToString();
lnImp2 = Convert.ToInt32(dgvRecaudacion[8, row.Index].Value);
lcTipoGasto = dgvRecaudacion[10, row.Index].Value.ToString();
lnImpGas = Convert.ToInt32(dgvRecaudacion[9, row.Index].Value);
lnSaldo = Convert.ToInt32(dgvRecaudacion[11, row.Index].Value);
comando.Connection = conexion;
comando.CommandText = "insert into Recaudacion(fecharec,turno,chofer1,patente1, imprec1, turno2, chofer2, patente2, imprec2, gasto, tipogas )" +
"Values(@vFecha,@vTurno1,@vchofer1,@vPatente1, @vimp1, @vturno2, @vchofer2, @vpatente2, @vimp2, @vgasto,@vtipogas)";
comando.Parameters.Clear();
comando.Parameters.AddWithValue("vFecha", lcFecha);
comando.Parameters.AddWithValue("vTurno1", lcTurno1);
comando.Parameters.AddWithValue("vchofer1", lcChofer1);
comando.Parameters.AddWithValue("vPatente1", lcPatente1);
comando.Parameters.AddWithValue("vimp1", lnImp1);
comando.Parameters.AddWithValue("vturno2", lcTurno2);
comando.Parameters.AddWithValue("vchofer2", lcChofer2);
comando.Parameters.AddWithValue("vpatente2", lcPatente2);
comando.Parameters.AddWithValue("vimp2", lnImp2);
comando.Parameters.AddWithValue("vgasto", lnImpGas);
comando.Parameters.AddWithValue("vtipogas", lcTipoGasto);
int NFilas = comando.ExecuteNonQuery();
if (NFilas <= 0)
{
llHuboErrores = true;
}
El problema es con los datos numericos del tipo float cuando pongo decimales
si pongo 12.35 o 12,35 ( usando coma o punto de separador decimal ) me tira el error mencionado antes .
en la base sql , estos campos los tengo definidos del tipo float , asi que no entiendo porque me da este error. cuando las variables que uso para el insert son del mismo tipo .
}
.gracias
tengo una grilla en la cual ingreso datos para actualizar una base sql express
en el momento de hacer la grabacion el msg que sale es :
"la cadena de entrada no tiene el formato correcto"
el codigo que tengo en el click del boton de grabacion es este:
try
{
foreach (DataGridViewRow row in dgvRecaudacion.Rows) // graba en la base de recaudaciones lo de la grilla
{
string lcChofer1, lcChofer2, lcTurno1, lcTurno2, lcPatente1, lcPatente2, lcTipoGasto, lcFecha;
float lnImp1, lnImp2, lnImpGas, lnSaldo;
if (row.Index < CDias)
{
lcFecha = dgvRecaudacion[0, row.Index].Value.ToString();
lcTurno1 = dgvRecaudacion[1, row.Index].Value.ToString();
lcChofer1 = dgvRecaudacion[2, row.Index].Value.ToString();
lcPatente1 = dgvRecaudacion[3, row.Index].Value.ToString();
lnImp1 = Convert.ToInt32(dgvRecaudacion[4, row.Index].Value);
lcTurno2 = dgvRecaudacion[5, row.Index].Value.ToString();
lcChofer2 = dgvRecaudacion[6, row.Index].Value.ToString();
lcPatente2 = dgvRecaudacion[7, row.Index].Value.ToString();
lnImp2 = Convert.ToInt32(dgvRecaudacion[8, row.Index].Value);
lcTipoGasto = dgvRecaudacion[10, row.Index].Value.ToString();
lnImpGas = Convert.ToInt32(dgvRecaudacion[9, row.Index].Value);
lnSaldo = Convert.ToInt32(dgvRecaudacion[11, row.Index].Value);
comando.Connection = conexion;
comando.CommandText = "insert into Recaudacion(fecharec,turno,chofer1,patente1, imprec1, turno2, chofer2, patente2, imprec2, gasto, tipogas )" +
"Values(@vFecha,@vTurno1,@vchofer1,@vPatente1, @vimp1, @vturno2, @vchofer2, @vpatente2, @vimp2, @vgasto,@vtipogas)";
comando.Parameters.Clear();
comando.Parameters.AddWithValue("vFecha", lcFecha);
comando.Parameters.AddWithValue("vTurno1", lcTurno1);
comando.Parameters.AddWithValue("vchofer1", lcChofer1);
comando.Parameters.AddWithValue("vPatente1", lcPatente1);
comando.Parameters.AddWithValue("vimp1", lnImp1);
comando.Parameters.AddWithValue("vturno2", lcTurno2);
comando.Parameters.AddWithValue("vchofer2", lcChofer2);
comando.Parameters.AddWithValue("vpatente2", lcPatente2);
comando.Parameters.AddWithValue("vimp2", lnImp2);
comando.Parameters.AddWithValue("vgasto", lnImpGas);
comando.Parameters.AddWithValue("vtipogas", lcTipoGasto);
int NFilas = comando.ExecuteNonQuery();
if (NFilas <= 0)
{
llHuboErrores = true;
}
El problema es con los datos numericos del tipo float cuando pongo decimales
si pongo 12.35 o 12,35 ( usando coma o punto de separador decimal ) me tira el error mencionado antes .
en la base sql , estos campos los tengo definidos del tipo float , asi que no entiendo porque me da este error. cuando las variables que uso para el insert son del mismo tipo .
}
.gracias
Valora esta pregunta


0