Ver Mensaje Individual
  #4 (permalink)  
Antiguo 17/01/2008, 17:22
Avatar de juanutcm
juanutcm
Usuario no validado
 
Fecha de Ingreso: marzo-2005
Mensajes: 194
Antigüedad: 19 años, 2 meses
Puntos: 0
Re: Como guardar datos de celda de DataGridView a la BD

Bien lo consegui aunque no es una solucion que me convenza mucho pero bueno... despues con mas calma pensare en alguna otra alternativa... el codigo que puse anteriormente funciona si los datos los obtienes de una sola tabla pero en mi caso la consulta involucraba dos tablas con parametros :

Código:
 
"SELECT EVALUACIONES.*, MATERIAS.NumeroSemestre FROM EVALUACIONES, " & _
"MATERIAS WHERE EVALUACIONES.IdMateria = MATERIAS.IdMateria AND " & _
"(EVALUACIONES.Matricula = ?Matricula) AND (MATERIAS.NumeroSemestre = ?NumeroSemestre) " & _
"ORDER BY EVALUACIONES.ClaveMateria"
y al momento de querer actualizar la tabla me marcaba error:

Código:
 
La generación SQL dinámica no es compatible con varias tablas de base. 
y hasta donde tengo entendido lo anterior solo funciona con una tabla y lo que hice yo fue obtener el dato de la celda y despues realizar la consulta para guardar y actualizar el dato...

Código:

Case 9 'Numero de columna o campo "Evalua1"
If (Me.dgdEvaluaciones.CurrentCell.Value.ToString.ToUpper = "NP") Or (Me.dgdEvaluaciones.CurrentCell.Value.ToString.Length = 0) Then'Validar y cnvertir los datos requeridos del campo
Me.dgdEvaluaciones.CurrentCell.Value = Me.dgdEvaluaciones.CurrentCell.Value.ToString.ToUpper 'Asginar contenido al campo 
Me.myCommand.Parameters.Clear()
Me.myCommand.Connection.Close()
Me.myCommand.Connection = cnnServidorMysql
Me.myCommand.CommandText = mdlConsultasPublicas.ObtenerCadenaActualizarEvaluacion1Evaluaciones
Me.myCommand.Parameters.Add("?Evalua1", MySqlDbType.VarChar)
Me.myCommand.Parameters.Add("?IdEvaluaciones", MySqlDbType.Int32)
Me.myCommand.Parameters("?Evalua1").Value = Me.dgdEvaluaciones.CurrentCell.Value.ToString.ToUpper
Me.myCommand.Parameters("?IdEvaluaciones").Value = XmlConvert.ToInt32(Me.dgdEvaluaciones.CurrentRow.Cells(0).Value.ToString)
 
Me.myCommand.Connection.Open()
Me.myCommand.ExecuteReader()
Me.myCommand.Connection.Close()
Else
Try
datoEntero = Me.dgdEvaluaciones.CurrentCell.Value 'Asignar contenido a la variable
datoEntero = XmlConvert.ToInt32(datoEntero) 'Convertir dato en Entero
If ((datoEntero >= 0) And (datoEntero <= 10)) Then'Validar el la variable correspondiente
Me.dgdEvaluaciones.CurrentCell.Value = Me.dgdEvaluaciones.CurrentCell.Value.ToString.ToUpper 'Asginar contenido al campo 
Me.myCommand.Parameters.Clear()
Me.myCommand.Connection.Close()
Me.myCommand.Connection = cnnServidorMysql
Me.myCommand.CommandText = mdlConsultasPublicas.ObtenerCadenaActualizarEvaluacion1Evaluaciones
Me.myCommand.Parameters.Add("?Evalua1", MySqlDbType.VarChar)
Me.myCommand.Parameters.Add("?IdEvaluaciones", MySqlDbType.Int32)
Me.myCommand.Parameters("?Evalua1").Value = Me.dgdEvaluaciones.CurrentCell.Value
Me.myCommand.Parameters("?IdEvaluaciones").Value = XmlConvert.ToInt32(Me.dgdEvaluaciones.CurrentRow.Cells(0).Value.ToString)
 
Me.myCommand.Connection.Open()
Me.myCommand.ExecuteReader()
Me.myCommand.Connection.Close()
Else
MsgBox(mdlMensajesPublicos.ObtenerMensajeAplicacion("ER082"), MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, mdlMensajesPublicos.ObtenerMensajeAplicacion("ER000")) 'Obtener el mensaje y enviar mensaje
Me.dgdEvaluaciones.CancelEdit() 'Cancelar la modificacion del dato de la celda seleccionada
EndIf'Fin de validar la variable correspondiente
Catch ex As Exception
MsgBox(mdlMensajesPublicos.ObtenerMensajeAplicacion("ER082"), MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, mdlMensajesPublicos.ObtenerMensajeAplicacion("ER000")) 'Obtener el mensaje y enviar mensaje
Me.dgdEvaluaciones.CancelEdit() 'Cancelar la modificacion del dato de la celda seleccionada
EndTry
EndIf'Fin de validar y convertir los campos requeridos
 
menciono tambien que tenia que validar que tipo de dato se insertaba ...

espero esto sirva a alguien... hasta pronto