ADODB y ACCESS [Filtrar] [SOLUCIONADO]

Iniciado por e500, 31 Julio 2010, 05:21 AM

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

e500

Hola amigos, tengo una duda sobre como filtrar mi debe por medio de un rango de fechas, ejemplo:

Código (vb) [Seleccionar]


fi = Format(fi, "dd/mm/yyyy")
ft = Format(ft, "dd/mm/yyyy")
Busca = "Select * from Ventas where FEntrega between #" & fi & "# and #" & ft & "#"


Hasta ahi he llegado pero no logro realizar la consulta a la DB, espero q me puedan ayudar.

Saludos

seba123neo

crea un recordset y pasale la conexion a la base de datos para que te haga la consulta...¿tenes algo hecho del programa o recien empezas?
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

e500

#2
Hola seba, si tengo todo echo el programa, y es un monton. estuve con xkiz
y BlackZerox luchando pero no tuve resultados.

Llegamos hasta aqui:

Código (vb) [Seleccionar]

Public Sub rangoF(fecinicio As String, fectermino As String)
Dim fi, ft As Date

fi = Format(fecinicio, "dd/mm/yyyy")        ': MsgBox fi
ft = Format(fectermino, "dd/mm/yyyy")       ': MsgBox ft

SQL = "SELECT * FROM Ventas WHERE FEntrega=" & fi & " And FEntrega =" & ft
rsFiltro.Open SQL, cnn, adOpenDynamic, adLockOptimistic

End Sub


Pero el RecorderSet rsFiltro prece vacio. porque al cargarlo en mi ListView no devuelve valores.

Este Modulo estoy usando para cargar datos y conectarme a la DB

Código (vb) [Seleccionar]

Option Explicit

Public Declare Sub InitCommonControls Lib "comctl32" ()

' variables para la conexión y el recordset
''''''''''''''''''''''''''''''''''''''''''''
Public cnn          As New ADODB.Connection
Public rsVentas     As New ADODB.Recordset
Public rsFiltro     As New ADODB.Recordset      'variable que almacena las fechas filtradas

Public ObjItem As ListItem

' Conecta con la DB
Public Sub IniciarConexion()

      With cnn
          .CursorLocation = adUseClient
          .Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                           App.Path & "\LBDATA.mdb" & ";Persist Security Info=False;Jet OLEDB:Database Password=" & "pass123"
      End With

End Sub

' Carga las tablas
Public Sub IniciarTablas()
   
     Set rsVentas = New ADODB.Recordset
     rsVentas.CursorLocation = adUseClient
     rsVentas.Open "select * from Ventas", cnn, adOpenStatic, adLockOptimistic
   
     Set rsFiltro = New ADODB.Recordset
     'rsFiltro.CursorLocation = adUseClient
     'rsFiltro.Open "select * from Ventas", cnn, adOpenStatic, adLockOptimistic

End Sub

Public Sub rangoF(fecinicio As String, fectermino As String)
Dim fi, ft As Date

fi = Format(fecinicio, "dd/mm/yyyy")        ': MsgBox fi
ft = Format(fectermino, "dd/mm/yyyy")       ': MsgBox ft

SQL = "SELECT * FROM Ventas WHERE FEntrega=" & fi & " And FEntrega =" & ft
rsFiltro.Open SQL, cnn, adOpenDynamic, adLockOptimistic

End Sub

Public Sub CargarListViewV(LV As ListView, rs As ADODB.Recordset)
   
 Dim i As Integer
   
       'limpia el LV
      LV.ListItems.Clear
   
       ' si hay registros
      If rs.RecordCount > 0 Then
       
           ' recorre el recordset
          While Not rs.EOF
               ' añade los datos
              Set ObjItem = LV.ListItems.Add(, , rs(0))
               
             'ObjItem.SubItems(0) = rs!Codigo
             'ObjItem.SubItems(1) = rs!ClienteID
             ObjItem.SubItems(1) = rs!Producto
             ObjItem.SubItems(2) = rs!fpedido
             ObjItem.SubItems(3) = rs!fentrega
             ObjItem.SubItems(4) = rs!MPago
             ObjItem.SubItems(5) = rs!Ncheque
             ObjItem.SubItems(6) = rs!MTotal
             ObjItem.SubItems(7) = rs!MPagado
             ObjItem.SubItems(8) = rs!Chofer
             ObjItem.SubItems(9) = rs!Finalizada
             ObjItem.SubItems(10) = rs!Entregada
             ObjItem.SubItems(11) = rs!ClienteID
             ObjItem.SubItems(12) = rs!FechaID
             ObjItem.SubItems(13) = rs(0)
             ObjItem.SubItems(14) = rs!Dia
             ObjItem.SubItems(15) = rs!Mes
             ObjItem.SubItems(16) = rs!Año
             ObjItem.SubItems(17) = rs!IDPago
             ObjItem.SubItems(18) = rs!Observacion
              ' siguiente registro
             rs.MoveNext
          Wend
   
End Sub




Y cargo los datos en el ListView asi:

Código (vb) [Seleccionar]

Call CargarListViewV(FrmVentas.LV, rsFiltro)


Espero que puedas ayudarme, Saludos

e500

Solucionado, me autorespondo.

Código (vb) [Seleccionar]

Public Sub rangoF(fecinicio As String, fectermino As String)
Dim fi, ft As Date

fi = Format(fecinicio, "dd/mm/yyyy")        ': MsgBox fi
ft = Format(fectermino, "dd/mm/yyyy")       ': MsgBox ft

       If rsFiltro.State = adStateOpen Then
           rsFiltro.Close
       End If

       SQL = "SELECT * FROM Ventas WHERE FEntrega >= '" & fi & "' And FEntrega <= '" & ft & "'"

       rsFiltro.Open SQL, cnn, adOpenStatic, adLockOptimistic

End Sub


Gracias a todos por su ayuda,

Salu2