none
Filtro , Actualizar Filtro RRS feed

  • Pregunta

  • No tengo problema con la busqueda pero en el caso de Personal tengo un problema:

    El filtro me sale correcto, luego presiono el boton actualizar para que el datagrid vuelva a su estado normal

    sucede que las columnas se me invierten

    El filtro lo hace bien

    Dim Ssql As String = "select Codigo, CONCAT(Apellidos, ', ',Nombres) as Nombres, Fecha, HoraIngreso, HoraSalida from VistaMovimientos1 where CONCAT(Apellidos, ', ',Nombres) = @dato and CONVERT(date, Fecha) = CONVERT(date, GETDATE()) ORDER BY CODIGO,FECHA,HORA"

    El problema es cuando restauro el filtro y quiero regrese a mostrar todos de nuevo, 

    Sale los todo invertido

    Codigo,nombres,fecha,horaingreso,horasalida,apelidos,hora asi me sale cuando deberia ser como el inicial como cuando cargo el load


    sábado, 27 de agosto de 2016 0:30

Respuestas

  • Hola Javier RoCas,

    Primero recomendarte que encapsules la lógica para cargar las asistencias. Así puedes reutilizarlo y usarlo en el botón actualizar evitando estar duplicando el código.

    Private Sub cargarAsistencias()
         Try
          Using cnx As New SqlConnection(ConfigurationManager.ConnectionStrings("cnxString").ToString())
             oCommandBuilder = New SqlCommandBuilder(Me.oDataAdapter)
    .....

    Y en el Load.

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Me.txtDNI.Focus()
            cargarAsistencias()
        End Sub


    De igual forma harías en el botón actualizar.

       Private Sub btnActualizar_Click(sender As Object, e As EventArgs) Handles btnActualizar.Click
            cargarAsistencias()
        End Sub

    [-] ... pero sale mal sin embargo cuando lo hago x medio del la opcion x fecha sale bien: entonces el tema es con el nombre sera por el contact?

    Claro, cómo vas a cargar los datos con una consulta y luego filtras por otra ? Cuando cargas los datos haces un Select * From dónde te mostrará todos los campos de esa tabla, pero usas una consulta personaliza para hacer el filtro. (La grilla carga las nuevas columnas que declaras en la consulta)

    El CONCAT está generando una nueva columna llamada Nombres.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Javier Roque sábado, 27 de agosto de 2016 16:54
    sábado, 27 de agosto de 2016 2:17

Todas las respuestas

  • Hola Javier RoCas,

    [-] ... luego presiono el boton actualizar para que el datagrid vuelva a su estado normal

    Al decir estado normal, te refieres cuando cargó el formulario ?

    Qué código ejecuta el evento click del botón actualizar ?

    Recuerda que solo tendrías que volver a cargar los datos al DataSource del DataGridView para que te muestren los datos. Si es un método tienes que llamarlo.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    sábado, 27 de agosto de 2016 0:37
  • me refiero a esto: el formulario en el evento load tiene esto:

     Private Sub Asistencia_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Personal()
            Me.txtDNI.Focus()
            
            Using cnx As New SqlConnection(ConfigurationManager.ConnectionStrings("cnxString").ToString())
                oCommandBuilder = New SqlCommandBuilder(Me.oDataAdapter)
                oDataAdapter = New SqlDataAdapter("SELECT * FROM VistaMovimientos1 WHERE (CONVERT(date, Fecha) = CONVERT(date, GETDATE())) ORDER BY CODIGO,FECHA,HORA", cnx)
                oDataTable = New DataTable
                oDataAdapter.Fill(oDataTable)
                dgvAsistencia.DataSource = oDataTable
                Me.lblReg.Text = String.Format("Total de Registros: {0}", oDataTable.Rows.Count)
            End Using
        End Sub

    cuando hago el filtro por nombre  elegido del combo lo hace

    cuando quiero actualizar o refrescar ese mismo codigo del load lo mando al boton actualizar 

    pero sale mal sin embargo cuando lo hago x medio del la opcion x fecha sale bien: entonces el tema es con el nombre sera por el contact?

    Este es la consulta de nombre

    Dim Ssql As String = "select Codigo, CONCAT(Apellidos, ', ',Nombres) as Nombres, Fecha, HoraIngreso, HoraSalida from VistaMovimientos1 where CONCAT(Apellidos, ', ',Nombres) = @dato and CONVERT(date, Fecha) = CONVERT(date, GETDATE()) ORDER BY CODIGO,FECHA,HORA"

    sábado, 27 de agosto de 2016 1:49
  • http://subefotos.com/ver/?bbf248aa195addd35bb1f5db381feb9ao.jpg

    Creo que el tema es respecto a esto creo 

    CONCAT(Apellidos, ', ',Nombres) as Nombres,

    sábado, 27 de agosto de 2016 2:12
  • Hola Javier RoCas,

    Primero recomendarte que encapsules la lógica para cargar las asistencias. Así puedes reutilizarlo y usarlo en el botón actualizar evitando estar duplicando el código.

    Private Sub cargarAsistencias()
         Try
          Using cnx As New SqlConnection(ConfigurationManager.ConnectionStrings("cnxString").ToString())
             oCommandBuilder = New SqlCommandBuilder(Me.oDataAdapter)
    .....

    Y en el Load.

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Me.txtDNI.Focus()
            cargarAsistencias()
        End Sub


    De igual forma harías en el botón actualizar.

       Private Sub btnActualizar_Click(sender As Object, e As EventArgs) Handles btnActualizar.Click
            cargarAsistencias()
        End Sub

    [-] ... pero sale mal sin embargo cuando lo hago x medio del la opcion x fecha sale bien: entonces el tema es con el nombre sera por el contact?

    Claro, cómo vas a cargar los datos con una consulta y luego filtras por otra ? Cuando cargas los datos haces un Select * From dónde te mostrará todos los campos de esa tabla, pero usas una consulta personaliza para hacer el filtro. (La grilla carga las nuevas columnas que declaras en la consulta)

    El CONCAT está generando una nueva columna llamada Nombres.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Javier Roque sábado, 27 de agosto de 2016 16:54
    sábado, 27 de agosto de 2016 2:17
  • Entonces, no entiendo si el concat esta generando otro campo No es la forma correcta de buscar desdeun combo box que a sido llenado con concat?

    Hay otra forma o entonces solo es cuestion de arreglar algo en la recarga? o seria mejor que en ves de un combo utilice un textbox y me haga un filtro por apellidos ?

    (La grilla carga las nuevas columnas que declaras en la consulta)
    esta parte estoy pensando... porque me carga las nuevas columnas? entonces habria k usar un dt.RejectChanges() ?


    sábado, 27 de agosto de 2016 3:03