Access - Crear y usar funciones

 
Vista:
Imágen de perfil de arrobangel
Val: 121
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Crear y usar funciones

Publicado por arrobangel (61 intervenciones) el 07/02/2017 02:27:23
Hola a tod@s, después de un tiempo buelvo al foro para hacer una pregunta ojala y me explique correctamente.

Empiezo a EXPLICAR:
Tengo mi bases de datos ya creada y funcionando muy eficiente mente pero, el siguiente código se repite entre muchos formularios y aparte el código esta en constante crecimiento:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Comando12_Click()
DoCmd.RunCommand acCmdSaveRecord
DoCmd.Minimize
If Me.Análisis_a_realizar = 109 Then
DoCmd.OpenReport "Grupo sanguineo", acViewPreview, , "ID_Paciente=" & Me.ID_Paciente
End If
If Me.Análisis_a_realizar = 149 Then
DoCmd.OpenForm "Prueba de embarazo"
End If
If Me.Análisis_a_realizar = 39 Then
DoCmd.OpenForm "Biometria hematica"
End If
If Me.Análisis_a_realizar = 136 Then
DoCmd.OpenForm "Perfil hepatico"
End If
If Me.Análisis_a_realizar = 137 Then
DoCmd.OpenForm "Perfil reumatologico"
End If
If Me.Análisis_a_realizar = 153 Then
DoCmd.OpenForm "Reacciones febriles"
End If
Exit Sub
End Sub

y como se imaginaran es demasiado tedioso estar modificando el mismo código en varios formularios por lo que se me ocurrió crear una función en un modulo pero no se como hacerlas o si es posible crearlas en un modula y por supuesto tampoco se como llamarla a la acción en cada formulario. Les agrade seria bastante que me ayudaran para que así se me facilitara toda la edición.

De ante mano muchas gracias.
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 Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Crear y usar funciones

Publicado por Neckkito (1157 intervenciones) el 07/02/2017 11:30:07
Hola!

Tu código puede mejorarse un poquito. Te explico primero cómo podrías hacerlo para crearte un procedimiento:

1.- Créate un módulo estándar
2.- Bajo la/s línea/s "Option" escribe lo siguiente

Public sub subAbroForm(elAnalisis as integer, Optional elId as long)
docmd.runcommand accmdsaverecord
docmd.minimize
'Y aquí el código que te explico más adelante
End sub

3.- Estás utilizando un continuo de cláusulas IF, cuando para una selección de valores tan amplia te sería mejor utilizar un select case. Así, el código que deberías introducir en esa función (sustituyendo la línea comentada) sería:

Select case elAnalisis
Case 109
DoCmd.OpenReport "Grupo sanguineo", acViewPreview, , "ID_Paciente=" & elId
Case 149
DoCmd.OpenForm "Prueba de embarazo"
Case 39
DoCmd.OpenForm "Biometria hematica"
'Y así con el resto de casos
End select


4.- En tu botón, en el formulario, la llamada al procedimiento sería, en general:

Call subAbroForm(me.analisis_a_realizar)

Exceptuando cuando necesites también el Id, donde la llamada sería

Call subAbroForm(me.analisis_a_realizar, Me.ID_Paciente)

A ver si te sale.

Saludos,

Neckkito
http://bit.ly/neckkito
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 arrobangel
Val: 121
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Crear y usar funciones

Publicado por arrobangel (61 intervenciones) el 08/02/2017 00:17:14
Hola Neckkito muchísimas gracias por tu ayuda.

He hecho todo tal y cual me lo has indicado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Option Compare Database
Public Sub subAbroForm(elAnalisis As Integer, Optional elId As Long)
DoCmd.RunCommand acCmdSaveRecord
DoCmd.Minimize
Case 109
DoCmd.OpenReport "Grupo sanguineo", acViewPreview, , "ID_Paciente=" & Me.ID_Paciente
Case 39
DoCmd.OpenForm "Biometria hematica"
Case 86
DoCmd.OpenForm "Electrolitos sericos"
End Select
 
 
 
Private Sub Comando12_Click()
Call subAbroForm(Me.Análisis_a_realizar)
End Sub
Pero por alguna razón al hacer click en el botón me salta este mensaje:

Imagen1

Que hice mal para que ocurriera esto.
De nuevo muchas 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 jorge
Val: 1.039
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Crear y usar funciones

Publicado por jorge (304 intervenciones) el 08/02/2017 02:19:50
falta esto donde lo estas dejandoo..

Select case elAnalisis


en tu codigoo.


1
2
3
4
5
6
7
8
9
10
Public Sub subAbroForm(elAnalisis As Integer, Optional elId As Long)
DoCmd.RunCommand acCmdSaveRecord
DoCmd.Minimize
Case 109
DoCmd.OpenReport "Grupo sanguineo", acViewPreview, , "ID_Paciente=" & Me.ID_Paciente
Case 39
DoCmd.OpenForm "Biometria hematica"
Case 86
DoCmd.OpenForm "Electrolitos sericos"
End Select
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 arrobangel
Val: 121
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Crear y usar funciones

Publicado por arrobangel (61 intervenciones) el 08/02/2017 02:48:11
muchas gracias por tu respuesta

pero se lo he colocado y esto ha pasado

Imagen2

perdona mi ignorancia pero pues esta es mi primera función.
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 jorge
Val: 1.039
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Crear y usar funciones

Publicado por jorge (304 intervenciones) el 08/02/2017 03:09:32
hay noo hermano..

ese select case va dentro de la function..


1
2
3
4
5
6
7
8
9
10
11
12
13
Public Sub subAbroForm(elAnalisis As Integer, Optional elId As Long)
 DoCmd.RunCommand acCmdSaveRecord
 DoCmd.Minimize
 
Select case elAnalisis
 
 Case 109
 DoCmd.OpenReport "Grupo sanguineo", acViewPreview, , "ID_Paciente=" & Me.ID_Paciente
 Case 39
 DoCmd.OpenForm "Biometria hematica"
 Case 86
 DoCmd.OpenForm "Electrolitos sericos"
 End Select


saludos carnal.

fijate bien el ejemplo que te puso el master n Neckkito carnalito
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 Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Crear y usar funciones

Publicado por Neckkito (1157 intervenciones) el 08/02/2017 09:26:29
Aunque no se ve muy bien en la imagen, me da la sensación de que no has leído demasiado bien mi mensaje, ni en cuanto a instrucciones ni en cuanto a código. Empezaba diciendo...

1.- Créate un módulo estándard

Por lo que parece intuirse de la imagen, parece que lo que tú has creado es un módulo de clase. Eso es otra historia y, si es así y lo que has creado es un módulo de clase, por mucho que arregles el código seguirá sin funcionarte.

Así que, elimina ese módulo de clase y hazlo con uno estándar.

En cuanto a código, las recomendaciones de Jorge son perfectamente correctas.

Saludos,

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

Crear y usar funciones

Publicado por arrobangel (61 intervenciones) el 09/02/2017 04:23:23
Hola primero que nada muchísimas gracias ya lo he logrado.

y como segundo les pido disculpas por mis múltiples pregunta pero, como dije en mi primera pregunta esta es la primera vez que hago un modulo no tenia idea de los distintos módulos que existían, por lo que a pesar de que ley correctamente la explicación de Nekkito no ejecute la creación de un modulo estándar.

y de nuevo muchas gracias a los dos, por responderme en las múltiples veces que pregunte.
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 Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Crear y usar funciones

Publicado por Neckkito (1157 intervenciones) el 09/02/2017 07:42:54
Bueno... La parte positiva es que ahora te funciona y que ya eres un máster de las funciones

Un abrazo,

Neckkito
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