Consulta Muy lenta

Dudas sobre código
Avatar de Usuario
bryger
Nivel 6
Mensajes: 268
Registrado: Mié Jul 06, 2016 12:24 pm

Consulta Muy lenta

Mensajepor bryger » Mar Oct 12, 2021 3:25 pm

Buenas realizo una consulta a una tabla relacionada con otra pero demora casi un minuto en la tabl principal no hay mas de 2mil registros y la otra tabla no mas de 200 registros esto me lo carga en un formulario y a su vez este tiene un subformulario que me muestra el detalle el problema es el tiempo que tarda aun asi estan las tablas en sql y las consultas en la fronk end todo funciona rapido menos esa parte me imagino que estoy haciendo algo muy mal
esto es lo que realizo en formulario principal ten un campo cion un boton buscar

Código: Seleccionar todo

Private Sub bus1_Click()
Dim buscar As String
Dim CriterioBusqueda As String
                 
                       
If IsNull(buscar3) Then
MsgBox "No ha ingresado nada" & vbCrLf & _
"vuelva a intentarlo", vbCritical, "Campo Nulo"
buscar3.SetFocus
Exit Sub
End If
buscar = Me.buscar3
CriterioBusqueda = "[codigoT]=" & "'" & buscar3 & "'"
    'Comprobamos si existe el Nif del Usuario
    If DCount("codigoT", "personal_pagos", CriterioBusqueda) > 0 Then
        'Abrimos una caja de mensajes indicamos que lo encontramos
        MsgBox "Codigo Encontrado Empleado " & Texto3 & " Y su, Codigo Es  " & buscar2, vbInformation, "Empleado Encontrado"
        'Y abrimos
            DoCmd.OpenForm "nomina_apertura", acNormal, "", "", acEdit, acNormal
            DoCmd.GoToControl "codigoT" 'Rem cuadro de texto donde introducimos el Nif
            DoCmd.FindRecord Forms![Buscar_empleado_pagos]!buscar3, acEntire, False, , False, acCurrent, True
            DoCmd.Close acForm, "Buscar_empleado_pagos"
    Else
    'De no existir lanzamos un Mensaje
     MsgBox " El Empleado no Existe" & Texto3 & " Ni su Codigo  " & buscar3, vbCritical, "Empleado No Existe"
    buscar3.SetFocus
End If
End Sub


me carga un formulario con los datos del trabajador y luego los filtro por fecha cos dos campos fechainicial y fecha final y con e boton procedo a llamar este codigo

Código: Seleccionar todo

Private Sub buscar_Click()
'filta el subformulario
If Me.txtfechainicio = vbNullString Or IsNull(Me.txtfechainicio) Then
MsgBox "Debe incluir una fecha inicial a Buscar", vbCritical, "Error en Fecha Inicial Reintente"
txtfechainicio.SetFocus
Exit Sub
ElseIf Me.txtfechafin = vbNullString Or IsNull(Me.txtfechafin) Then
MsgBox "Debe Incluir Una Fecha Final", vbCritical, "Error En Fecha Final Reintente"
txtfechafin.SetFocus
Exit Sub
ElseIf Me.txtfechafin < Me.txtfechainicio Then
MsgBox "La Fecha Final No Puede Ser Mayor a La Fecha Inicial", vbCritical, "Error En Fechas"
txtfechafin.SetFocus
Exit Sub
End If
DoEvents
DoCmd.Close acForm, "Nomina_tdc_Tlmk"
DoEvents

DoCmd.OpenForm "qs_telemarquista", acFormDS, , , , acHidden
DoCmd.OpenForm "Nomina_tdc_Tlmk", acFormDS, , , , acHidden

Me.pagos_personal.Form.RecordSource = _
"SELECT nomina_tlmk_consulta.* " & _
"FROM Personal_pagos LEFT JOIN nomina_tlmk_consulta ON Personal_pagos.CodigoT = nomina_tlmk_consulta.Tlmk " & _
"WHERE nomina_tlmk_consulta.Fecha_busqueda Between #" & Me.txtfechainicio & "# And #" & Me.txtfechafin & "# " & _
"AND nomina_tlmk_consulta.numero_contrato Is Not Null"

    Dim sFiltro As String
    Dim sFecha_busqueda As String
    If IsNull(Me.txtfechainicio) And IsNull(Me.txtfechafin) Then
        sFecha_busqueda = ""
    Else
        sFecha_busqueda = "Fecha_busqueda BETWEEN #" & Format(Nz(Me.txtfechainicio, #1/1/1900#), "mm-dd-yyyy") & _
                    "# AND #" & Format(Nz(Me.txtfechafin, #12/31/9999#), "mm-dd-yyyy") & "#"
    End If
    If sFecha_busqueda <> "" Then
        If sFiltro <> "" Then
        sFiltro = sFiltro & " AND " & sFecha_busqueda
        Else
        sFiltro = sFecha_busqueda
        End If
    End If
    Debug.Print sFiltro
    If sFiltro <> "" Then
    Me.pagos_personal.Form.Filter = sFiltro
    Me.pagos_personal.Form.FilterOn = True
    Else
    Me.pagos_personal.Form.FilterOn = False
    End If
    End Sub

para ambos casos tarda un minuto alguna idea de que estara mal ?

Volver a “Código VBA”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados