** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Formulario condicional
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoFormulario condicional

 Responder Responder
Autor
Mensaje
01loko Ver desplegable
Asiduo
Asiduo


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 475
Enlace directo a este mensaje Tema: Formulario condicional
    Enviado: 04/Diciembre/2018 a las 13:11
Lo he llamado asi, por llamarlo de alguna manera, me explico:
Tengo un formulario  y quiero insertar subformularios (formulario 2) en funcion de necesidades (si tengo mas de un cliente que presentar, mostrare 2 o mas subformularios)
Si la respuesta a una consulta es 1 cliente:
Formulario 1 + subformulario2 (con los resultados de un cliente (ancho:x, alto x, posicion superior 0.09; izquierda: 0,09))

Si la respuesta a una consulta es 2 clientes:
Formulario 1 + subformulario2 (con los resultados de cliente1  (ancho:x, alto x, posicion superior 0.09; izquierda: 0,09)) + subformulario2 (con los resultados de cliente 2 (ancho:x, alto x, posicion superior 4.09; izquierda: 0,09))

no quiero ocultarlos, sino que los inserte segun necesidad

la pregunta:
¿Se puede insertar un subformulario ya creado desde linea de codigo y su posicion?


Recordar de que soy nuevo y estoy aprendiendo.
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 11778
Enlace directo a este mensaje Enviado: 04/Diciembre/2018 a las 19:24
Hola,

Para generar controles (un subformulario no es mas que un control)  en tiempo de ejecución es necesario poner el formulario en modo diseño. 

En un caso como este yo intentaría "minimizar daños". O sea, establecer un máximo de clientes a visualizar y tener ya los controles subformularios a punto. Se trataría de hacerlos visibles o no a demanda y, para evitar tener que crear n formularios, utilizar Query's como SourceObject de los controles subformulario.

Un saludo

Xavi, un minyó de Terrassa

Mi web
Arriba
01loko Ver desplegable
Asiduo
Asiduo


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 475
Enlace directo a este mensaje Enviado: 10/Diciembre/2018 a las 12:27
Gracias Xavi, creo que lo que dices es lo que he estado intentando, lo he conseguido mediante un codigo encontrado por la web:

 'Código de prueba
' eduardo@olaz.net
' Junio de 2002
' **************
Dim frm As Form
Dim strFormulario As String
Const conFilas As Long = 20 'numero de formularios
Const conColumnas As Long = 20
Const conAncho As Long = 15000
Const conAlto As Long = 2000
Const conSeparacion As Long = 450
Const conMargenX As Long = 40
Const conMargenY As Long = 40
Const conComilla As String = """"
Const conIncrementoColor As Long = 65536
Dim lngFila As Long
Dim lngColumna As Long
Dim lngX As Long
Dim lngY As Long
Dim ctlEtiqueta As Control
Dim ctlLabel As Control, ctlText As Control
Dim ctlBoton As Control
Dim intDataX As Integer, intDataY As Integer
Dim intLabelX As Integer, intLabelY As Integer
Dim colColor As Long
Dim aControles() As Control
Dim strCodigoBotonSalir As String
Dim mdlFormulario As Module
ReDim aControles(conColumnas, conFilas)
' Crea el nuevo formulario
Set frm = CreateForm
'colColor = 0 * conIncrementoColor \ 16
With frm
.RecordSelectors = False
.NavigationButtons = False
.Width = 7300
.ScrollBars = 0
.DividingLines = False
.MinMaxButtons = 0
End With

For lngFila = 0 To 4 'conFilas - 1
lngY = lngY + conSeparacion + conAlto
If lngY = conSeparacion + conAlto Then lngY = conSeparacion
misubform = "zform" & lngFila
DoCmd.CopyObject , misubform, acForm, "Formulario2"
'For lngColumna = 0 To conColumnas - 1
lngColumna = 10
lngX = lngX + conAlto + conSeparacion
If lngX = conSeparacion + conAlto Then lngX = conSeparacion
Set aControles(lngColumna, lngFila) = CreateControl(frm.Name, acSubform, , misubform, "", _
lngX, lngY, conAncho, conAlto)
Set ctlEtiqueta = aControles(lngColumna, lngFila)
With ctlEtiqueta
.SourceObject = misubform
'.BackColor = colColor
'.BackStyle = 1
End With
colColor = colColor + conIncrementoColor
'Next lngColumna
lngX = 0
Next lngFila
Set ctlBoton = CreateControl(frm.Name, acCommandButton, , "", "", 8000, 8000, 1500, 500)
ctlBoton.Caption = "Salir"
ctlBoton.Name = "cmdSalir"
Set mdlFormulario = frm.Module
strCodigoBotonSalir = "Private sub " & ctlBoton.Name & "_Click()" & _
vbCrLf & _
vbCrLf & _
"msgbox " & conComilla & "Cierro el formulario" & conComilla & _
" & me.name " & _
vbCrLf & _
" docmd.Close" & _
vbCrLf & _
"End Sub"
With mdlFormulario
.InsertText strCodigoBotonSalir
End With
' Restaura el formulario.
DoCmd.Restore
Erase aControles
Set ctlEtiqueta = Nothing
strFormulario = frm.Name
DoCmd.Save acForm, strFormulario
DoCmd.OpenForm strFormulario
Debug.Print Forms(strFormulario).Width
Set frm = Nothing
End Sub


esta modificado a mi gusto, pero hace lo que deseaba.
Se puede cerrar el hilo y muchas gracias otra vez
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable