none
Actualizar datos de un gridcontrol - SQL Server RRS feed

  • Pregunta

  • Buenas tardes, quisiera que me ayuden con este código, ya que nose porque no me actualiza en mi Base de datos, ya que selecciono varios registros y luego en el botón actualizar debe de actualizar los registros seleccionados,llevo horas con esto espero me ayuden por favor tengo que presentarlo mañana, help me :(

                    Dim result As Integer = DevExpress.XtraEditors.XtraMessageBox.Show("¿Desea actualizar el estado de los registros seleccionados?", "system", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                    If result = DialogResult.No Then
                        Return
                    ElseIf result = DialogResult.Yes Then
                        Dim SelectedRowHandles As Integer() = griddtglistadoprendasfallidas.GetSelectedRows()
                        Dim Arti As String
                        Dim ID As String
                        For i As Integer = 0 To SelectedRowHandles.Length - 1
                            Arti = Convert.ToString(griddtglistadoprendasfallidas.GetRowCellValue(SelectedRowHandles(i), "Articulo"))
                            ID = Convert.ToString(griddtglistadoprendasfallidas.GetRowCellValue(SelectedRowHandles(i), "ID"))
                            'PROCEDEMOS ACTUALIZAR SI TODO ESTA CONFORME CON UN UPDATE
                            Using conexion As New SqlConnection("Data Source=10.0.1.141;Initial Catalog=data;Persist Security Info=True;User ID=sa;Password=*******")
                                conexion.Open()
                                Dim cmd As New SqlCommand("UPDATE CtrlPrendas SET StatusID=@StatusID
                                   WHERE CodArticulo=@CodArticulo AND TiendaID=@TiendaID AND CtrlCroPrendasID=@CtrlCroPrendasID AND FechaStatus=@FechaStatus AND CtrlPrendasID=@CtrlPrendasID", conexion)
                                cmd.CommandType = CommandType.Text
                                cmd.Parameters.AddWithValue("@StatusID", "2")
                                cmd.Parameters.AddWithValue("@CodArticulo", Arti)
                                cmd.Parameters.AddWithValue("@TiendaID", TiendaID)
                                cmd.Parameters.AddWithValue("@CtrlCroPrendasID", CronoIDAP)
                                cmd.Parameters.AddWithValue("@FechaStatus", CDate(FechaServidor))
                                cmd.Parameters.AddWithValue("@CtrlPrendasID", ID)
                                cmd.ExecuteNonQuery()
                                conexion.Close()
                            End Using
                        Next
                    End If


    domingo, 10 de julio de 2016 22:47

Respuestas

  • Hola prueba primero aver si esta query realmente funciona en sql con los parámetros que estas enviando, tienes muchos and si uno no se cumple no va a realizar nada

    UPDATE CtrlPrendas SET StatusID=@StatusID
    WHERE CodArticulo=@CodArticulo AND TiendaID=@TiendaID AND CtrlCroPrendasID=@CtrlCroPrendasID 
    AND FechaStatus=@FechaStatus AND CtrlPrendasID=@CtrlPrendasID


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala.
    Saludos.
    Lima-Perú

    domingo, 10 de julio de 2016 23:01
  • Oscar Perez 1234,

    Otra sugerencia, no requieres crear una instancia de la clase SqlConnection por cada fila que recorres, te recomiendo que cambies tu código a lo siguiente:

    Dim result As Integer = DevExpress.XtraEditors.XtraMessageBox.Show("¿Desea actualizar el estado de los registros seleccionados?", "system", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    
    If result = DialogResult.No Then
    	Return
    ElseIf result = DialogResult.Yes Then
    	
    	Dim SelectedRowHandles As Integer() = griddtglistadoprendasfallidas.GetSelectedRows()
    	
    	Using conexion As New SqlConnection("Data Source=10.0.1.141;Initial Catalog=data;Persist Security Info=True;User ID=sa;Password=*******")
    		Dim Arti As String
    		Dim ID As String
    		
    		conexion.Open()		
    		
    		For i As Integer = 0 To SelectedRowHandles.Length - 1
    			Arti = Convert.ToString(griddtglistadoprendasfallidas.GetRowCellValue(SelectedRowHandles(i), "Articulo"))
    			ID = Convert.ToString(griddtglistadoprendasfallidas.GetRowCellValue(SelectedRowHandles(i), "ID"))
    			
    			Dim cmd As New SqlCommand("UPDATE CtrlPrendas SET StatusID=@StatusID
    			   WHERE CodArticulo=@CodArticulo AND TiendaID=@TiendaID AND CtrlCroPrendasID=@CtrlCroPrendasID AND FechaStatus=@FechaStatus AND CtrlPrendasID=@CtrlPrendasID", conexion)		
    			
    			cmd.Parameters.AddWithValue("@StatusID", "2")
    			cmd.Parameters.AddWithValue("@CodArticulo", Arti)
    			cmd.Parameters.AddWithValue("@TiendaID", TiendaID)
    			cmd.Parameters.AddWithValue("@CtrlCroPrendasID", CronoIDAP)
    			cmd.Parameters.AddWithValue("@FechaStatus", CDate(FechaServidor))
    			cmd.Parameters.AddWithValue("@CtrlPrendasID", ID)
    			
    			cmd.ExecuteNonQuery()
    		Next
    	End Using	
    End If

    domingo, 10 de julio de 2016 23:14

Todas las respuestas

  • Hola prueba primero aver si esta query realmente funciona en sql con los parámetros que estas enviando, tienes muchos and si uno no se cumple no va a realizar nada

    UPDATE CtrlPrendas SET StatusID=@StatusID
    WHERE CodArticulo=@CodArticulo AND TiendaID=@TiendaID AND CtrlCroPrendasID=@CtrlCroPrendasID 
    AND FechaStatus=@FechaStatus AND CtrlPrendasID=@CtrlPrendasID


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala.
    Saludos.
    Lima-Perú

    domingo, 10 de julio de 2016 23:01
  • Tienes toda la razón, el error era en este " AND FechaStatus=@FechaStatus ", eso no tenia que ir ahí sino en el SET, Gracias :D
    domingo, 10 de julio de 2016 23:08
  • Oscar Perez 1234,

    Otra sugerencia, no requieres crear una instancia de la clase SqlConnection por cada fila que recorres, te recomiendo que cambies tu código a lo siguiente:

    Dim result As Integer = DevExpress.XtraEditors.XtraMessageBox.Show("¿Desea actualizar el estado de los registros seleccionados?", "system", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    
    If result = DialogResult.No Then
    	Return
    ElseIf result = DialogResult.Yes Then
    	
    	Dim SelectedRowHandles As Integer() = griddtglistadoprendasfallidas.GetSelectedRows()
    	
    	Using conexion As New SqlConnection("Data Source=10.0.1.141;Initial Catalog=data;Persist Security Info=True;User ID=sa;Password=*******")
    		Dim Arti As String
    		Dim ID As String
    		
    		conexion.Open()		
    		
    		For i As Integer = 0 To SelectedRowHandles.Length - 1
    			Arti = Convert.ToString(griddtglistadoprendasfallidas.GetRowCellValue(SelectedRowHandles(i), "Articulo"))
    			ID = Convert.ToString(griddtglistadoprendasfallidas.GetRowCellValue(SelectedRowHandles(i), "ID"))
    			
    			Dim cmd As New SqlCommand("UPDATE CtrlPrendas SET StatusID=@StatusID
    			   WHERE CodArticulo=@CodArticulo AND TiendaID=@TiendaID AND CtrlCroPrendasID=@CtrlCroPrendasID AND FechaStatus=@FechaStatus AND CtrlPrendasID=@CtrlPrendasID", conexion)		
    			
    			cmd.Parameters.AddWithValue("@StatusID", "2")
    			cmd.Parameters.AddWithValue("@CodArticulo", Arti)
    			cmd.Parameters.AddWithValue("@TiendaID", TiendaID)
    			cmd.Parameters.AddWithValue("@CtrlCroPrendasID", CronoIDAP)
    			cmd.Parameters.AddWithValue("@FechaStatus", CDate(FechaServidor))
    			cmd.Parameters.AddWithValue("@CtrlPrendasID", ID)
    			
    			cmd.ExecuteNonQuery()
    		Next
    	End Using	
    End If

    domingo, 10 de julio de 2016 23:14
  • Gracias Williams por aconsejarme, lo tomare en cuenta
    domingo, 10 de julio de 2016 23:30