Access - Crear cuadro de texto por código

 
Vista:
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Crear cuadro de texto por código

Publicado por Pablo (328 intervenciones) el 21/01/2022 19:46:24
Hola a todos:
Pues eso, me gustaría saber si se puede crear un cuadro de texto por código y también una casilla de verificación. Quiero hacer un formulario que en principio no se cuántas columnas va a tener, a lo mejor también se pude hacer con una consulta de referencias cruzadas. En la izquierda irían las referencias y a su derecha una columna por cada tienda que, pueden ser 1 o 2 o 3...
Espero haberme explicado
Gracias
Pablo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Vba Access
Val: 485
Plata
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Crear cuadro de texto por código

Publicado por Vba Access (26 intervenciones) el 22/01/2022 18:32:42
Hola.

Puedes utilizar el método : CreateControl
https://docs.microsoft.com/en-us/office/vba/api/access.application.createcontrol
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Hermano, puede ayudarme con un sistema

Publicado por Brito Nepta (1 intervención) el 16/12/2022 17:48:03
Buen dia hermano, tengo un sistema y quisiera saber si si lo puedo enviar por correo, para la venta de un juego que se llama animalitos, el cual cuanta con un total de 38 animalitos enumerados cada uno esta, ejemplo: 0= delfin, 00 = ballena, 01= carnero etc...
y hay 11 horarios disponibles. osea cada hora hay un nuevo sorteo o subastas de esos numeros animalitos, no se como bloquear que cuando la hora del sorteo se termine me bloque ese sorteo, y no puedo calcular el total de la venta por cada sorteo, y en general por el dia, y otra cosa , debo agregar que animal o numero salio por hora de sorteo para saber quienes fueron los ticket ganadores, esperando una respuesta de usted mi estimado, y agradeciendo de ante mano un Venezolano que vive una mala situacion familiar, con mucha desnutrucion por la situacion economica de mi pais,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo

Crear cuadro de texto por código

Publicado por Eduardo (334 intervenciones) el 23/01/2022 22:01:19
Le dejo el código para crear este formulario: Consta de Un botón de comando , 10 cuadros de texto y 10 CheckBox


form_por_codigo

Copie estas 2 funciones en un módulo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Function CreaForm(strControlName As String)
  Dim frm As Form, ctlFrame As Control, ctlCommand As Control
  Dim intLeft As Integer, intRight As Integer
  Dim x As Integer
 
  Set frm = CreateForm
 
  For x = 1 To 20 Step 2
      Set ctlFrame = CreateControl(frm.Name, acTextBox, , , , 150, x * 200)
      Set ctlCommand = CreateControl(frm.Name, acCheckBox, , , , 2000, x * 200)
   Next x
 
     Set ctlCommand = CreateControl(frm.Name, acCommandButton, , , , _
    intLeft + 200, intRight + 200 * x)
 
With ctlCommand
  .Name = strControlName
  .Caption = strControlName
  .OnClick = "=CerrarFormulario(""" & frm.Name & """)"
End With
 
 
DoCmd.Restore
DoCmd.Save acForm, frm.Name
DoCmd.Close acForm, frm.Name
End Function
Public Function CerrarFormulario(fName As String)
    DoCmd.Close acForm, fName, acSaveNo
End Function

Llame la función desde cualquier parte asi:

1
Call CreaForm("prueba")

En donde prueba es el titulo del botón

Observe el código para cerrar el formulario desde el botón
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Crear cuadro de texto por código

Publicado por Pablo (328 intervenciones) el 24/01/2022 10:45:43
1
Hola
Acabo de leer la respuesta de Eduardo
Ayer vi de forma rapida la instrucción createcontrol, no conseguía hacerla funcionar y, buscando en la ayuda vi algo de que el formulario teñía que estar en vista…?? no era ni diseño ni formulario
Al pasar la instrucción createcontrol hay q grabar el formulario antes de pasarlo a vista formulario?
Hay que pasar la instrucción docmd.restore en todos los casos?
Hay que utilizar set nomvariable= O se puede omitir el set?

Hasta la tarde no podré hacer pruebas. Gracias
Pablo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo

Crear cuadro de texto por código

Publicado por Eduardo (334 intervenciones) el 24/01/2022 15:02:31
Si el formulario no se crear minimizado sobra Docmd.Restore
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo

Crear cuadro de texto por código

Publicado por Eduardo (334 intervenciones) el 24/01/2022 17:14:50
Le presento otro ejemplo más completo para crear un formulario con una etiqueta, un cuadro de texto y un botón de comando con una función que cierra el formulario.


crear_form_por_codigo_00

Ingreso el nombre del formulario y valido que no exista.


crear_form_por_codigo_01

Si hago clic en Aceptar se procede a crear el formulario.


crear_form_por_codigo_02

Observe que ya aparece el formulario en la lista de objetos.

CÓDIGO DEL BOTON CREAR

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
Private Sub btnCrear_Click()
 
  On Error GoTo hay_error
 
  Dim frmEmpleado As Form  ' objeto formulario
  Dim strName As String    ' nombre del formulario
  Dim ctl As Control       ' objeto control
  Dim btn As CommandButton ' objeto boton de comando
  Dim frm As Access.AccessObject
  Dim flag As Boolean
 
  DoCmd.SetWarnings (False)
 
  If IsNull(Me.ctlNombre) Then
     MsgBox "Se requiere el nombre del formulario", vbInformation, "Cuidado..."
     Me.ctlNombre.SetFocus
     Exit Sub
  End If
 
 'Verifico si ya existe el formulario
 
    For Each frm In Application.CurrentProject.AllForms
        If Trim(Me.ctlNombre) = frm.Name Then
            If MsgBox("El formulario " & Me.ctlNombre & " ya existe" & vbCrLf & _
            "¿Lo reemplaza", vbOKCancel + vbQuestion + vbDefaultButton2, "Cuidado...") = vbCancel Then
              flag = True
              Exit For
            End If
        End If
    Next frm
 
    If flag Then
      Exit Sub
    End If
 
  Set frmEmpleado = Application.CreateForm
 
  With frmEmpleado
     .Caption = "Empleado"
     .Width = 5000
     .Section(acDetail).Height = 2000
     .NavigationButtons = False
     .RecordSelectors = False
     .AutoCenter = True
     .PopUp = True
     .Modal = True
     .BorderStyle = 3
     strName = frmEmpleado.Name
  End With
 
 ' Incorporar cuadro de texto nombre del empleado
 
 Set ctl = Application.CreateControl(strName, acTextBox, , "", "", 3000, 500, 2500, 300)
 
 With ctl
   'nombre del cuadro de texto
   .Name = "txtNombre"
   .BackColor = vbWhite
   .ForeColor = vbBlack
   .FontBold = True
 End With
 
 'Incorporar etiqueta nombre del empleado
 
 Set ctl = Application.CreateControl(strName, acLabel, , "", "", 500, 500, 2500, 300)
 
 With ctl
   'nombre de la etiqueta
   .Name = "lblNombre"
   'titulo de la etiqueta
   .Caption = "Apellido del empleado"
   'Colores
   .BackColor = vbWhite
   .ForeColor = vbBlue
 End With
 
 'Creamos el botón
 
  Set btn = CreateControl(strName, acCommandButton, , "", "", 6000, 1200, 1000, 400)
 
    btn.Caption = "Cerrar"  'Titulo del botón
    btn.OnClick = "=CerrarFormulario(""" & Me.ctlNombre & """)"  'Llamada a la función desde el botón de comando
 
 'Guardamos el formulario
 
 DoCmd.Save , Me.ctlNombre
 
 'Abrimos el formulario creado
 
 DoCmd.OpenForm Me.ctlNombre
 
 'Cerramos este formulario
 
 DoCmd.Close acForm, Me.Form.Name
 
hay_error_exit:
  Exit Sub
 
 
hay_error:
    If Err.Number < 0 Then 'Error de automatización
      Exit Sub
    Else
      MsgBox "Ocurrió el error " & Err.Number, vbInformation, "Cuidado..."
    Resume hay_error_exit
   End If
 
 
End Sub

El código esta documentado sobre cada control que se va creando

CÓDIGO DE LA FUNCIÓN

1
2
3
Public Function CerrarFormulario(fName As String)
    DoCmd.Close acForm, fName, acSaveNo
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Crear cuadro de texto por código

Publicado por Pablo (328 intervenciones) el 24/01/2022 18:32:42
Hola Eduardo:
Lo curraste!, gracias
Te cuento lo que quiero hacer
Tengo un formulario para añadir referencias de productos a cestas de idem de cada tienda ("marcar_referencias")
Al abrir este formulario se abre otro ("presentacion_cestas") con las referencias de la cesta en la columna izquierda y una columna por cada tienda con una casilla de verificación en cada referencia
Quiero que cuando añada una referencia a la cesta de una tienda desde marcar_referencias, se marque la casilla de verificación correspondiente en el formulario presentacion_cestas.
Espero haberme explicado bien
No se si esto sería más facil con una consulta de referencias cruzadas, como no las conozco no exploré el tema, tengo una tabla referencias y otra cestas con el número de cesta y las referencias que le corresponden
Un saludo y gracias otra vez
Pablo

Acabo de hacer una prueba que tenía de ayer, tengo un formulario y un botón con este código
dim ctltext as control
Set ctltext = Application.CreateControl("Formulario3", acTextBox, acDetail, , , 1000, 500, 10, 10)
Me responde con error: Debe estar en vista diseño o presentacion para modificar/añadir controles
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Crear cuadro de texto por código

Publicado por Pablo (328 intervenciones) el 24/01/2022 19:00:02
Hola otra vez Eduardo
En el código que pasaste no entiendo esta instrucción:
btn.OnClick = "=CerrarFormulario(""" & Me.ctlNombre & """)"
Al hacer clic en btn llama a la función CerrarFormulario( tres comilllas & Me.ctlNombre & tres comillas )
Después grabas,abres y cierras el formulario, es necesario?
Gracias
Pablo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo

Crear cuadro de texto por código

Publicado por Eduardo (334 intervenciones) el 25/01/2022 10:40:51
Grabar no es obligatorio y el formulario que cierro al final es el formulario desde donde se crea el otro, tampoco es obligatorio. Las comillas es para encerrar texto porque estoy incrustando una funcion dentro del evento al hacer clic del boton de comando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Crear cuadro de texto por código

Publicado por Pablo (328 intervenciones) el 25/01/2022 19:34:07
Hola Eduardo
En vez de:"=CerrarFormulario(""" & Me.ctlNombre & """)", serviría esto:
"CerrarFormulario('" & Me,ctlNombre & "')"
Con comillas simples en vez de dos veces comillas
Gracias
Pablo

El tema de basar el formulario en una consulta de referencias cruzadas, cómo lo ves?
Se puede omitir el Set cuando se utiliza CreateControl?, o es obligatorio
Tu creas los nuevos controles en un formulario que acabas de crear, yo quiero hacerlo en un formulario existente, tu haces
Set btn = CreateControl(strName, acCommandButton, , "", "", 6000, 1200, 1000, 400), podría hacer
nuevo_control=CreateControl("Formulario3",acTextBox,,,,6000,1200,1000,400) ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo

Crear cuadro de texto por código

Publicado por Eduardo (334 intervenciones) el 26/01/2022 12:13:51
Para crear y hacer referencia a un objeto se debe definir con SET
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Crear cuadro de texto por código

Publicado por Pablo (328 intervenciones) el 26/01/2022 19:05:18
Hola
Intento crear el cuadro de texto desde el botón de un formulario con
Dim ctltext As Control
Set ctltext = Application.CreateControl("Formulario3", acTextBox, acHeader, , , 1000, 500, 10, 10)
y me dice que el formulario tiene que estar en vista diseño o presentación
Vista presentación es el número 7 pero cómo lo cambio?
Gracias
Pablo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo

Crear cuadro de texto por código

Publicado por Eduardo (334 intervenciones) el 26/01/2022 23:34:31
No puede crear un objeto al formulario que esta abierto desde este mismo pero si a otro formulario y debe abrirlo en diseño
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Crear cuadro de texto por código

Publicado por Pablo (328 intervenciones) el 27/01/2022 20:27:20
Hola
Pues sí, conseguí crear un control desde el botón de un formulario en otro que estaba abierto en vista diseño
Lo que pensaba hacer es en el evento open del formulario1, por ejemplo, contar los registros que hay en la tabla tiendas y en formulario1 crear en el encabezamiento un cuadro de texto/etiqueta con el nombre de cada tienda y en detalle una casilla de verificación
El formulario1 lo abro en el evento al abrir del formulario2, tendría que abrirlo en vista diseño, contar las tiendas y crear las etiquetas y casillas de verificación y, una vez hechos los añadidos abrirlo en vista formulario, en el momento de cerrarlo hacerlo con acsaveno, no me interesa grabarlo
Creo que así podría funcionar, qué opina
Un saludo y gracias
Pablo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Crear cuadro de texto por código

Publicado por Pablo (328 intervenciones) el 29/01/2022 18:13:21
Hola, comento
Desde el formulario2 conseguí crear etiquetas en el encabezamiento del formulario1 con set lblnombre=créate…
Después de la instrucción createcontrol tengo lblnombre.Caption=“lo q sea”, esto no lo reconoce, no me acuerdo q error daba, habrá q grabarlo antes el formulaii1; no me interesa hacerlo
Alguna idea.
Gracias
Pablo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar