Ayuda para filtrado de datos desde una bd access

Hola:
Comento mi problema, estoy realizando un punto de ventas al cual se accesa por diferentes usuarios, ya casi lo tengo terminado, solo que me enfrento con una complicación para hacer el cierre de caja(es decir cuanto vendió cada usuario por fecha), tengo en un form 2 DTPicker para seleccionar la búsqueda entre dos fechas(fecha_a y fecha_b), un combo box que he llenado que contiene nombres de los vendedores, otro combo box con el tipo de producto, un data para cargar los datos de la tabla ventas, otro data para cargar los nombres de usuarios y un command para hacer la búsqueda,
finalmente necesito sumar los valores obtenidos(precioVenta) para que refleje la venta por fecha, por vendedor y por producto con su respectivo total.
Ya puedo realizar el filtrado mediante fechas, pero lo que no logro hacer es el filtrado incluyendo nombre de usuario y tipo de producto, aquí el código(se que no es la mejor manera de programar pero fue lo que más se me adecuo ya que soy novato en esto, suplico su comprensión):
'__________________________________________________________________
'ban es una bandera
Dim ban As Integer
'AYU ES UNA VARIABLE A LA QUE SE ASIGNA UN VALOR EN FUNCION
'DE EL CARACTER QUE SEA CAPTURADO, SIRVE PARA CODIFICAR
'LA LLAVE DE ACCESO
Dim AYU As String
Function cargar()
'se carga la tabla usuarios
Me.dtaUsuarios.RecordSource = "select * from usuarios"
Me.dtaUsuarios.Refresh
Do Until Me.dtaUsuarios.Recordset.EOF
Me.cmbNuevo.AddItem (Me.dtaUsuarios.Recordset.Fields(1))
Me.dtaUsuarios.Recordset.MoveNext
Loop
End Function
Private Sub cmbNuevo_Click()
'se llena el combo con los usuarios
Me.dtaUsuarios.RecordSource = "select * from usuarios where nombreUsuario = '" & Me.cmbNuevo.Text & "'"
Me.dtaUsuarios.Refresh
If Not Me.dtaUsuarios.Recordset.EOF Then
usuarioCorte = Me.dtaUsuarios.Recordset.Fields(1)
End If
End Sub
Private Sub com_Click()
'se cargan los datos de la base
Me.dtaUsuarios.RecordSource = "select * from usuarios where nombreUsuario = '" & com.Text & "'"
Me.dtaUsuarios.Refresh
If Not Me.dtaUsuarios.Recordset.EOF Then
usuarioCorte = Me.dtaUsuarios.Recordset.Fields(1)
End If
End Sub
Private Sub cmbTipo_Click()
importancia = Me.cmbTipo.Text
End Sub
Private Sub cmdAgregar_Click()
Me.dtaReporte.RecordSource = "select * from ventas where fechaVenta between #" & Format(fecha_a, "mm/dd/yyyy") & "# and #" & Format(fecha_b, "mm/dd/yyyy") & "#"
Me.dtaReporte.Refresh
Me.MSFlexGrid1.Refresh
End Sub
Private Sub dtFecha01_Change()
fecha_a = Me.dtFecha01.Value
End Sub
Private Sub dtFecha02_Change()
fecha_b = Me.dtFecha02.Value
End Sub
Private Sub Form_Load()
Dim aux As Integer
Dim fila As Integer
Call cargar
End Sub
Private Sub mnuabandonacierre_Click()
Call sistemaCierre
End Sub
Private Sub mnusalircierredsd_Click()
Unload Me
End Sub
Private Sub Timer1_Timer()
If ban = 0 Then
Call cargar
ban = 1
End If
End Sub
1

1 respuesta

Respuesta
1
No estoy del todo seguro de haberte entendido, si no me equivoco lo que quieres es que te salga un listado tal que así.
Cliente Nventas Total ventas
¿Dónde cliente sea el nombre o código de este, nventas el nº de ventas que se le ha realizado y Total Ventas la suma de los importes totales no?
En tal caso tendrías que hacer un select tal que así:
Select codigo, Cliente, count(id) as NVentas, sum(importeTotal) as Totalventas from ventas where fechaVenta between #01/01/2009# and #12/31/2009#" group by codigo, cliente 
Donde código es el código de cliente, Cliente es el nombre de este, id es el id de cada registro de venta e importetotal es el campo donde se indica el importe de cada venta.
Puedes añadir los campos que quieras al select, lo único ten en cuenta que los campos que añadas tienes que ponerlos en a continuación del group by salvo que sean campos con los que hagas operaciones, de suma, cuenteo, etc. Además ten en cuenta que si pones un campo por el que no se pueda agrupar por ej. id te saldrá un registro por cada registro de la tabla de ventas, tienes que poner campos que se repitan por ej. el nombre del cliente al que se realiza la venta, el código, la fecha etc.
Te agradezco tu valiosa aportación, me ayudaste bastante, de hecho andaba algo perdido, me diste una excelente solución, saludos y mucha suerte

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas