Te adjunto la BD de ejemplo actualizada a la nueva consulta.
http://www.filebig.net/files/NWi4NGkcES
Te explico los cambios que le hice yo:
1º/ a la tabla Criterios le añadí un campo Tipo (texto)
2º/ a la tabla empresas le añadí un campo Tipo (texto), y lo configuré como un cuadro combinado (en la pestaña búsqueda), con tipo de origen en Tabla/Consulta, y este origen: SELECT Criterios.Tipo FROM Criterios GROUP BY Criterios. Tipo ORDER BY Criterios.Tipo;
3º/ Le añadí esos campos a los formularios correspondientes.
4º/ En el subformulario ResultadosEvaluaciones, en el combo Criterio, le quité el origen de la fila, y le programé el siguiente código en el evento al entrar:
Private Sub Criterio_Enter()
Dim miSQL As String
Dim miTipo As String
miTipo = Nz(DLookup("Tipo", "Empresas", "[CIF]='" & Forms!Evaluaciones.Empresa.Value & "'"), "")
If miTipo = "" Then
Me.Criterio.RowSource = ""
Exit Sub
End If
miSQL = "SELECT Criterios.IdCriterio, Criterios.Criterio FROM Criterios " _
& "WHERE (((Criterios.Tipo)='" & miTipo & "')) ORDER BY Criterios.Criterio"
Me.Criterio.RowSource = miSQL
Me.Refresh
End Sub
Con esto ya te filtra el combo de criterios según el tipo de empresa seleccionada en el Formulario Evaluaciones.
En cuanto a la segunda parte, no la entendí muy bien, pero te planteo dos opciones (va la 2ª en la nueva BD: Alt 02)
Opción 1: cambiar el cuadro combinado Criterio por un cuadro de lista (creo que no es lo que buscas...)
opción 2: ocultas el cuadro combinado Criterio, y añades un cuadro de texto con origen de control =Criterio.column(1) , y ponerle al lado un botón de comando que abra una nueva tabla donde se muestren los criterios correspondientes, y al elegir uno, te lo coloque en ResultadoEvaluaciones.
El código para el botón, sería:
Private Sub cmdAñadirCrit_Click()
Dim miTipo As String
Dim miFiltro As String
miTipo = Nz(DLookup("Tipo", "Empresas", "[CIF]='" & Forms!Evaluaciones.Empresa.Value & "'"), "")
miFiltro = "[Tipo]='" & miTipo & "'"
DoCmd.OpenForm "SeleccionCriterio", , , miFiltro, , acDialog
End Sub
El formulario SeleccionCriterio, lo diseñas con distribución tabular, permitir ediciones, agregar y eliminar a No, entrada de datos No, y le añades un botón en el pie de formulario con este código:
Private Sub cmdAceptar_Click()
Dim miCriterio As Integer
miCriterio = Me.IdCriterio.Value
DoCmd.Close acForm, Me.Name
Forms!Evaluaciones.ResultadosEvaluaciones.Form.Criterio.Value = miCriterio
End Sub