none
error al recuperar los datos despues de ser confirmados en la base de datos RRS feed

  • Pregunta

  • buenas tardes amigos! mi problema es el siguiente no puedo recuperar la fila cargada y confirmada, dice que la fila es de solo lectura, para poder hacerlo debo cerrar y volver a abrir el sql server r2 2008.

    por lo cual me trae problemas en visual basic ya que no genera el nuevo id de la tabla automaticamente.

    supongo que la solucion no es complicada pero la verdad no me quedan neuronas para encontrarla... agradezco de nuevo su ayuda.


    valeria heredia

    miércoles, 12 de abril de 2017 19:56

Respuestas

  • aqui pude resolver el error que me largaba el visual...no se si sera lo mas optimo pero funciono, si a alguno le sirve se los dejo.  Solo le di un valor inicial a todos los string

     Private Sub btnGuardar_Click(sender As System.Object, e As System.EventArgs) Handles btnGuardar.Click

            ' valida que haya registros para poder guardarlos
            If Me.dgvAtletasdeCalle.Rows.Count = 0 Then
                MessageBox.Show("Debe haber registros cargados para poder guardarlos.", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Information)
                btnAgregarAtleta.Focus()
                Return
            End If

            Dim objeto As New CEAtletas_x_Competencia
            Dim objeto2 As New CeResultadoParcial

            '  Try
            For Each rows As DataGridViewRow In Me.dgvAtletasdeCalle.Rows
                objeto.id_competencia = txtCodigoPlanillaCalle.Text
                objeto.id_atleta = rows.Cells(7).Value


                Dim tiempo1 As String = "0"
                objeto2.Tiempo1 = tiempo1

                Dim tiempo2 As String = "0"
                objeto2.Tiempo2 = tiempo2

                Dim tiempo3 As String = "0"
                objeto2.Tiempo3 = tiempo3

                Dim tiempoasignado As String = "0"
                objeto2.mejor_tiempo_calle = tiempoasignado

                Dim tiempo_cross_country As String = "0"
                objeto2.mejor_tiempo_cross_country = tiempo_cross_country

                Dim tiempo_fondo As String = "0"
                objeto2.mejor_tiempo_fondo = tiempo_fondo

                Dim tiempo_maraton As String = "0"
                objeto2.mejor_tiempo_maraton = tiempo_maraton

                Dim tiempo_obstaculos As String = "0"
                objeto2.mejor_tiempo_obstaculos = tiempo_obstaculos

                Dim tiempo_marcha As String = "0"
                objeto2.mejor_tiempo_marcha = tiempo_marcha

                Dim tiempo_velocidad As String = "0"
                objeto2.mejor_tiempo_velocidad = tiempo_velocidad


                Dim tiempo_medio_fondo As String = "0"
                objeto2.mejor_tiempo_medio_fondo = tiempo_medio_fondo

                objeto.id_resultado_parcial = TextBox1.Text

                capanegocio3.NuevoResultado(objeto2)
                capanegocio4.Nuevo_Registro_Atleta_x_Competencia(objeto)
                NuevoCodigoResultado()
            Next
            MsgBox("Se guardado correctamente la lista de atletas")
            '  Catch ex As Exception
            MsgBox("No se pudo guardar la lista de atletas", MsgBoxStyle.Critical)
            '  End Try

        End Sub


    valeria heredia

    sábado, 15 de abril de 2017 3:43

Todas las respuestas

  • Saludos:

    Para poderte ayudar postea el codigo y el error que genera.

    Estare atento.

    JOSE LUIS


    Dios NO los llamo LAS DIEZ RECOMENDACIONES


    miércoles, 12 de abril de 2017 20:37
  • hola jose luis!!  lo que necesito hacer es que al cargar el datagridview con la lista de atletas, se guarden todos los id (competencia, atletas,resultado), el error lo larga en el de resultado, los demas funcionan bien. es decir, que en una competencia con id= xxx se registren los atletas sus respectivos id y que ademas se genere un id de resultado relacionado a esa competencia. Cabe aclarar que no esta detallada la capa Entidad y la capa Negocio(me parecio que no era necesario :@)

    muchas gracias por tu ayuda!!!

    este es el procedimiento que uso:

       if OBJECT_ID ('ULTIMORESULTADO') is not null
           drop proc ULTIMORESULTADO
           go
           create proc ULTIMORESULTADO
           as
           select top 1  Id_Resultado_Parcial
           FROM Resultado_Parcial
           ORDER BY Id_Resultado_Parcial DESC
           GO

    este es el codigo en la capa de datos que genera el nuevo resultado:

     Public Sub NuevoResultado(ByRef ObjCom As CeResultadoParcial)
            cn = objcon.Conectar
            Try
                cn.Open() 'se ubica siempre antes de ejecutar el comando
                da = New SqlDataAdapter("NUEVORESULTADO", cn)
                da.SelectCommand.CommandType = CommandType.StoredProcedure
                With da.SelectCommand.Parameters
                    .Add("@Id_Resultado_Parcial", SqlDbType.Int).Value = ObjCom.id_resultado
                    .Add("@Serie", SqlDbType.Int).Value = ObjCom.serie
                    .Add("@Altura1", SqlDbType.Decimal).Value = ObjCom.altura1
                    .Add("@Altura2", SqlDbType.Decimal).Value = ObjCom.altura2
                    .Add("@Altura3", SqlDbType.Decimal).Value = ObjCom.altura3
                    .Add("@Altura4", SqlDbType.Decimal).Value = ObjCom.altura4
                    .Add("@Altura5", SqlDbType.Decimal).Value = ObjCom.altura5
                    .Add("@lanzamiento_1", SqlDbType.Decimal).Value = ObjCom.lanzamiento1
                    .Add("@lanzamiento_2", SqlDbType.Decimal).Value = ObjCom.lanzamiento2
                    .Add("@lanzamiento_3", SqlDbType.Decimal).Value = ObjCom.lanzamiento3
                    .Add("@lanzamiento_4", SqlDbType.Decimal).Value = ObjCom.lanzamiento4
                    .Add("@lanzamiento_5", SqlDbType.Decimal).Value = ObjCom.lanzamiento5
                    .Add("@lanzamiento_6", SqlDbType.Decimal).Value = ObjCom.lanzamiento6
                    .Add("@Tiempo1", SqlDbType.VarChar).Value = ObjCom.Tiempo1
                    .Add("@Tiempo2", SqlDbType.VarChar).Value = ObjCom.Tiempo2
                    .Add("@Tiempo3", SqlDbType.VarChar).Value = ObjCom.Tiempo3
                    .Add("@Mejor_Lanzamiento_123", SqlDbType.Decimal).Value = ObjCom.mejor_lanzamiento123
                    .Add("@Mejor_Lanzamiento_456", SqlDbType.Decimal).Value = ObjCom.mejor_lanzamiento456
                    .Add("@Mejor_Salto", SqlDbType.Decimal).Value = ObjCom.mejor_salto
                    .Add("@Mejor_Tiempo_Cross_Country", SqlDbType.VarChar).Value = ObjCom.mejor_tiempo_cross_country
                    .Add("@Mejor_Tiempo_Calle", SqlDbType.VarChar).Value = ObjCom.mejor_tiempo_calle
                    .Add("@Mejor_Tiempo_Fondo", SqlDbType.VarChar).Value = ObjCom.mejor_tiempo_fondo
                    .Add("@Mejor_Tiempo_Maraton", SqlDbType.VarChar).Value = ObjCom.mejor_tiempo_maraton
                    .Add("@Mejor_Tiempo_Obstaculos", SqlDbType.VarChar).Value = ObjCom.mejor_tiempo_obstaculos
                    .Add("@Mejor_Tiempo_Marcha", SqlDbType.VarChar).Value = ObjCom.mejor_tiempo_marcha
                    .Add("@Mejor_Tiempo_Velocidad", SqlDbType.VarChar).Value = ObjCom.mejor_tiempo_velocidad
                    .Add("@Mejor_Tiempo_Medio_Fondo", SqlDbType.VarChar).Value = ObjCom.mejor_tiempo_medio_fondo
                    .Add("@Clasificación_Tiempo_Calle", SqlDbType.Int).Value = ObjCom.clasificacion_calle
                    .Add("@Clasificación_Salto", SqlDbType.Int).Value = ObjCom.clasificacion_salto
                    .Add("@Clasificación_Lanzamiento", SqlDbType.Int).Value = ObjCom.clasificacion_lanzamiento
                    .Add("@Clasificación_Cross_Country", SqlDbType.Int).Value = ObjCom.clasificacion_cross_country
                    .Add("@Clasificación_Fondo", SqlDbType.Int).Value = ObjCom.clasificacion_fondo
                    .Add("@Clasificación_Maraton", SqlDbType.Int).Value = ObjCom.clasificacion_maraton
                    .Add("@Clasificación_Marcha", SqlDbType.Int).Value = ObjCom.clasificacion_marcha
                    .Add("@Clasificación_Medio_Fondo", SqlDbType.Int).Value = ObjCom.clasificacion_medio_fondo
                    .Add("@Clasificación_Obstaculos", SqlDbType.Int).Value = ObjCom.clasificacion_obstaculos
                    .Add("@Clasificación_Velocidad", SqlDbType.Int).Value = ObjCom.clasificacion_velocidad

                  
                End With
                da.SelectCommand.ExecuteNonQuery()  'inserta los valores
                da.SelectCommand.CommandType = CommandType.Text
                da.SelectCommand.CommandText = "select @@IDENTITY"
                Dim ds As DataSet = New DataSet
                da.Fill(ds)
                ObjCom.id_resultado = ds.Tables(0)(0)(0)
            Catch ex As Exception
                Throw ex
                MsgBox("Error al registrar el nuevo resultado", MsgBoxStyle.Critical)
            Finally
                da.Dispose()
                cn.Dispose()
            End Try
        End Sub

    asi creo la funcion del id

      Public Function NuevoCodigoResultado() As String
            cn = objcon.Conectar
            cn.Open()
            da = New SqlDataAdapter("ULTIMORESULTADO", cn)
            Return da.SelectCommand.ExecuteScalar()
        End Function

    en la capa de presentacion:

     Private Sub btnGuardar_Click(sender As System.Object, e As System.EventArgs) Handles btnGuardar.Click

            ' valida que haya registros para poder guardarlos
            If Me.dgvAtletasdeCalle.Rows.Count = 0 Then
                MessageBox.Show("Debe haber registros cargados para poder guardarlos.", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Information)
                btnAgregarAtleta.Focus()
                Return
            End If

            Dim objeto As New CEAtletas_x_Competencia
            Dim objeto2 As New CeResultadoParcial

            '  Try
            For Each rows As DataGridViewRow In Me.dgvAtletasdeCalle.Rows
                objeto.id_competencia = txtCodigoPlanillaCalle.Text
                objeto.id_atleta = rows.Cells(7).Value
                objeto.id_resultado_parcial = TextBox1.Text

                capanegocio3.NuevoResultado(objeto2)
                capanegocio4.Nuevo_Registro_Atleta_x_Competencia(objeto)
                NuevoCodigoResultado()
            Next
            MsgBox("Se guardado correctamente la lista de atletas")
            '  Catch ex As Exception
            MsgBox("No se pudo guardar la lista de atletas", MsgBoxStyle.Critical)
            '  End Try

        End Sub

    Aqui esta el error:


    valeria heredia

    jueves, 13 de abril de 2017 16:38
  • Saludos:

    El error que arroja debe ser que la variable que envias como valor del parametron "@Tiempo1" es Nothing.

      .Add("@Tiempo1", SqlDbType.VarChar).Value = ObjCom.Tiempo1 ' --> Nothing

    Verifica el valor de ObjCom.Tiempo1.

    Me avisas.

    JOSE LUIS


    Dios NO los llamo LAS DIEZ RECOMENDACIONES

    jueves, 13 de abril de 2017 19:37
  • perdon mi ignorancia jose luis...es que a donde deberia asignarle un valor a ese tiempo1, sera en el boton guardar, por ejemplo: dim tiempo1 as string = 00:00:00 ???


    valeria heredia

    jueves, 13 de abril de 2017 20:43
  • En la function estas pasando este parametron:

    Public Sub NuevoResultado(ByRef ObjCom As CeResultadoParcial)

    ObjCom debe contener los valores que pasas al SqlDataAdapter. El codigo que posteas no muestra de donde los obtienes.

    Si te parece mejor, puedo ayudarte por TeamViewer para depurar el programa.

    Si asi lo quieres, me envias tu email para responderte y ponernos de acuerdo en una hora. Yo estoy en USA hora central.

    JOSE LUIS


    Dios NO los llamo LAS DIEZ RECOMENDACIONES

    jueves, 13 de abril de 2017 22:56
  • creo que se a que te referis! voy a ver eso..te dejo mi mail de igual manera, muchas gracias jose luis!!

    valeheredia97@gmail.com


    valeria heredia

    viernes, 14 de abril de 2017 14:21
  • aqui pude resolver el error que me largaba el visual...no se si sera lo mas optimo pero funciono, si a alguno le sirve se los dejo.  Solo le di un valor inicial a todos los string

     Private Sub btnGuardar_Click(sender As System.Object, e As System.EventArgs) Handles btnGuardar.Click

            ' valida que haya registros para poder guardarlos
            If Me.dgvAtletasdeCalle.Rows.Count = 0 Then
                MessageBox.Show("Debe haber registros cargados para poder guardarlos.", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Information)
                btnAgregarAtleta.Focus()
                Return
            End If

            Dim objeto As New CEAtletas_x_Competencia
            Dim objeto2 As New CeResultadoParcial

            '  Try
            For Each rows As DataGridViewRow In Me.dgvAtletasdeCalle.Rows
                objeto.id_competencia = txtCodigoPlanillaCalle.Text
                objeto.id_atleta = rows.Cells(7).Value


                Dim tiempo1 As String = "0"
                objeto2.Tiempo1 = tiempo1

                Dim tiempo2 As String = "0"
                objeto2.Tiempo2 = tiempo2

                Dim tiempo3 As String = "0"
                objeto2.Tiempo3 = tiempo3

                Dim tiempoasignado As String = "0"
                objeto2.mejor_tiempo_calle = tiempoasignado

                Dim tiempo_cross_country As String = "0"
                objeto2.mejor_tiempo_cross_country = tiempo_cross_country

                Dim tiempo_fondo As String = "0"
                objeto2.mejor_tiempo_fondo = tiempo_fondo

                Dim tiempo_maraton As String = "0"
                objeto2.mejor_tiempo_maraton = tiempo_maraton

                Dim tiempo_obstaculos As String = "0"
                objeto2.mejor_tiempo_obstaculos = tiempo_obstaculos

                Dim tiempo_marcha As String = "0"
                objeto2.mejor_tiempo_marcha = tiempo_marcha

                Dim tiempo_velocidad As String = "0"
                objeto2.mejor_tiempo_velocidad = tiempo_velocidad


                Dim tiempo_medio_fondo As String = "0"
                objeto2.mejor_tiempo_medio_fondo = tiempo_medio_fondo

                objeto.id_resultado_parcial = TextBox1.Text

                capanegocio3.NuevoResultado(objeto2)
                capanegocio4.Nuevo_Registro_Atleta_x_Competencia(objeto)
                NuevoCodigoResultado()
            Next
            MsgBox("Se guardado correctamente la lista de atletas")
            '  Catch ex As Exception
            MsgBox("No se pudo guardar la lista de atletas", MsgBoxStyle.Critical)
            '  End Try

        End Sub


    valeria heredia

    sábado, 15 de abril de 2017 3:43