Filtrar 2 campos de access a un msflexgrid
Estoy haciendo una aplicación que me guarde y reporte datos de ventas en un bd de access, ya logre modificar algunos códigos que encontré y le añadí a mi form, ahora me suma desde el mismo flexgrid donde se muestran los datos consultados, así mismo que me muestre por selección de filtrado de acuerdo a descripción, fecha, cantidad.. Pero mi problema es que no puedo hacer que me muestre los datos consultados en el flexgrid pero condicionándome a 2 campos, mejor dicho que me filtre por fecha y descripción de artículos en simultaneo, pues si lo muestro por descripción me muestra todo lo registrado a dicha descripción pero no distingue la fecha de registro, pero si lo pongo por fecha me pone todo los artículos de esa fecha en particular y lo que deseo es poder obtener datos de por medio de descripción pero de esa fecha en particular... Toda sugerencia es bienvenida .. Llevo 2 días buscando y encontré varios métodos de como hacer pero nungino me resulto bueno ... Pata mayor información pongo el código:
Private Sub CargaGrid(XTipo As String)
On Error Resume Next
Dim MStr As String
Dim MStr2 As String
MStr = UCase(Combo1)
MStr2 = UCase(Combo2)
dia = CDate(Fecha)
Configurar_Grilla
sql = ""
sql = sql & "Select * From Ventas Where "
Select Case XTipo
Case Is = "Fecha"
sql = sql & "((InStr([Ventas].[Fecha],'" & dia & "')<>0)) "
Case Is = "Hora"
sql = sql & "((InStr([Ventas].[Hora],'" & MStr & "')<>0)) "
Case Is = "Cantidad"
sql = sql & "((InStr([Ventas].[Cantidad],'" & MStr2 & "')<>0)) "
Case Is = "Precio"
sql = sql & "((InStr([Ventas].[Precio],'" & MStr & "')<>0)) "
Case Is = "Descripcion"
sql = sql & "((InStr([Ventas].[Descripcion],'" & MStr & "')<>0)) "
Case Is = "TODOS"
sql = ""
sql = sql & "Select Ventas.Fecha,Ventas.Descripcion From Ventas WHERE "(Fecha=#" & dia & "' & " And Descripcion =' " & MStr & " ')
End Select
Set Rec = cn.Execute(sql)
If Rec.EOF = True Then
Rec.Close
Exit Sub
End If
Do While Rec.EOF = False
DoEvents
Grid1.AddItem Rec("Fecha") & vbTab & Rec("Hora") & vbTab & Rec("Cantidad") & vbTab & Rec("Descripcion") & vbTab & Rec("Precio") & vbTab & Rec("Total")
Rec.MoveNext
Loop
Rec.Close
End Sub
Private Sub Form_Load()
Configurar_Grilla
AbreBD
CargaGrid "Fecha"
MTipo = "Descripcion"
suma
End Sub
Como verán en el form_load hago la llamada al procedimiento de cargagrid dependiendo el xtipo seleccionado, pero en el de "todos" es donde tengo el problema es donde se supone hace que me filtre los 2 campos ala vez para mostrármelos al flexgrid.. Pero no me sirve así que lo quite..
Ademas no entiendo mucho de sentencias sql
Private Sub CargaGrid(XTipo As String)
On Error Resume Next
Dim MStr As String
Dim MStr2 As String
MStr = UCase(Combo1)
MStr2 = UCase(Combo2)
dia = CDate(Fecha)
Configurar_Grilla
sql = ""
sql = sql & "Select * From Ventas Where "
Select Case XTipo
Case Is = "Fecha"
sql = sql & "((InStr([Ventas].[Fecha],'" & dia & "')<>0)) "
Case Is = "Hora"
sql = sql & "((InStr([Ventas].[Hora],'" & MStr & "')<>0)) "
Case Is = "Cantidad"
sql = sql & "((InStr([Ventas].[Cantidad],'" & MStr2 & "')<>0)) "
Case Is = "Precio"
sql = sql & "((InStr([Ventas].[Precio],'" & MStr & "')<>0)) "
Case Is = "Descripcion"
sql = sql & "((InStr([Ventas].[Descripcion],'" & MStr & "')<>0)) "
Case Is = "TODOS"
sql = ""
sql = sql & "Select Ventas.Fecha,Ventas.Descripcion From Ventas WHERE "(Fecha=#" & dia & "' & " And Descripcion =' " & MStr & " ')
End Select
Set Rec = cn.Execute(sql)
If Rec.EOF = True Then
Rec.Close
Exit Sub
End If
Do While Rec.EOF = False
DoEvents
Grid1.AddItem Rec("Fecha") & vbTab & Rec("Hora") & vbTab & Rec("Cantidad") & vbTab & Rec("Descripcion") & vbTab & Rec("Precio") & vbTab & Rec("Total")
Rec.MoveNext
Loop
Rec.Close
End Sub
Private Sub Form_Load()
Configurar_Grilla
AbreBD
CargaGrid "Fecha"
MTipo = "Descripcion"
suma
End Sub
Como verán en el form_load hago la llamada al procedimiento de cargagrid dependiendo el xtipo seleccionado, pero en el de "todos" es donde tengo el problema es donde se supone hace que me filtre los 2 campos ala vez para mostrármelos al flexgrid.. Pero no me sirve así que lo quite..
Ademas no entiendo mucho de sentencias sql
1 respuesta
Respuesta de djraulm
1