** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Error de automatización
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoError de automatización

 Responder Responder
Autor
Mensaje
Bepb Ver desplegable
Habitual
Habitual
Avatar

Unido: 02/Febrero/2012
Localización: España
Estado: Sin conexión
Puntos: 152
Enlace directo a este mensaje Tema: Error de automatización
    Enviado: 19/Marzo/2024 a las 17:21
Hola,
  Quiero crear un ArrayList para añadir elementos (Strings) al mismo y después ordenarlos para mostrarlos bien colocados, pero me da un error de automatización.
   Se trata de hacerlo en visualbasic en una macro del evento click.
  Llevo dos días intentando averiguar cual es el error y aún mirando por Internet y consultando no hay manera que averiguar porqué me da este mensaje al crear ese ArrayList. He llegado a pensar que no se pueden añadir un items desde una variable, pero lo he probado con un literal entre comillas y sigue dándome el mismo error en el Add.

El código es el siguiente:

Private Sub Menu_0101_boto_Click()
    Dim AccessosOrdenats As New ArrayList
    Accessosw = Mid(Me.Menu_0101_boto.Name, 6, 4)
    AccessosOrdenats.Add (Accessosw)
    Call OrdenarAccessos
    Me.AccUsuaris_accessos_txt.Value = Accessosww
    Me.Menu_0101_boto.Enabled = False
End Sub

Incluso he mirado de usar Colecciones o Arrays pero no veo claro como hacerlos para poder manejar los indices de los mismos, reescribirlos u ordenarlos con el método burbuja.

¿Alguien puede echarme una mano o aconsejarme en ese aspecto?

Un saludo y gracias.
José L.
Saludos desde Menorca. José Luis
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14746
Enlace directo a este mensaje Enviado: 19/Marzo/2024 a las 17:39
Hola,

Me ha sorprendido esa declaración "As New ArrayList" y lo he buscado por si me he perdido algo (que bien podría ser) 

Yo creo que eso de ArrayList lo has copiado de otro lenguaje (¿java?) y que no es lo que buscas.

Creo recordar que WizHook podia hacer algo de lo que (intuyo) pides. Mira este enlace: Access y VBA -> WizHook (mvp-access.es)

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
Bepb Ver desplegable
Habitual
Habitual
Avatar

Unido: 02/Febrero/2012
Localización: España
Estado: Sin conexión
Puntos: 152
Enlace directo a este mensaje Enviado: 20/Marzo/2024 a las 17:23
Hola Xavi, gracias por contestar,

    A ver, el Visualbasic 6.0 no lo he usado mucho, de hecho sólo en Macros de Formularios de Access, pero el ArrayList como no lo había usado lo estuve buscando en Internet y lo que pongo en el código es lo que varias páginas me indican, lo que creo es que puede ser que se confunda con .NET.
En java desde luego no es, aunque se parece porque ese si lo he usado bastante y la definición es:

Private ArrayList<String> array = new ArrayList<String>();

He buscado lo que me indicas del WizHook y lo he probado y no ordena:

WizHook.SortStringArray MiArray

Es verdad que de entrada miro el examinador de objetos y esta función no esta, pero la he incluido para probarlo, no da error de sintaxis(tampoco la daba la definición de ArrayList) luego examino los items del array y no los ordena.

Al final he definido así el array y la ordenación burbuja y funciona correctamente:

Dim AccessosOrdenats(75) As String
Dim indexAccessos As Integer

Private Sub OrdenarAccessos()
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim AccessosAux As String
    
    For i = 1 To indexAccessos
        For j = 0 To indexAccessos - i
            If AccessosOrdenats(j) > AccessosOrdenats(j + 1) Then
                AccessosAux = AccessosOrdenats(j)
                AccessosOrdenats(j) = AccessosOrdenats(j + 1)
                AccessosOrdenats(j + 1) = AccessosAux
            End If
        Next j
    Next i

    Accessosww = ""
    For k = 0 To indexAccessos
       If k > 0 Then
            Accessosww = Accessosww & ", "
       End If
       Accessosww = Accessosww & AccessosOrdenats(k)
    Next k
End Sub

Yo creo que o estoy usando un VB antiguo (aunque el Access es el 2019) y habrá funciones instaladas y otras que no, supongo que tendré que averiguarlo.

Un saludo.

Saludos desde Menorca. José Luis
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14027
Enlace directo a este mensaje Enviado: 20/Marzo/2024 a las 17:50
Bepd,

Si que funciona, yo lo he usado ... ¿has inicializado el valor KEY como dice Happy en su artículo?

Ya puestos a realizar cosas raras podrías crearte una tabla en ADO, cargarle los valores que quieras, ordenarla con el método SORT y después listarla ...  esta opción es particularmente útil cuando tienes muchos campos y sólo ordenas por uno.


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Bepb Ver desplegable
Habitual
Habitual
Avatar

Unido: 02/Febrero/2012
Localización: España
Estado: Sin conexión
Puntos: 152
Enlace directo a este mensaje Enviado: 20/Marzo/2024 a las 18:21
Hola Jesús,

     Precisamente en el enlace que me indica Xavi, se dice que esta función (WizHook) con el método de ordenar (SortStringArray) no  precisa definir Key.

    También es buena opción crear una tabla provisional para ordenar los items, era por no añadir más tablas a la aplicación, ya tengo un montón, de todas formas muchas gracias.

Un saludo.

Saludos desde Menorca. José Luis
Arriba
Bepb Ver desplegable
Habitual
Habitual
Avatar

Unido: 02/Febrero/2012
Localización: España
Estado: Sin conexión
Puntos: 152
Enlace directo a este mensaje Enviado: 21/Marzo/2024 a las 16:45
Se puede cerrar el tema.

Gracias
Saludos desde Menorca. José Luis
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14027
Enlace directo a este mensaje Enviado: 21/Marzo/2024 a las 16:58
Una cosa, crearte una tabla ADO (sin guardarla) no añade ninguna tabla a la aplicación, es virtual.
Un saludo.
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable