** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Tus Funciones Favoritas & Aportaciones & Artí­culos
  Mensajes nuevos Mensajes nuevos RSS - Empezar con los diccionarios.
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoEmpezar con los diccionarios.

 Responder Responder
Autor
Mensaje
Sheerkhan Ver desplegable
Asiduo
Asiduo


Unido: 01/Octubre/2011
Estado: Sin conexión
Puntos: 284
Enlace directo a este mensaje Tema: Empezar con los diccionarios.
    Enviado: 02/Marzo/2024 a las 12:02
Hola.
Como no he encontrado por la red información clara y concisa de como usar los diccionarios, dejo aquí unos pedacitos de código para los que quieran empezar a usarlos.
Toda la información que he visto around the world Cry solo mostraba el uso de los métodos en el mismo sub que creaba el diccionario, en fin que aquí está el resultado de unas cuantas horas de búsqueda y muchos ensayos prueba/error para que algún otro aprendiz como yo no tenga que perder un día y medio para empezar a trastear con los diccionarios,

Solo recordad que en herramientas/referencias debe incluirse la librería "microsoft vbscript regular expressions 5.5"

Gracias a todos los responsables del foro por esta maravillosa herramienta, sin ella muchos de nosotros aprenderíamos con más trompicones.

Por pura casualidad hoy es mi (64) cumpleaños, no esperéis tanto como yo para aportar al foro Smile.

Saludos
'****************** Pegadlo en un módulo ******************************

Option Compare Database
Option Explicit

'Delararlo en la cabecera del módulo no sé si será lo ortodoxo pero para mí ha sido "mano de santo"
Public Dict As Object

'
Sub AddDict()
'Crea el diccionario
Set Dict = CreateObject("Scripting.Dictionary")

Dim i As Variant

'Crea 5 claves como: "MiClave1" , valor 1
For i = 1 To 5

    Dict.Add "MiClave" & i, i

Next i

End Sub

Sub testDict()

'Para recorrerlo**************************
    Dim clave As Variant
        For Each clave In Dict.Keys
            Debug.Print clave & " - " & Dict.Item(clave)
            'MsgBox "Dict - " & clave & " - " & Dict.Item(clave)
        Next clave
'*****************************************
End Sub

Sub ClaveTest()
'Comprobar si existe una clave
Dim Key As Variant

If Dict.Exists("MiClave1") Then

    Debug.Print "SI"
Else
    Debug.Print "NO"
End If

For Each Key In Dict.Keys
    Debug.Print Key, Dict(Key)
Next

End Sub

Sub CambiaValor()

Dim clave As Variant
    
'Comprueba si existe el diccionario
If Dict Is Nothing Then

    'MsgBox "No existe."
    Debug.Print "No existe"
    Exit Sub
End If
        
Dict("MiClave3") = 0

For Each clave In Dict.Keys
        
    Debug.Print clave, Dict.Item(clave)
    'MsgBox "Adddict - " & clave & " - " & dict.Item(clave)
Next clave

''*****************************************
End Sub

Sub Reordena()
'Un pequeño ejercicio para reasignar valores y dejar las de valor cero al final

Dim clave As Variant
Dim claveSig As Variant
Dim valor As Variant
Dim valorSig As Variant
Dim prefijo As String
    prefijo = "MiClave"
Dim i As Byte

If Dict Is Nothing Then

    Debug.Print "No existe el diccionario."
    Exit Sub
End If

i = 1

    For Each clave In Dict.Keys

        'Constuyo la clave siguiente
        claveSig = prefijo & i + 1
        
        'Recojo el valor de la siguiente clave
        valorSig = Dict.Item(claveSig)
        
        'Si el valor es cero
        valor = Dict(clave)
        If valor = 0 Then
        
            'Cambio el valor
            Dict(clave) = valorSig

            'Cambio el valor de la siguiente clave
            Dict(claveSig) = 0
            
        End If
        'En la penúltima salgo, la última ya será = 0
        If clave = "MiClave4" Then Exit For
        i = i + 1
    Next clave

For Each clave In Dict.Keys

    Debug.Print clave, Dict.Item(clave)
    'MsgBox "Dict - " & clave & " - " & Dict.Item(clave)
Next clave

End Sub


Editado por Mihura - 02/Marzo/2024 a las 13:32
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: 02/Marzo/2024 a las 12:20
Ok, gracias.

Para algunos será un comienzo.
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