Access - Keycode

 
Vista:
sin imagen de perfil

Keycode

Publicado por Paulina (91 intervenciones) el 12/03/2023 00:47:22
Hola tengo un botón de imprimir en mi formulario, lo que quiero es que estando dentro del subformulario, presiones F12 y me active el botón que está en el formulario, ya lo intenté y no puedo, tengo este código:




Private Sub Form_KeyPress(KeyAscii As Integer)



Select Case KeyCode
Case vbKeyF12

Me.Parent!Imprimir.SetFocus
KeyCode = 0

End Select

End Sub


Captura-de-pantalla-2023-03-11-173320
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

Keycode

Publicado por Anonimo (3316 intervenciones) el 12/03/2023 01:04:56
¿Esta activada la opción de 'tecla de vista previa'?.
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

Keycode

Publicado por Anonimo (3316 intervenciones) el 12/03/2023 09:57:21
¿Por?...

Cuando se intenta experimentar lo mínimo es leer las instrucciones de uso,.
En la ayuda de Access se define a sus objetos y las condiciones que han de cumplirse para que funcionen, incluidos los pros y los contras. .

Si de verdad tienes interés en aprender Access, intenta entender su ayuda (aunque solo sea para entender 'sus razones' como maquina).

La ayuda mas amplia y directa: la ventana de VBA, se escribe el termino y se le selecciona.
Sin perder la selección ==> F1 (y aparece la ayuda que tenga sobre ese termino)
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

Keycode

Publicado por Paulina (91 intervenciones) el 12/03/2023 20:32:49
Claro que tengo interés Anónimo, y si escribo en este foro es para ver si me pueden ayudar, he visto las ayudas que dices y no encuentro solución.

Pensé que este foro era para poder ayudar no para mandarte a las ayudas de Access.

Y probé que estuviera activada también.

Gracias de todos modos, ya veré como lo soluciono.

Otra cosa, el 90% de mi archivo lo he solucionado investigando en internet, imagínate que te escribiera por cada duda que tengo.
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

Keycode

Publicado por Anonimo (3316 intervenciones) el 13/03/2023 00:15:17
No me avergüenza decir que yo aprendí Access gracias a la ayuda de Access (también es cierto que en aquellos tiempos solo había BBS y Access balbuceaba).

No veo que puede haber de malo en leer el mejor libro sobre Access y resolver con el las dudas (al menos las básicas) otra cosa son las de programación avanzada (también conocida como experiencia).

Sobre esto:
Pensé que este foro era para poder ayudar no para mandarte a las ayudas de Access.

Otro punto de vista es que es mas cómodo utilizar un símil de ChatGPT.
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

Keycode

Publicado por Paulina (91 intervenciones) el 13/03/2023 01:37:44
Vuelvo a repetir, un foro hasta donde yo sé, es para ayudarte a resolver dudas, que lo mismo puede hacer un libro o consultas en Internet, hay muchas opciones para resolver tus dudas, si escoges una... un foro es para eso, para que te puedan orientar y decirte en que estas mal y que puedes arreglar, no decirte vete a buscar en un libro o ve y busca en la ayuda de access, si fuera así, no existirían, por eso se les pide ayuda a los expertos.

Pero en fin.

Animo
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

Keycode

Publicado por Anonimo (3316 intervenciones) el 13/03/2023 10:15:33
Creo sinceramente que tienes un concepto erróneo y de ser correcta esa línea de pensamiento: la aplicas a tu capricho y conveniencia.
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

Keycode

Publicado por Paulina (91 intervenciones) el 13/03/2023 19:01:20
Es correcto cuando dices conveniencia, si ese concepto es ser bueno para mi o útil, claro que lo es. Capricho para nada, ahora resulta que preguntar aquí para recibir respuestas concretas y no teoría son caprichos, ufff,

Si voy a un hospital a que me atiendan, porque me siento mal, imagina que el doctor me mande a la biblioteca a leer libros o a la universidad.

Hay lugares para todo, y creo que estas mal dando teoría (podría ser una escuela) en un foro donde por lo menos yo busco un código que me funcione para mi archivo, no estoy preguntando qué libro leer.

Pregunto: ¿Qué tipo de sangre es?
Respuesta: O+ ¿Pregunte eso? Sí.

Pregunto: ¿Qué tipo de sangre es?
Respuesta: Necesitas sacar una muestra de sangre y ese examen mezcla anticuerpos Tipo A y B, se revisan los glóbulos sanguíneos para ver si pegan o no. ¿Pregunte eso? No.



Suerte Anónimo, que yo ya la tengo.
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

Keycode

Publicado por Eduardo (317 intervenciones) el 14/03/2023 21:45:00
Buena respuesta para quienes tienden a entorpecer el buen desarrollo del foro y se creen dueño del mismo
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 Joan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Keycode

Publicado por Joan (90 intervenciones) el 13/03/2023 13:48:35
Hola,

El evento del botón imprimir ha de ser Public:

1
2
3
4
5
Public Sub botonimprimir_Click()
 
MsgBox ("Botón imprimir Apretado")
 
End Sub

En el subform:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
 
Select Case KeyCode
Case vbKeyF12
 
Me.Parent.botonimprimir_Click
 
End Select
 
Call AnulaTecla(KeyCode, vbKeyF12)
 
End Sub
 
Function AnulaTecla(KeyCode As Integer, ParamArray Keys() As Variant) As Integer
Dim Tecla As Variant
For Each Tecla In Keys
If KeyCode = Tecla Then
KeyCode = 0
Exit Function
End If
Next
End Function

y Tecla de vista previa en propiedades = Si.

Espero que te sirva, un saludo.
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

Keycode

Publicado por Paulina (91 intervenciones) el 13/03/2023 18:19:24
Hola Joan, si funciona, pero el problema es que me manda error, en los campos requeridos y cuando le aprieto con el mouse si me acepta los códigos que tengo cuando me marca error, como este:

If DataErr = 3314 Or DataErr = 3314 Then

MsgBox "Por favor, introduzca dato", vbExclamation, "Aviso"
Response = acDataErrContinue

End If

y necesito que me mande todos los mensajes que tengo como errores faltando algo en mi subformulario/formulario

Gracias
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 Joan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Keycode

Publicado por Joan (90 intervenciones) el 13/03/2023 20:04:01
Hola,

Supongo que quieres decir de modificar los mensajes de campo requerido simplemente.

Para que no te aprezcan esos mensajes, en las tablas, cambia a campo requerido = No, y controla lo que se introduce por código,

por ejemplo:

1
2
3
4
5
6
If IsNull(Me.Cantidad) Then
MsgBox "El campo 'Cantidad' es obligatorio.", vbOKOnly + vbExclamation, "ATENCIÓN"
Me.Cantidad.SetFocus
Exit Sub
Else
End If
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

Keycode

Publicado por Paulina (91 intervenciones) el 13/03/2023 21:41:48
Gracias Joan, no me funciona, ya le cambié a requerido en no y si me deja pasar a otro campo, hasta imprimir con el campo vacío, por eso los había cambiado a requerido en sí, y con mensajes cuando había error o faltaba introducir datos. asi:

If IsNull(Producto) Then
MsgBox "Producto", vbCritical, "ATENCION"
Cancel = True
End If
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 Joan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Keycode

Publicado por Joan (90 intervenciones) el 14/03/2023 07:58:37
Hola,

No entiendo exactamente lo que quieres decir. El campo requerido no es un error, le estás solicitando que sea Requerido. Igual dices que siempre te aparece el aviso, con este código solo te aparecerá el aviso cuando aprietes el F12.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
 
If KeyCode = vbKeyF12 And IsNull(producto) Then
MsgBox "Producto", vbCritical, "ATENCION"
Call AnulaTecla(KeyCode, vbKeyF12)
Exit Sub
End If
 
Select Case KeyCode
Case vbKeyF12
 
Me.Parent.botonimprimir_Click
 
End Select
 
Call AnulaTecla(KeyCode, vbKeyF12)
 
End Sub
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

Keycode

Publicado por Paulina (91 intervenciones) el 14/03/2023 21:32:24
Hola Joan, puse el código y funciona perfecto si le quito validar, pero si por algo en lugar de usar F12 y usan el botón imprimir, si me imprime sin los campos validados, sigo haciendo pruebas para ver si en algo estoy mal
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

Keycode

Publicado por Paulina (91 intervenciones) el 14/03/2023 21:33:55
Estoy viendo códigos para validar datos al mandar imprimir.
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 Joan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Keycode

Publicado por Joan (90 intervenciones) el 14/03/2023 23:23:29
Ponle lo mismo al botón imprimir y ya está.

1
2
3
4
5
6
7
8
9
10
11
If IsNull(producto) Then
 
MsgBox "Producto", vbCritical, "ATENCION"
 
Exit Sub
 
Else
 
'código para imprimir
 
End If
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 Joan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Keycode

Publicado por Joan (90 intervenciones) el 14/03/2023 23:24:44
Disculpa,

Has de hacer referencia al subfomulario ya que si no te dirá que no encuentra"producto"
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

Keycode

Publicado por Paulina (91 intervenciones) el 15/03/2023 03:04:04
Hola otra vez Joan, ya estuve probando todos los posibles errores que pudieran ocurrir, y como un control depende de otro, le puse que son requeridos, no hay otra forma que los pueda cambiar, si son necesarios requeridos, el problema que no me sirve el código que me diste, ya no se que hacer, y si lo quito (requerido-no) keydown si me sirve, pero pueden ocurrir errores al llenar el formulario
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 Joan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Keycode

Publicado por Joan (90 intervenciones) el 15/03/2023 09:04:52
Hola,

En el formulario principal:

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
Public Sub botonimprimir_Click()
 
If IsNull([SubForm].Form.producto) Then
MsgBox "Producto", vbCritical, "ATENCION"
Exit Sub
 
ElseIf IsNull(Me.fecha) Then
MsgBox "Fecha", vbCritical, "ATENCION"
Exit Sub
 
Else
 
MsgBox ("Botón imprimir Apretado")
 
End If
 
End Sub
 
Private Sub fecha_Change()
 
Me.Refresh
 
End Sub
 
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
 
If KeyCode = vbKeyF12 And IsNull([SubForm].Form.producto) Then
MsgBox "Producto", vbCritical, "ATENCION"
Call AnulaTecla(KeyCode, vbKeyF12)
 
ElseIf KeyCode = vbKeyF12 And IsNull(Me.fecha) Then
MsgBox "Fecha", vbCritical, "ATENCION"
Call AnulaTecla(KeyCode, vbKeyF12)
Exit Sub
 
Else
 
Select Case KeyCode
Case vbKeyF12
 
Me.botonimprimir_Click
 
End Select
 
Call AnulaTecla(KeyCode, vbKeyF12)
 
End If
 
End Sub
Function AnulaTecla(KeyCode As Integer, ParamArray Keys() As Variant) As Integer
Dim Tecla As Variant
For Each Tecla In Keys
If KeyCode = Tecla Then
KeyCode = 0
Exit Function
End If
Next
End Function

En el subformulario:

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
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
 
If KeyCode = vbKeyF12 And IsNull(producto) Then
MsgBox "Producto", vbCritical, "ATENCION"
Call AnulaTecla(KeyCode, vbKeyF12)
 
ElseIf KeyCode = vbKeyF12 And IsNull(Me.Parent!fecha) Then
MsgBox "Fecha", vbCritical, "ATENCION"
Call AnulaTecla(KeyCode, vbKeyF12)
Exit Sub
 
Else
 
Select Case KeyCode
Case vbKeyF12
 
Me.Parent.botonimprimir_Click
 
End Select
 
Call AnulaTecla(KeyCode, vbKeyF12)
 
End If
 
End Sub
 
Function AnulaTecla(KeyCode As Integer, ParamArray Keys() As Variant) As Integer
Dim Tecla As Variant
For Each Tecla In Keys
If KeyCode = Tecla Then
KeyCode = 0
Exit Function
End If
Next
End Function
 
Private Sub producto_Change()
 
Me.Refresh
 
End Sub

De esta manera funcionará y tendrás gestionadas todas las posibilidades, simplemente es ir añadiendo condiciones de los textbox que quieres que sean requeridos.
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

Keycode

Publicado por Paulina (91 intervenciones) el 16/03/2023 01:01:54
Hola Joan, gracias por tu paciencia, ya me salió en un campo que esta requerido, pero en otro que es el precio que ese depende de el tipo de cliente, si lo borro me manda el mensaje 3314, nada más me falta eso, estoy viendo porque. En cuanto tenga algo te escribo cuando me salga, tu código ya funciona perfecto, solo es eso.
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

Keycode

Publicado por Paulina (91 intervenciones) el 20/03/2023 08:05:39
Pues con esto ya no me manda error:


On Error GoTo errhandler

errhandler:


Gracias por todas sus atenciones, y me sirvió perfecto el código Joan
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 Pérez Fernández

Keycode

Publicado por Eduardo Pérez Fernández (317 intervenciones) el 13/03/2023 13:54:58
Paulina, primero que todo lo siento por el mal trato que le da Anónimo Alias Enrique Feijóo, quien se cree que se las sabe todas y no es más que un mediocre en Access y lo digo en voz alta, por ejemplo, habla de redes y no tiene ni idea.

Estoy de acuerdo si pregunta es porque espera una respuesta no que la remitan a leer manuales y ayudas, centrándome en su caso le pregunto el botón Imprimir lo tiene el formulario principal o en el subformulario, si lo tiene en el formulario principal (lo más lógico) se requiere que en este formulario en Propiedades eventos, Tecla de vista previa esté en SI y no necesita Parent, En este caso la instrucción debe ser de esta forma. El evento es al bajar una tecla y no al presionar una tecla

1
2
3
4
5
6
7
8
9
10
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
 
    If KeyCode = vbKeyF12 Then
 
        Me.imprimir.SetFocus
 
    End If
 
 
End Sub
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

Keycode

Publicado por Paulina (91 intervenciones) el 13/03/2023 18:37:29
Hola Eduardo, así es, pido ayuda y recibo otras cosas, y claro si pregunto es para recibir respuesta con una posible solución. No, si pregunto es para decirme donde lo podría solucionar. Me entiendes perfecto, y ya he visto otras respuestas de él.

El botón imprimir lo tengo en el formulario principal.

Del código que me mandas necesito que me apriete el botón imprimir con el código que ya tengo listo.


Gracias Eduardo
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: 67
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Keycode

Publicado por Raul (42 intervenciones) el 14/03/2023 08:18:30
Buenas.

Porque no pones el codigo que tienes que ya tienes listo a F12??

Te ahorrarias todo esto.
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

Keycode

Publicado por Eduardo (317 intervenciones) el 15/03/2023 14:05:30
Paulina no le va ha funcionar porque el control de la tecla lo controla el formulario principal no creo que F12 lo tome el subformulario, realmente no veo el beneficio de utilizar F12 cuando puede hacer clic directamente en el botón, al fin es un paso igual que F12.
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

Keycode

Publicado por Eduardo (317 intervenciones) el 15/03/2023 14:31:13
De acuerdo no lo había probado
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