none
EDITAR DATOS - FUNCIONES RRS feed

  • Pregunta

  • Tengo el siguiente codigo:

    Private Sub editar_Click(sender As Object, e As EventArgs) Handles editar.Click

            Try
                Dim fcn As New funciones
                    If fcn.editar_modem(simmod.Text + "," + seriemod.Text + "," + marcamod.Text + "," + modelomod.Text + "," + destinomod.Text + "," + serviciomod.Text + "," + fechain.Text + "," + responsable.Text + "," + simchip.Text + "," + telmod.Text + "," + estado.Text) Then
                        mensaje.ForeColor = Color.LimeGreen
                    mensaje.Text = "Registro editado correctamente"
                        limpiar()
                        CModems_Load(Nothing, Nothing)
                    Else
                        mensaje.ForeColor = Color.Tomato
                    mensaje.Text = "Error al editar registro"
                    End If

            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub

    y la funcion:

    Public Function editar_modem(datos As String) As Boolean
            Try
                conectado()
                Dim cmd As New SqlCommand
                cmd.Connection = cnn
                Dim spl() As String = datos.Split(",")
                cmd.CommandText = "update Modem " & _
                                  "set SimMod=@SimMod,SerieMod=@SerieMod,MarcaMod=@MarcaMod,ModeloMod=@ModeloMod,Destino=@Destino," & _
                                  "ServicioMod=@ServicioMod,FechaIn=@FechaIn,Responsable=@Responsable,SimChip=@SimChip, " & _
                                  "Telefono=@Telefono,Estado=@Estado"
                cmd.Parameters.AddWithValue("@SimMod", spl(0))
                cmd.Parameters.AddWithValue("@SerieMod", spl(1))
                cmd.Parameters.AddWithValue("@MarcaMod", spl(2))
                cmd.Parameters.AddWithValue("@ModeloMod", spl(3))
                cmd.Parameters.AddWithValue("@Destino", spl(4))
                cmd.Parameters.AddWithValue("@ServicioMod", spl(5))
                cmd.Parameters.AddWithValue("@FechaIn", spl(6))
                cmd.Parameters.AddWithValue("@Responsable", spl(7))
                cmd.Parameters.AddWithValue("@SimChip", spl(8))
                cmd.Parameters.AddWithValue("@Telefono", spl(9))
                cmd.Parameters.AddWithValue("@Estado", spl(10))
                If cmd.ExecuteNonQuery Then
                    Return True
                Else
                    Return False
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
                Return False
            Finally
                desconectado()
            End Try
        End Function

    El problema es que al editar alguna columna un dato este se cambia a todos.

    Primera Imagen: el ejemplo muestro que hare edicion de ese campo agregare esos digitos

     Al dar click sobre editar sale esto. un gran caos todo se iguala como se ve alli que fue una prueba anterior. Ahora con el ejemplo Huawei 99 veran k todo se pone igual y eso sucede con cualquier columna que elija.

       que ha sucedido? porque se da eso solo debe cambiarse la fila no todo

    Rocco

    lunes, 15 de diciembre de 2014 20:44

Todas las respuestas

  • porque asignas los datos de esa forma, definiendo un string y parseandolo con split, eso es terrible

    deberias definir los valores de forma indivisual o sino enviar una clase, algo como ser

    Public Class Modem
    
    	Public Property SimMod As String
    		
    	Public Property SerieMod As String
    		
    
    	'resto propiedades
    
    End Class

    Nota: requieres .net 4 o superior para definir las propiedades de esta forma

    entonces el metodo lo defines

    Public Function editar_modem(datos As Modem) As Boolean

    //resto codigo

                cmd.Parameters.AddWithValue("@SimMod", dato.SimMod)
                cmd.Parameters.AddWithValue("@SerieMod", dato.SerieMod)

    End Function

    como veras trabjas con tipos el codigo y no parseando string

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 15 de diciembre de 2014 23:58
  • No lo marco como respuesta porque aun no me sale.

    Estoy haciendo esto:

    funciones.vb

    Imports System.Data.SqlClient

    Public Class funciones

        Inherits conexion
    Public Property SimMod As String
        Public Property SerieMod As String
        Public Property MarcaMod As String
        Public Property ModeloMod As String
        Public Property Destino As String
        Public Property ServicioMod As String
        Public Property FechaIn As String
        Public Property Responsable As String
        Public Property Telefono As String
        Public Property Estado As String

    Public Function editar_modem(datos As CModems) As Boolean


            Try
                conectado()
                Dim cmd As New SqlCommand
                cmd.Connection = cnn
                'Dim spl() As String = datos.Split(",")
                cmd.CommandText = "update Modem " & _
                                  "set SimMod=@SimMod,SerieMod=@SerieMod,MarcaMod=@MarcaMod,ModeloMod=@ModeloMod,Destino=@Destino," & _
                                  "ServicioMod=@ServicioMod,FechaIn=@FechaIn,Responsable=@Responsable,SimChip=@SimChip, " & _
                                  "Telefono=@Telefono,Estado=@Estado"
                cmd.Parameters.AddWithValue("@SimMod", datos.simmod)
                cmd.Parameters.AddWithValue("@SerieMod", datos.seriemod)
                cmd.Parameters.AddWithValue("@MarcaMod", datos.marcamod)
                cmd.Parameters.AddWithValue("@ModeloMod", datos.modelomod)
                cmd.Parameters.AddWithValue("@Destino", datos.destino)
                cmd.Parameters.AddWithValue("@ServicioMod", datos.serviciomod)
                cmd.Parameters.AddWithValue("@FechaIn", datos.fechain)
                cmd.Parameters.AddWithValue("@Responsable", datos.responsable)
                cmd.Parameters.AddWithValue("@SimChip", datos.simchip)
                cmd.Parameters.AddWithValue("@Telefono", datos.telefono)
                cmd.Parameters.AddWithValue("@Estado", datos.estado)
                If cmd.ExecuteNonQuery Then
                    Return True
                Else
                    Return False
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
                Return False
            Finally
                desconectado()
            End Try
        End Function

    y en el formulario el boton:

     Private Sub editar_Click(sender As Object, e As EventArgs) Handles editar.Click
    Try
                Dim fcn As New funciones
                If fcn.editar_modem(id.Text + "," + responsable.Text + "," + area.Text + "," + marca.Text + "," + modelo.Text + "," + numserie.Text + "," + numprod.Text + "," + año.Text + "," + so.Text + "," + procesador.Text + "," + meram.Text + "," + capachd.Text + "," + estado.Text) Then
                    mensaje.ForeColor = Color.LimeGreen
                    mensaje.Text = "Registro editado correctamente"
                    limpiar()
                    CMantenimiento_Load(Nothing, Nothing)
                Else
                    mensaje.ForeColor = Color.Tomato
                    mensaje.Text = "Error al editar registro"
                End If

            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub

    la otra opcion k tengo tb es:

    //resto

    Dim fcn As New funciones
                    Dim data() As String
                    data = {id.Text, simmod.Text, seriemod.Text,marcamod.Text,modelomod.Text, destino.Text,serviciomod.Text,fechain.Text, responsable.Text,simchip.Text, telefono.Text,estado.Text}
                    If fcn.editar_modem(data) Then

    //resto

    Entonces estoy mal? pork me sale lo mismo.


    Rocco



    • Editado Rocco-PE martes, 23 de diciembre de 2014 16:48 no sale
    martes, 16 de diciembre de 2014 15:36