Hola a todos.
Tengo un problema al querer actualizar los datos en una tabla temporal.
el caso es que tengo 2 formularios 1 que contiene un datagridview donde se ingresa el modelo, precio, etc de celulares, y al dar doble click en la celda que contiene el nombre del modelo llama a otro formulario donde se ingresan las series y los teléfonos asociados a esa serie, al ingresar por primera vez los datos y grabarlos no hay problema, pero si yo hago doble click en un modelo que contiene series ingresadas me muestra el otro formulario con las series y telefonos cargados en el datagridview, hasta ahi no hay problemas, el problema surge cuando quiero actualizar los datos cargados en el datagrid, si modifico alguno, elimino o agrego otra serie me sale un error. Aquí pego la sección del código que realiza la operación de actualizar:
Private Sub FrmSeries_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
Dim dgv As DataGridView = FrmMov1.DgvModelos
Dim fila As DataGridViewRow
For Each fila In dgv.Rows
If fila.Cells(0).Value = Nothing Then
Exit For
Else
sum = sum + fila.Cells(4).Value
End If
Next
Private Sub CmdAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdAceptar.Click
'Try
If campos_vacios() = True Then Exit Sub
Dim i = DgvSerie.RowCount - 1
If s = True Then
'For i = 0 To DgvSerie.RowCount - 2
'Try
Dim da = New SqlDataAdapter
da.UpdateCommand = New SqlCommand("update #Series set serie=@serie1, telefono=@tel where id_mod=@mod", cn)
Dim prm As New SqlParameter
'Dim ser As String = DgvSerie.Rows(i).Cells(0).Value
Dim ser As String = DgvSerie.Rows(0).Cells(0).Value
Dim tlf As String = Convert.ToString(DgvSerie.Rows(i).Cells(1).Value)
prm = New SqlParameter("@serie1", ser)
prm.SqlDbType = SqlDbType.VarChar
prm.Direction = ParameterDirection.Input
da.UpdateCommand.Parameters.Add(prm)
'If System.Convert.ToString(DgvSerie.Rows(0).Cells(1).Value) = Nothing Then
' prm = New SqlParameter("@tel", DBNull.Value)
' prm.SqlDbType = SqlDbType.VarChar
' prm.Direction = ParameterDirection.Input
' da.UpdateCommand.Parameters.Add(prm)
'Else
prm = New SqlParameter("@tel", tlf)
prm.SqlDbType = SqlDbType.VarChar
prm.Direction = ParameterDirection.Input
da.UpdateCommand.Parameters.Add(prm)
'End If
prm = New SqlParameter("@mod", modelo1)
prm.SqlDbType = SqlDbType.VarChar
prm.Direction = ParameterDirection.Input
da.UpdateCommand.Parameters.Add(prm)
da.UpdateCommand.ExecuteNonQuery()
da = Nothing
'Catch ex As SqlException
' MsgBox(ex.Message)
'End Try
'Next
s = False
Else
grabar()
End If
End Sub
Como ven he comentado parte del código para probar filas específicas del datagrid. He ejecutado el codigo con F8 y en la variable ser veo que si obtiene el valor indicado, pero al momento de ejecutar el update me sale un error "string or binary data would be truncated. The statment has been terminated", he probado pasarle los valores directamente prm con una cadena, y si lo hago así la tabla se actualiza sin problemas, el problema surge cuando extraigo los valores del datagridview. estoy utilizando Visual Studio 2010 con SQL Server 2008 R2.
Agradecería si puderan por favor indicarme cual es el error.