Autor Tema: Consulta SQL con fechas y tablas relacionadas que no me filtra.  (Leído 3920 veces)

0 Usuarios y 1 Visitante están viendo este tema.

FreddyJ

  • Kilobyte
  • **
  • Mensajes: 51
  • Reputación: +0/-2
    • Ver Perfil
Hola. Me ha surgido un problema que no se como solucionar, no veo donde está el error.

Comienzo por decir que tengo una tabla que se llama detallesfactura la cual tiene los siguientes campos. (def_facturanum, def_decripcion, def_cantidad, def_preciouni, def_totalitem, def_iva, def_fecha) y una que se llama facturas con los siguientes campos.
http://www.imaxenes.com/imagen/img_factura1cs12zo.jpg.html Continuo. Esas tablas estan relacionadas por los dos primeros campos de cada tabla.

Ahora bien. tengo este formulario. http://www.imaxenes.com/imagen/listado_procesadas1ry38lg.jpg.html Bien en esta imagen estoy mostrando datos de ambas tablas, pero resulta que cuando selecciono una fecha sea cual sea, se muestran todos los datos. No me esta filtrando como debe ser.

Aqui los codigos. Esto es para cargar las fechas en un contro de usuario que cree.
Código: [Seleccionar]
Private Sub Cargar_fechas()
    Dim rs As New ADODB.Recordset
        Call cSel1.Clear
        rs.Open "SELECT DISTINCT fac_fechafact FROM facturas ORDER BY fac_fechafact DESC", nc, adOpenDynamic, adLockOptimistic
    While Not rs.EOF
        Call cSel1.AddItem(rs!fac_fechafact & " " & Format(rs!fac_fechafact, "long date"))
        DoEvents
        rs.MoveNext
    Wend
        rs.Close
    Set rs = Nothing
        cSel1.DefaultItem = 0
End Sub

Y esta es la funcion que me hace todo el proceso, que se muestra los datos que quiero.

Código: [Seleccionar]
Private Sub Cargar_Listado_fechas(Optional lpFecha As String)
    Dim cItem As ListItem
    Dim rs As New ADODB.Recordset
    Dim sQuery As String

    Call lv.ListItems.Clear
    If (IsDate(lpFecha)) Then
        sQuery = "SELECT DISTINCT  detallesfactura.def_decripcion, detallesfactura.def_cantidad, detallesfactura.def_totalitem, facturas.fac_codigo, facturas.fac_fechafact, facturas.fac_nombre FROM detallesfactura, facturas WHERE facturas.fac_condicion= 1 AND facturas.fac_fechafact = #" & Format(lpFecha, "mm/dd/yyyy") & "# ORDER BY facturas.fac_fechafact DESC"
    Else
        sQuery = "SELECT DISTINCT  detallesfactura.def_decripcion, detallesfactura.def_cantidad, detallesfactura.def_totalitem, facturas.fac_codigo, facturas.fac_fechafact, facturas.fac_nombre FROM detallesfactura, facturas ORDER BY facturas.fac_fechafact DESC"
    End If
   
    On Error Resume Next
    rs.Open sQuery, nc, adOpenDynamic, adLockOptimistic
    While Not rs.EOF
    Set cItem = lv.ListItems.Add(, , Format(rs!fac_codigo, "0000000"))
            cItem.SubItems(1) = (rs!fac_fechafact)
            cItem.SubItems(2) = (rs!fac_nombre)
            cItem.SubItems(3) = (rs!def_decripcion)
            cItem.SubItems(4) = (rs!def_cantidad)
            cItem.SubItems(5) = (rs!def_totalitem)
        DoEvents
        rs.MoveNext
    Wend
        rs.Close
    Set rs = Nothing
 
End Sub

Asi es ocmo llamo y muestro , apenas selecciono la fecha en el combo que lo cree como contro de usuario.

Código: [Seleccionar]
Private Sub cSel1_ItemClick(ByVal lpText As String, ByVal lpIndex As Long)
    Call Cargar_Listado_fechas(Left(lpText, 10))
End Sub

Necesito que me ayuden a ver el error para que me filtre bien, por que si se dan cta en las imagenes muestra por ejemplo en la fecha 8 me ca,bia todos los registros  a esa fecha y al igual que la 4 de julio. Gracias.
« última modificación: Julio 08, 2010, 09:02:53 pm por FreddyJ »

wolf_kof

  • Visitante
Re:Consulta SQL con fechas y tablas relacionadas que no me filtra.
« Respuesta #1 en: Julio 09, 2010, 01:01:04 am »
Mira como estas usando access, creo que lo mas conveniente es hacer una consulta dentro de la bae de datos, para despues llamarla por el filtrado de fechas que ya tienes, ademas creo que el error es que no estas poniendo el campo relacionado, te voy a poner el ejemplo de como hacer las consultas para poder filtrarlas despues:

ya habiendo hecho tu consulta en access solo filtras la consulta

Código: (vb) [Seleccionar]
Dim rs As New ADODB.Recordset
rs = "select * from consulta"
rs.filter = "campo = '" & objeto.text & "'"

call cargardatos


yo asi lo hago y me evito de tanto codigo sql y si quieres filtrar por mas de un campo

Código: (vb) [Seleccionar]
Dim rs As New ADODB.Recordset
rs = "select * from consulta"
rs.filter = "campo1 = '" & objeto1.text & "' and campo2 = '" & objeto2.text & "'"

call cargardatos



wolf_kof

  • Visitante
Re:Consulta SQL con fechas y tablas relacionadas que no me filtra.
« Respuesta #2 en: Julio 09, 2010, 01:02:58 am »
tambien te dejo un enlace para que leas hacerca de las consultas

http://www.aulaclic.es/sql/t_3_1.htm