Ver Mensaje Individual
  #13 (permalink)  
Antiguo 08/01/2011, 16:41
cuervo_odin
 
Fecha de Ingreso: enero-2011
Ubicación: Concepción
Mensajes: 26
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: guardar gridview en base de datos

hola a todos, que tal, aqui estoy nuevamente requiriendo de vuestra guía y conocimientos, estoy casi en un 100% con este asunto de guardar el grid en la base de datos, lo unico esq me da un error de conversión de tipo de dato al momento de guardar en la base de datos, se que lña logica que uso esta bien porq la use con una aplicación similar y funciono, el problema que en ese caso no use el tipo de dato q me da problema, bueno se los explico para que me entiendan mejor:

tengo un archivo excel con un grupo de datos entre los cuales tengo hora inicio y hora fin los cuales obviamente solo tienen una hora x, el excel lo cargo a un gridview desde una pagina web, hasta hay ningun problema ,me lo carga perfectamente pero el problema que los campos que mensione anteriormente ( inicio y fin ) me aparesen con fecha y hora (ej: 30-12-1899 8:00:00) y yo solo necesito la hora y al momento de guardar este gridview me da el siguiente error:

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value. The statement has been terminated.

se que el problema esta al momento de hacer la conversión de tipo de dato an la base de datos, mi codigo para guardar es el siguiente:

string SqlString = ""; // variable a la que asignaremos la sentencia
ArrayList ListSqlStrings = new ArrayList(); //arregla donde ingresaremos las sentencias
//recorremos el datagrid como ya sabemos siempre se toma desde cero
for (int i = 0; i < GridView1.Rows.Count; i++)
{
SqlCommand cm = new SqlCommand();
SqlString = "INSERT INTO horarios (nivel,ramo,inicio,fin,profesor,sala,día) VALUES('" + GridView1.Rows[i].Cells[0].Text.ToString() +
"','" + GridView1.Rows[i].Cells[1].Text.ToString() +
"','" + GridView1.Rows[i].Cells[2].Text.ToString() +
"','" + GridView1.Rows[i].Cells[3].Text.ToString() +
"','" + GridView1.Rows[i].Cells[4].Text.ToString() +
"','" + GridView1.Rows[i].Cells[5].Text.ToString() +
"','" + GridView1.Rows[i].Cells[6].Text.ToString() + "')";

ListSqlStrings.Add(SqlString);

intente cambiando el formato antes de guardarlo en la base de datos de la siguiente forma:

SqlParameter nivel = cm.Parameters.Add(GridView1.Rows[i].Cells[0].Text.ToString(), SqlDbType.NChar);
SqlParameter ramo = cm.Parameters.Add(GridView1.Rows[i].Cells[1].Text.ToString(), SqlDbType.NVarChar);
SqlParameter inicio = cm.Parameters.Add(GridView1.Rows[i].Cells[2].Text.ToString(), SqlDbType.Time);
SqlParameter fin = cm.Parameters.Add(GridView1.Rows[i].Cells[3].Text.ToString(), SqlDbType.Time);
SqlParameter profesor = cm.Parameters.Add(GridView1.Rows[i].Cells[4].Text.ToString(), SqlDbType.NVarChar);
SqlParameter sala = cm.Parameters.Add(GridView1.Rows[i].Cells[5].Text.ToString(), SqlDbType.NVarChar);
SqlParameter día = cm.Parameters.Add(GridView1.Rows[i].Cells[6].Text.ToString(), SqlDbType.NVarChar);

pero aun asi me da el mismo error, alguna sugerencia?, se puede cambiar el tipo de dato altiro en exel para que solo pesque la hora y no las fechas o se puede hacer despues al momento de mostrarlo en el gridview, agradesco cualquier aporte, gracias y un saludo de antemano ;D