Abrir un formulario basado en una variable
Seguro que para los entendidos en Visual Basic, no creo que sea muy complicado lo que pregunto, aunque para mí es un reto en este lenguaje. Intentaré explicarme lo mejor que pueda.
Tengo un formulario con estos controles:
- Un cuadro de texto txtId
- Un botón de comando CmdFiltros y dos cuadros combinados ocultos: Comb1 y Comb2 (Cuando se pulsa CmdFiltros, se hacen visibles Comb1 y Comb2.
- Y un botón de comando CmdEnviar
TxtId, Comb1 y Comb2 almacenan texto.
La rutina básica que deseo lograr al hacer clic en CmdEnviar sería la siguiente:
Private Sub CmdEnviar_Click()
Dim stDocName As String
Dim V as String
stDocName = "F"
‘ objetivo: definir el valor V
‘ …………………
''DoCmd.OpenForm stDocName, , , V
End Sub
Es decir, se trata de crear una variable V para que abra el formulario F al hacer clic
(F tiene Origen de Registro una consulta C, basada a su vez, en una tabla T).
La pregunta sería obtener las sentencias de código para definir el valor de V dependiendo de unas condiciones:
a) Si:
El valor de Comb1 es Null y el valor de Comb2 es también Null (esto equivale a que el usuario no ha seleccionado ningún valor de ninguno de los dos combos, o bien, que ni siquiera ha pulsado CmdFiltros que los hace visibles),
ENTONCES:
V Debe tomar el valor txtId, y el procedimiento debe abrir F con la condición de búsqueda V (se muestran los registros que cumplen la condición de la consulta C con campo1=txtId).
b) Si:
Comb1 tiene un valor distinto de Null (o sea, el usuario ha hecho selección en Comb1) y el valor de Comb2 es Null (el usuario no selecciona nada en Comb2),
ENTONCES:
V debe tomar un valor compuesto por txtId y además Comb1, dado que el formulario F mostraría los registros que cumplen la condición de la consulta C (campo1 =txtId y campo2=Comb1).
c) Si:
Comb1 tiene valor distinto de Null y Comb2 tiene un valor distinto de Null,
ENTONCES:
V Tomaría un valor compuesto por txtId, Comb1 y Comb2, para que al abrir F se tengan
los registros que cumplen C (campo1= txtId, campo2=Comb1 y campo3=Comb2).
Vamos que por ejemplo para éste último caso c), básicamente F mostraría lo que sería equivalente a un Select campo1, campo2, campo3 From Tabla where (campo1=txtId and campo2=Comb1 and campo3=Comb2).
Espero que lo entiendan y les agradecería mucho si me pueden ayudar.