Access - ¡¡¡¡AYUDA con este filtro por favor!!!!

 
Vista:

¡¡¡¡AYUDA con este filtro por favor!!!!

Publicado por Victor Manuel (101 intervenciones) el 01/05/2007 01:19:53
Tengo un formulario con 4 Combobox y un checkbox, estos para filtrar informacion a un subformulario. Detalles:

El primer Combobox tienes tres opciones= Pendientes, Terminados y Todos.

Cuando doy en pendientes me muestra informacion de los trabajos que tienen fecha de inicio pero no tienen fecha de finalizacion, cuandole doy en terminados me muestra los que ya se han terminado y todos pues todos los registros.

Los demas combos son los siguientes:

Uno se llama Empresa en el tengo todas las empresas a las que les presto mis servicios, Otro se llama Organizacion, tengo los nombres de las 4 empresas que tengo registradas o vaya, las que van a prestar el servicio y el ultimo donde escojo a que objeto o cual va a ser el tipo de trabajo a realizar. El checkbox se llama Pagado y cuando lo activo me muestra los trabajos que ya estan pagados o los que no lo estan.

Estos ultimos los utilizo simplemente para buscar informacion mas exacta y me lo muestre en el subformulario, este es el codigo del boton para filtrar la informacio al subformulario:

Private Sub Image46_Click()
Dim strfiltro As String, _
strEmpresa As String, _
strOrganizacion As String, _
strEmbarcacion As String, _
strPagado As String, _
Columna As Control

'Construyo la cadena para filtrar por Empresa
On Error GoTo Image46_Click_TratamientoErrores
If Not IsNull(Me.Empresa) And Me.Empresa <> "" Then
strEmpresa = BuildCriteria("Empresa", dbText, "Forms!pendientes!Empresa")
Else
strEmpresa = ""
End If
'Contruyo la cadena para ejecutar si Organización no es nulo
If Not IsNull(Me.Organizacion) And Me.Organizacion <> "" Then
strOrganizacion = BuildCriteria("Organizacion", dbText, "Forms!pendientes!Organizacion")
Else
strOrganizacion = ""
End If
'Construyo la cadena para ejecutar si Embarcación no es nulo
If Not IsNull(Me.Embarcacion) And Me.Embarcacion <> "" Then
strEmbarcacion = BuildCriteria("Embarcacion", dbText, "Forms!pendientes!Embarcacion")
Else
strEmbarcacion = ""
End If
'Construyo la cadena para filtrar si esta pagado o no
If Me.Pagado.Value = 0 Or Me.Pagado.Value = -1 Then
strPagado = BuildCriteria("Pagado", dbText, "Forms!pendientes!Pagado")
Else
strPagado = ""
End If
' Según esten vacías o no las distintas cadenas construyo el filtro final
If strEmpresa <> "" Then
strfiltro = strEmpresa
Else
strfiltro = ""
End If
If strOrganizacion <> "" Then
If strfiltro <> "" Then
strfiltro = strfiltro & " AND " & strOrganizacion
Else
strfiltro = strOrganizacion
End If
End If
If strEmbarcacion <> "" Then
If strfiltro <> "" Then
strfiltro = strfiltro & " AND " & strEmbarcacion
Else
strfiltro = strEmbarcacion
End If
End If
If strPagado <> "" Then
If strfiltro <> "" Then
strfiltro = strfiltro & " AND " & strPagado
Else
strfiltro = strPagado
End If
End If
If strfiltro <> "" Then
Form_SubPendientes.Filter = strfiltro
Form_SubPendientes.FilterOn = True
Else
Form_SubPendientes.Filter = ""
Form_SubPendientes.FilterOn = False
End If
' ajusto el ancho de cada columna del subformulario
On Error Resume Next
For Each Columna In Me.SubPendientes.Form.Controls
Columna.FontName = "Verdana"
Columna.ColumnWidth = -2
Next
Image46_Click_Salir:
On Error GoTo 0
Exit Sub

Image46_Click_TratamientoErrores:
MsgBox "Error " & Err.Number & " en proc.:(" & Err.Description & ")"
Resume Image46_Click_Salir
End Sub

El problema radica en que si yo utilizo los tres combos ultimos y el checkbox si me muestra la informacion que se filtra mediante el boton hacia el subformulario y de ahi le clickeo en otro boton para que me mande mostrar la informacion. Este es el codigo del boton para el informe:

Private Sub Informe_Click()
DoCmd.OpenReport "Pendientes", acViewPreview, Me.SubPendientes.Form.Filter
End Sub

Como veran utilizo la propiedad filter ya que en el codigo del boton de filtrado hacia el formulario dependiendo de que informacion quiera ver en e form pues se la asigno a su filter y asi tomo la condicion para ver el informe.

Pero cuando solamente uso el combobox para mostrar ya sea Los terminados, los que estan pendientes o todos los registros no me muestra la informacion que me muestra en el informe. Aui esta el evento del combobox donde elijo las tres opciones:

Dim sql, Var1, Var2 As String
Var1 = "Where FechaF Is Null"
Var2 = "Where Not FechaF is Null"
If Combo47 = "Pendientes" Then
sql = "SELECT * FROM TablePrincipal " & Var1
ElseIf Combo47 = "Terminados" Then
sql = "SELECT * FROM TablePrincipal " & Var2
ElseIf Combo47 = "Todos" Then
sql = "SELECT * FROM TablePrincipal Order By Val(Numero), Numero"
End If
SubPendientes.Form.RecordSource = sql

Uso una instruccion sql que le dice el boton que es lo que me tiene que enseñar en el subform mas no me lo enseña en el informe.

He pensado que con una instruccion que la agregue al filtro del informe o haciendo una consulta y cambiarle el origen de datos al informe para que si estan en blanco los tres combobox y el combobox primero este en alguna opcion me jale el origen de la consulta de donde debe sacar los datos o no se, ya he intentado de varias maneras pero no puedo hacerlo, espero alguien pueda ayudarme o darme alguna explicacion de algo que pueda ayudarme a resolver este dilema, Gracias por su tiempo, Saludos.

Victor
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:¡¡¡¡AYUDA con este filtro por favor!!!!

Publicado por Chea (1015 intervenciones) el 01/05/2007 11:01:28
Estás pasando el filtro en el argumento FilterName de docmd.OpenReport y deberías usar el WhereCondition. FilterName se utilizar para consultas guardadas.

Prueba así, añadiendo una coma delante de la condición de filtro:
DoCmd.OpenReport "Pendientes", acViewPreview,, Me.SubPendientes.Form.Filter

Por otro lado, veo que utilizas dbText en la función BuidCriteria cuando evaluas el CheckBox, cuando lo lógico parece que sería usar dbBoolean.

Saludos
José Bengoechea Ibaceta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¡¡¡¡AYUDA con este filtro por favor!!!!

Publicado por Victor Manuel (1 intervención) el 02/05/2007 16:49:22
Hice lo que me aconsejaste, bueno, me sigue filtrando la informacion al informe solamente cuando busco mediante los 3 combos o el checkbox, pero cuando le doy en el combo para buscar entre terminados, pendientes o todos si me filtra al subform pero no al informe.

Y ahora si utilizo los combos y despues querer buscar por terminados, pendientes, etc como que se queda con el filtro de los otros, esto lo puedo solucionar de la forma en que si yo le doy click al combo para buscar por determinados trabajos que me borre el filtro anterior, pero de todos modos no me filtra la informacion al informe.

Debe de haber alguna forma, mas no soy capaz de resolverla, Saludos

Victor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar