Access - como aumentar las filas de una barra a mas de 13

 
Vista:

como aumentar las filas de una barra a mas de 13

Publicado por Oscar Torres (7 intervenciones) el 28/05/2017 18:35:32
Buen día,

Tengo el siguiente código para una barra, el problema que tengo es que no me acepta mas de 13 lineas, si agrego una mas me indica que la operación es compleja.

1
2
3
4
5
6
7
8
9
10
11
Private Sub Form_Load()
Dim ctl As Control
For Each ctl In Me.Controls
    If ctl.ControlType = acLabel And IsNumeric(Left(ctl.Name, 2)) Then
        ctl.OnClick = "=barra('" & ctl.Name & "','Colores', 'Caries', 1, 'Amalgama Adaptada', 2, 'Amalgama Desadaptada', 3, 'Exodoncia', 4, 'Ausente', 5, 'Endodoncia a Realizar', 6, 'Sin Erupcionar', 7, 'Endodoncia Realizada', 8, 'Corona Adaptada', 9, 'Corona Desadaptada', 10, 'Resina Adaptada', 11, 'Resina Desadaptada', 12, 'Sano', 13,)"
 
       End If
 
Next ctl
 
End Sub

La función de la barra es la siguiente

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
Function barra(mieti As String, nombreBarra As String, ParamArray valores() As Variant)
Dim cbar As Office.CommandBar
Dim i As Integer
Dim ctl As CommandBarControl
 
 
If (UBound(valores()) + 1) Mod 2 <> 0 Then
    MsgBox "Número de parámetros incorrectos pasados a la función 'barra'" & Chr(13) & _
            "Debe introducir el literal y el valor por parejas" & Chr(13) & _
            "Revise la sintaxis de la funcion barra en el modulo BarraEmergente", vbInformation + vbOKOnly, "ERROR DE SINTAXIS"
            Exit Function
End If
 
' Comprobamos si la barra existe, y si es así la borramos para poder crearla de nuevo
' es mas facil que modificarla
For Each cbar In CommandBars
    If cbar.Name = nombreBarra Then
        cbar.Delete
        Exit For
    End If
Next cbar
 
' Creamos la nueva barra
Set cbar = CommandBars.Add(Name:=nombreBarra, Position:=msoBarPopup, Temporary:=False)
'poniendo Temporary a False la barra es permanente. Si es False la barra se borra al cerrar la MDB
cbar.Protection = msoBarNoCustomize
 
    ' rellenamos los elementos de la barra a partir de la matriz valores()
    For i = 0 To UBound(valores())
        Set ctl = cbar.Controls.Add(Type:=1)
        ctl.Caption = valores(i)
        i = i + 1
        ctl.OnAction = "= Asignavalor('" & mieti & "', '" & valores(i) & "')"
 
    Next i
 
Set ctl = Nothing
Set cbar = Nothing
 
CommandBars(nombreBarra).ShowPopup
End Function
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 Francisco
Val: 467
Plata
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

como aumentar las filas de una barra a mas de 13

Publicado por Francisco (212 intervenciones) el 28/05/2017 20:07:04
Hola

La solucion aqui

Saludos

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
Option Compare Database
Option Explicit
 
Private Sub Form_Load()
    Dim sOpt As String
    Dim ctl As Control
 
    sOpt = ""
    sOpt = sOpt & "'Caries', 1, "
    sOpt = sOpt & "'Amalgama Adaptada', 2, "
    sOpt = sOpt & "'Amalgama Desadaptada', 3, "
    sOpt = sOpt & "'Exodoncia', 4, "
    sOpt = sOpt & "'Ausente', 5, "
    sOpt = sOpt & "'Endodoncia a Realizar', 6, "
    sOpt = sOpt & "'Sin Erupcionar', 7, "
    sOpt = sOpt & "'Endodoncia Realizada', 8, "
    sOpt = sOpt & "'Corona Adaptada', 9, "
    sOpt = sOpt & "'Corona Desadaptada', 10, "
    sOpt = sOpt & "'Resina Adaptada', 11, "
    sOpt = sOpt & "'Resina Desadaptada', 12, "
    sOpt = sOpt & "'Sano', 13"
 
    For Each ctl In Me.Controls
        If ctl.ControlType = acLabel And IsNumeric(Left(ctl.Name, 2)) Then
            ctl.OnClick = "=Barra('" & ctl.Name & "','Colores', " & sOpt & ")"
        End If
    Next
End Sub
 
'La función de la barra es la siguiente
'**************************************
Function Barra(miEti As String, nombreBarra As String, ParamArray valores() As Variant)
    Dim cBar As Office.CommandBar
    Dim ctl As CommandBarControl
    Dim nI As Integer
 
    If (UBound(valores()) + 1) Mod 2 <> 0 Then
        MsgBox "Número de parámetros incorrectos pasados a la función 'barra'" & vbCr & _
        "Debe introducir el literal y el valor por parejas" & vbCr & _
        "Revise la sintaxis de la funcion barra en el modulo BarraEmergente", vbInformation + vbOKOnly, "ERROR DE SINTAXIS"
        Exit Function
    End If
 
    'Comprobamos si la barra existe,
    'y si es así la borramos para poder
    'crearla de nuevo es mas facil que
    'modificarla
    '**********************************
    On Error Resume Next
    CommandBars(nombreBarra).Delete
    On Error GoTo 0
    'For Each cBar In CommandBars
    '    If cBar.Name = nombreBarra Then
    '        cBar.Delete
    '        Exit For
    '    End If
    'Next
 
    'Creamos la nueva barra
    '**********************
    Set cBar = CommandBars.Add(Name:=nombreBarra, Position:=msoBarPopup, Temporary:=True)
    'Poniendo Temporary a False la barra es permanente.
    'Si es False la barra se borra al cerrar la MDB
    '**************************************************
    cBar.Protection = msoBarNoCustomize
 
    'Rellenamos los elementos de la barra
    'a partir de la matriz valores()
    '************************************
    For nI = 0 To UBound(valores()) Step 2
        Set ctl = cBar.Controls.Add(msoControlButton, 1)
        ctl.Caption = valores(nI + 1) & " -> " & valores(nI)
        ctl.OnAction = "AsignaValor('" & valores(nI) & "', '" & valores(nI + 1) & "')"
    Next
 
    Set ctl = Nothing
    Set cBar = Nothing
 
    CommandBars(nombreBarra).ShowPopup
 
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

como aumentar las filas de una barra a mas de 13

Publicado por Oscar Torres (7 intervenciones) el 28/05/2017 21:04:32
Muchas gracias por la respuesta,

Pero sigo presentando el error al incluir mas de 13 lineas, el error es el siguiente:

Se ha producido el error 2445 en tiempo de ejecución:
La expresión que introdujo es demasiado compleja.
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 Francisco
Val: 467
Plata
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

como aumentar las filas de una barra a mas de 13

Publicado por Francisco (212 intervenciones) el 29/05/2017 18:31:13
Lo probe en Access 2016 y se muestra.

¿Version de Access?


barras
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

como aumentar las filas de una barra a mas de 13

Publicado por Oscar Torres (7 intervenciones) el 29/05/2017 23:02:52
Buen día,

El problema no es que se muestre, el problema es que si le adiciono una fila mas, es decir mas de 13, es decir catorce o mas, arroja el error que comento.
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

como aumentar las filas de una barra a mas de 13

Publicado por Carlos rocha (1 intervención) el 10/09/2021 19:57:49
Hola, con respecto a esta función de barra, se puede utilizar 2 funciones en 1 mismo formulario? Es decir, para el mismo ejemplo anterior, se puede separar los diagnósticos en 2 selectores diferentes?

Gracias por su respuesta
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

como aumentar las filas de una barra a mas de 13

Publicado por Raul (42 intervenciones) el 16/09/2021 07:47:47
Buenas.

Porque no pones los datos en una tabla y los relacionas????
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