Filtro por 2 combos en formulario continuo.

Tengo un formulario continuo, con origen en mi tabla llamada Tbl_Rebalanceos, con estos campos.

LeadCode, Machine Number, Machine Vendor, Machine Model, Machine Type, Process Time todos estos de tipo Texto y este campo Acivar como tipo Si/No.

Mi campo LeadCode esta Indexado y como clave principal.

Mi formulario tiene como origen de datos mi tabla Tbl_Rebalanceos y en mi formulario tengo 2 combos con los que pretendo filtrar ya sea por "LeadCode" o por "Machine Number" o con ambos combos el campo LeadCode solo puede tener un Machine Number asignado pero el campo Machine Number puede tener diferentes LeadCodes asigandos. Quise filtrar con mi combo CboLeadCode pero me aparece este error aunque creo para hacer filtros con ambos combos no me servirá de mucho lo que tengo es por ello que pido ayuda. Esto es lo que tengo:

Creo entender el error pero si quito el indice de mi tabla al tratar de filtrar con el combo los datos se me agregan a mi tabla y yo no requiero eso lo que necesito es visualizar los datos de mi tabla y poder ir filtrando con los combos.

1 respuesta

Respuesta
1

En principio eso es porque al "buscador" le has puesto Origen de control. Vamos a ver si me acuerdo del nombre de los campos. Crea un cuadro combinado sin el asistente y en sus propiedades-otras-Nombre ponle, por ejemplo, PorMachine. En su solapa Datos pon el cursor en Origen de la fila, haz clic en el botón de tres puntos(...) que está a la derecha. Añade la tabla Tbl_ Rebalanceos y lleva la cuadricula de diseño el campo MachineCode y pulsa el botón de Agrupar. Cierra. Haz lo mismo para otro combinado llamado Porcodigo y en la cuadrícula de diseño pon el campo LeadCode. En las propiedades-en Eventos-Después de actualizar del combindo PorMachines, pon

Porcodigo.rowsource="select leadcode from Tbl_rebalanceos where machinecode=forms!nombre del formulario!pormachine"

form.recordsource="select * from Tbl_rebalanceos where machinecode=forms!nombre del formulario!pormachine"

Así, cuando en el combinado Por machine elijas un número, por un lado, el origen de registros del formulario serán aquellos registros que tengan ese MachineCode y por otro lado en el combinado PorCodigo, solo te aparecerán aquellos Leadcode que correspondan a ese Machinecode.

Por último, en el evento después de actualizar del combinado PorCodigo ponle

form.recordsource="select * from Tbl_rebalanceos where leadcode=forms!nombre del formulario!porcodigo"

Así, si no tocas el de pormachine, y abres directamente el combinado PorCodigo, te aparecerán TODOS los leadCode, y al seleccionar uno, el origen de registros del formulario es aquel cuyo LeadCode sea igual al que has elegido.

En fin, espero haberme explicado(como ves, con cuatro palabras ha bastado)

Gracias por conteastarIcue.

El filtro del primer combobox ya lo tenia solucionado ya que como comentas le tenia asignado origen del control a los Combos.

Ahora no encuentro como poner el filtro por el combo CboMaquina y una vez filtrada la maquina en este combo si el usuario requiere pudiera filtrar también por el CboLeadcode. Entiendo tu propuesta pero no la he podido llevar acabo:

Porcodigo.rowsource="select leadcode from Tbl_rebalanceos where machinecode=forms!nombre del formulario!pormachine"

form.recordsource="select * from Tbl_rebalanceos where machinecode=forms!nombre del formulario!pormachine"

Me marca error 2580 en tiempo ejecución indicándome que el origen de registros no existe.

Esto es lo que implemente en el primer combo:

Dim MiSql As String
MiSql = "SELECT LEADCODE, [MACHINE NUMBER], ACTIVAR FROM [TblRebalanceos]"
If Me![CboLeadcode] <> 0 Then
MiSql = MiSql & " Where LEADCODE = '" & Me.CboLeadcode & "'"
End If
MiSql = MiSql & " Order By LEADCODE Asc"
Me.RecordSource = MiSql

Este es el error que me envia con lo que me propones:

Gracias y espero me puedas aclarar mis dudas.

Saludos.

Si quieres, mándame un mensaje a [email protected] y te mando un par de ejemplos, hechos sobre tus campos. Si lo haces, en el asunto del mensaje pon tu alias Erick Gamer porque si no se quien me lo manda, no los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas