Access - Rellenar una etiqueta en formulario

 
Vista:
sin imagen de perfil
Val: 48
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Rellenar una etiqueta en formulario

Publicado por PAMARDOM (22 intervenciones) el 28/06/2019 09:48:57
Hola, os cuento lo que tengo:
Si introduzco txtCodNum a través del InputBox la etiqueta etq2 en el formulario se rellena.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Public Sub NombCmplt()
Dim etq2 As String
Dim mietq2 As String
Dim txtCodNum As String
txtCodNum = InputBox("Introduce txtCodNum ? ")
    If txtCodNum = "1" Then
         mietq2 = "He elegido 11111111 "
         MsgBox "has elegido 1"
    ElseIf txtCodNum = "2" Then
        mietq2 = "He elegido 22222222 "
        MsgBox "has elegido 2"
    ElseIf IsNull(txtCodNum) Or (txtCodNum) = "" Then
        MsgBox ("Campo vacio")
    End If
    ‘Meto en el formulario en la etiqueta etq2 el valor de mietq2
    With Forms!Formulario1
    .etq2.Value = mietq2
    End With
End Sub

Pero si txtCodNum se lo doy después de actualizarse, la cosa no funciona y etq2 no toma valor alguno.

1
2
3
Private Sub txtCodNum_AfterUpdate()
Call NombCmplt(txtCodNum.Value)
End Sub

Seguro que es una tontería pero no la veo.
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
sin imagen de perfil
Val: 756
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar una etiqueta en formulario

Publicado por Jesús Manuel (375 intervenciones) el 28/06/2019 10:55:59
No te resulta raro que declaras un procedimiento sin argumentos, que al ejecutarse solicita con un imputbox un dato y que luego pretendes pasar el dato como argumento al llamar al procedimiento?
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: 48
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Rellenar una etiqueta en formulario

Publicado por PAMARDOM (22 intervenciones) el 28/06/2019 12:28:39
Perdona, se me ha olvidado quitar el inpubox, quedaría así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public Sub NombCmplt()
Dim etq2 As String
Dim mietq2 As String
Dim txtCodNum As String
 
    If txtCodNum = "1" Then
         mietq2 = "He elegido 1 "
 
    ElseIf txtCodNum = "2" Then
        mietq2 = "He elegido 2 "
 
    ElseIf IsNull(txtCodNum) Or (txtCodNum) = "" Then
        MsgBox ("Campo vacio")
    End If
 
    ‘Meto en el formulario en la etiqueta etq2 el valor de mietq2
    With Forms!Formulario1
    .etq2.Value = mietq2
    End With
End Sub


y el valor txtCodNum se lo doy al llamar al procedimiento, este valor lo obtengo después de de actualizarse el formulario.

La historia es que si el valor se lo doy con el inputbox funciona correctamente, va al formulario y rellena la etiqueta. Pero si llamo al procedimiento, no lo hace.

1
2
3
Private Sub txtCodNum_AfterUpdate()
Call NombCmplt(txtCodNum.Value)
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
Val: 756
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar una etiqueta en formulario

Publicado por Jesús Manuel (375 intervenciones) el 28/06/2019 13:06:06
Cuando llamas a un procedimiento al que le vas a pasar un valor, tendrías que definir en el procedimiento que va a recibir un dato.

Tal y como lo tienes, declaras txtCodNum As String, pero no le asignas valor en ningún momento.

Tendrias que tener algo tal que:

Public Sub NombCmplt(CodNum as string)
txtCodNum= CodNum



Por cierto:
-Declaras la variable etq2 pero no la usas en ningún momento y si es el mismo nombre que el de la etiqueta en el formulario, seguramente tendrás un error.
- Al trabajar con etiquetas, tendrías que cambiar etq2.value pro etq2.caption
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: 48
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Rellenar una etiqueta en formulario

Publicado por PAMARDOM (22 intervenciones) el 28/06/2019 13:32:09
Gracias Jesús Manuel por tu tiempo pero continua sin funcionar, yo creo que es la llamada al procedimiento lo que hago mal.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Public Sub NombCmplt(CodNum As String)
Dim mietq2 As String
Dim txtCodNum As String
 
CodNum = txtCodNum
 
    If txtCodNum = "1" Then
         mietq2 = "He elegido 11111111 "
    ElseIf txtCodNum = "2" Then
        mietq2 = "He elegido 22222222 "
    ElseIf IsNull(txtCodNum) Or (txtCodNum) = "" Then
        MsgBox ("Campo vacio")
    End If
 
    With Forms!Formulario1
    .etq2.Caption = mietq2
    End With
End Sub


Estoy llamando al procedimiento después de actualizarse txtCodNum, aparte de Call, existe otro comando para llamar al procedimiento, aunque he leído que sin poner Call también debería ir.

1
2
3
Private Sub txtCodNum_AfterUpdate()
Call NombCmplt(txtCodNum.Value)
End Sub

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
sin imagen de perfil
Val: 756
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Rellenar una etiqueta en formulario

Publicado por Jesús Manuel (375 intervenciones) el 28/06/2019 13:40:35
Esto está al revés: CodNum = txtCodNum

Si el valor lo tiene CodNum, se lo tienes que asignar a txtCodNum para que tenga un valor: txtCodNum=CodNUm

Sería bueno, que fueses poniendo MsgBox con el nombre de variables en el código, para ir comprobando que valor tiene en cada momento, luego los borras, para saber si antes de llegar la IF txtNumCod tiene algún valor o no y como actuaria el IF, por ejemplo, antes del IF: MsgBox txtCodNum


He hecho una prueba con un único formulario (nombre FORMULARIO1), con un botón (nombre COMANDO0) y una etiqueta (nombre etq2) y no he tenido probelmas. El código que he usado es:

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
Private Sub Comando0_Click()
Call NombCmplt(2)
End Sub
 
 
Public Sub NombCmplt(CodNum As String)
 
Dim mietq2 As String
Dim txtCodNum As String
txtCodNum = CodNum
MsgBox txtCodNum
 
If txtCodNum = "1" Then
    mietq2 = "He elegido 1 "
ElseIf txtCodNum = "2" Then
    mietq2 = "He elegido 2 "
ElseIf IsNull(txtCodNum) Or (txtCodNum) = "" Then
    MsgBox "Campo vacio"
Else
    MsgBox "error en prueba"
End If
 
Me.etq2.Caption = mietq2
 
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
1
Comentar

Rellenar una etiqueta en formulario

Publicado por Anonimo (3316 intervenciones) el 29/06/2019 02:12:29
Codigo revisado


1
2
3
4
5
6
7
8
9
10
11
Public Sub NombCmplt(CodNum As String)
Dim mietq2 As String
    If CodNum = "1" Then
        mietq2 = "He elegido 11111111 "
    ElseIf CodNum = "2" Then
        mietq2 = "He elegido 22222222 "
    ElseIf Nz(CodNum, "") = "" Then
        MsgBox ("Campo vacio")
    End If
Forms!Formulario1.etq2.Caption = mietq2
End Sub


Una variación (menos variables)

1
2
3
4
5
6
7
8
9
Public Sub NombCmplt(CodNum As String)
    If CodNum = "1" Then
        Forms!Formulario1.etq2.Caption= "He elegido 11111111 "
    ElseIf CodNum = "2" Then
        Forms!Formulario1.etq2.Caption= "He elegido 22222222 "
    ElseIf Nz(CodNum, "") = "" Then
        MsgBox ("Campo vacio")
    End If
End Sub


Otra opción con Select Case


1
2
3
4
5
6
7
8
9
10
11
12
Public Sub NombCmplt(CodNum As String)
Dim mietq2 As String
Select Case CodNum
    Case "1"
        mietq2 = "He elegido 11111111 "
    Case "2"
        mietq2 = "He elegido 22222222 "
    Case Else
        MsgBox ("Campo vacio")
    End Select
Forms!Formulario1.etq2.Caption = mietq2
End Sub


Una variación (menos variables)

1
2
3
4
5
6
7
8
9
10
Public Sub NombCmplt(CodNum As String)
Select Case CodNum
    Case "1"
        Forms!Formulario1.etq2.Caption = "He elegido 11111111 "
    Case "2"
        Forms!Formulario1.etq2.Caption = "He elegido 22222222 "
    Case Else
        MsgBox ("Campo vacio")
    End Select
End Sub




Utilizando el código


1
2
3
Private Sub txtCodNum_AfterUpdate()
NombCmplt(txtCodNum)
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
1
Comentar
sin imagen de perfil
Val: 48
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Rellenar una etiqueta en formulario

Publicado por PAMARDOM (22 intervenciones) el 29/06/2019 11:37:09
Muchas gracias a todos por vuestra ayuda y tiempo.

Saludos
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