Filtros access

Tengo un problema tengo una tabla que se llama clase y otras dos tres tablas más que están ligadas a esta tabla.
Necesito filtrar la tabla clase y me dice que no puedo filtrarla porque está relacionadas con otras tablas, estoy usando un código que me encontré en internet, que a continuación verás:
___________________________________________________________________
Option Compare Database
Option Explicit

'Un objeto clsControlFilter para cada control por el que queramos filtrar
Dim clCtrlFilter As clsControlFilter
Dim clCtrlFilter2 As clsControlFilte
Dim FiltroMix As ClsFiltroMix

_____________________________________________________________
Private Sub btnAbreForm_Click()
'Generamos el botón para abrir el formulario que filtramos usando el asistente
    Dim stDocName As String
    Dim stLinkCriteria As String
    stLinkCriteria = Nz(Me.txtWhere) ' Sólo tenemos que asignar a mano el valor de txtWhere
    stDocName = "registrar especies"
   DoCmd.OpenForm stDocName, , , stLinkCriteria
End Sub
________________________________________________

Private Sub Form_Close()
Set clCtrlFilter = Nothing
Set clCtrlFilter2 = Nothing
Set FiltroMix = Nothing
End Sub

_________________________________________________________________
Private Sub Form_Open(Cancel As Integer)
' Empezamos por el objeto FiltroMix.

Inicio:
Set FiltroMix = New ClsFiltroMix
With FiltroMix
    Set .CtrlTxtWhere = Me.txtWhere ' El cuadro de texto en el que se escribirá el filtro
End With

' Continuamos asignando propiadades a los distintos objetos clsControlFilter
Set clCtrlFilter = New clsControlFilter
With clCtrlFilter
  
  .Alias = "PHYLUM" ' Los alias sólo son necesarios si queremos usar una fórmula
   .tipoDato = dbInteger
   Set .FiltroMix = FiltroMix         ' Siempre tenemos que indicar en qué objeto clsfiltroMix
                               ' mezclamos los controles
    Set .ctrlFiltro = Me.phylum ' Indicamos el control cuyo contenido se
                                         ' usará como filtro.
    .CampoaFiltrar = "id_phylum"         ' por el contenido del control
End With
Set clCtrlFilter2 = New clsControlFilter
With clCtrlFilter2
 .Enlace = y ' Opcionalmente, podemos hacer que un filtro se enlace con el anterior
              ' con un operador distinto de AND
.tipoDato = dbInteger
 .Alias = "clase"
Set .FiltroMix = FiltroMix
Set .ctrlFiltro = Me.clase
.CampoaFiltrar = "id_clase"
 End With
 
End Sub
 ____________________________________________________________________
Private Sub phylum_Click()

With clase 
.RowSource = "select id_clase, clase from [Clase de Animal] where id_phylum =" & Me.phylum & " order by 2"
      .Requery
End With
  
End Sub

____________________________________________________________________
Private Sub clase_Click()
With tipo
        .RowSource = "select id_tipo, Nombre_animal_esp from Tipo where id_clase =" & Me.clase & " order by 2"
      .Requery
   End With
   With GRUPO
        .RowSource = "select id_grupo, grupo from grupo where id_clase =" & Me.clase & " order by 2"
      .Requery
   End With
   With orden
        .RowSource = "select id_orden, orden from Orden where id_clase =" & Me.clase & " order by 2"
      .Requery
   End With
End Sub

___________________________
No soy experta creando códigos lo que haga es buscar en internet y utilizarlos y modificarlos para lo que necesito.
Como verás en el último código, pertenece a la tabla clase que este filtra tres campo más. Ahora lo que quiero es usar otro filtro que lo lo captura el campo txtWhere y luego vamos a botón donde llama el formulario, pero cuando trato de filtrar por el campo id_clase me dice que "Puede que el campo [Id_clase] especificado haga referencias a más tabla de as mostradas en la cláusula FROM de la instrucción SQL."
Los datos los voy llenando en otra tabla que se llama especies., ¿Qué tengo que hacer?, por favor, Ayúdame!
Tendrás alguna otra forma que pueda filtrar los tres campo, yo lo he hecho de la siguiente forma.
Private Sub clase_Click()
With tipo
        .RowSource = "select id_tipo, Nombre_animal_esp from Tipo where id_clase =" & Me.clase & " order by 2"
      .Requery
   End With
   With GRUPO
        .RowSource = "select id_grupo, grupo from grupo where id_clase =" & Me.clase & " order by 2"
      .Requery
   End With
   With orden
        .RowSource = "select id_orden, orden from Orden where id_clase =" & Me.clase & " order by 2"
      .Requery
   End With
End Sub

___________________________
Saludos,
Marilin

1 Respuesta

Respuesta
No entiendo cual es tu pregunta.
Perdón, je je. Bueno en realidad tengo las tablas llamadas: CLASE, GRUPO, TIPO, ORDEN, las tres últimas le puse el id_clase de la tabla CLASE, están relacionadas. Quiero Filtrar en forma de cascada, que antes de escoger el grupo, tipo y orden me pueda filtrar por clase, cuando coloco él código me marca un error "Puede que el campo[id_clase] especificado haga referencia a más de una tabla de las mostradas en la cláusula from de la instrucción SQL" y no puedo Filtrar. Estoy filrando a través de un formulario que contiene los datos para lleguir llenado. También he intentado con el mismo formulario, parándome en le cuadro combinado de la tabla Clase y me manda el mismo error:
Mira el código que encontré en internet y el que estoy usando:
Private Sub Form_Open(Cancel As Integer)
Inicio:
Set FiltroMix = New ClsFiltroMix
With FiltroMix
    Set .CtrlTxtWhere = Me.txtWhere   
End With
Set clCtrlFilter = New clsControlFilter
With clCtrlFilter
.tipoDato = dbInteger
 .Alias = "GRUPO"
Set .FiltroMix = FiltroMix
Set .ctrlFiltro = Me.Clase
.CampoaFiltrar = "id_clase"
End With
End Sub

___________________________
Private Sub btnAbreForm_Click()
    Dim stDocName As String
    Dim stLinkCriteria As String
    stLinkCriteria = Nz(Me.txtWhere) 
    stDocName = "registrar especies"
   DoCmd.OpenForm stDocName, , , stLinkCriteria
End Sub
_____________________________
Yo no sé de VBA, solo busco en internet código, los veo y analizo para hacerles modificaciones y adaptarlo a lo que necesito.
Gracias por atender a mi problema.
Como no tengo internet en mi casa, nos seguimos contactando el lunes que estoy en el trabajo.
Saludos,
Marilin
Como veo que no tienes mucha experiencia programando te sugiero visites el siguiente link:
http://www.mvp-access.com/foro/forum_topics.asp?FID=1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas