MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Declarar o tamanho de um array baseado numa variavel

    Compartilhe

    macelolaian
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 09/07/2012

    [Resolvido]Declarar o tamanho de um array baseado numa variavel

    Mensagem  macelolaian em Qui 14 Nov 2013, 17:32

    Boa tarde,
    Estive lendo os topicos sobre arrays, mas em todos os exemplos só se mostra constantes.
    Gostaria de algo como.

    Dim nLinhas As Integer
    Dim nColunas As Integer
    dim arrArray(nLinhas, nColunas) As String

    O problema é que quando faço dessa forma, aparece uma mensagem em ingles dizendo que os valores dos argumentos devem ser constantes. Como proceder?

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8907
    Registrado : 04/11/2009

    Re: [Resolvido]Declarar o tamanho de um array baseado numa variavel

    Mensagem  JPaulo em Qui 14 Nov 2013, 17:41

    Este tópico não ajuda ?

    [Você precisa estar registrado e conectado para ver este link.]


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    HARYSOHN
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12246
    Registrado : 01/03/2011

    Re: [Resolvido]Declarar o tamanho de um array baseado numa variavel

    Mensagem  HARYSOHN em Qui 14 Nov 2013, 17:42

    Pessquise sobre o comando Redim..

    Ele redimensiona uma array.

    Veja este comentário que fiz em um código que utilizo


    '                 Neste ponto eu crio uma Matriz temporária para conter os valores do registro
    '                 no recodset e redimensiono a matriz VarRsUndo para lhe aumentar 1 registro
    '                 Observe a instrução que utilizo para isso:
    '                 ________________________________________________________________
    '                 >>>>> ReDim Preseve VarRsUndo(NumeroColunas,NumeroRegistro) <<<<
    '                 ================================================================
    '                 A instrução ReDim Redimensiona a Matriz em número de colunas e linhas e
    '                 a instrução Preserve mantém os valores anteriores que estão na matriz
    '                 seguidamente realizo um loop na Matriz temporária em suas colunas e a
    '                 cada loop vou adicionando os valores na respectiva coluna e na nova linha
    '                 inserida no comando ReDim



    Cumprimentos.


    .................................................................................
    PILOTO
    الله أكبر Paz, Justiça e Liberdade! الله أكبر
    CLIQUE AQUI E VEJA O VÍDEO >>> BIOMETRIA EM ACCESS

    Iniciando no Access? Então veja esse tópico e também esse


    BUSCA NO FÓRUM - CLIQUE AQUI!!!

    Quando tua dúvida for RESOLVIDA, dê retorno com AGRADECIMENTO a aqueles que gastaram seu tempo em te ajudar.
    Clique no botão Resolvido logo acima do botão Enviar, do lado direito. Todos nós agradecemos.  
    [Você precisa estar registrado e conectado para ver esta imagem.]

    macelolaian
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 09/07/2012

    Piloto

    Mensagem  macelolaian em Sex 15 Nov 2013, 12:49

    Eu não conhecia esse ReDim, mas quando tentei usar, o access me informou que a matriz ja tinha sido dimensionada o.O olha o codigo, olhando bem, ja da pra se ter uma ideia do que preciso:

    Código:

    Option Compare Database
    Option Explicit

    'Função utilizada para fazer os atributos privados
    'Gets e Lets
    Public Function mostraCampos(strTabela As String)
        
        Dim nCampos As Integer
        Dim arrCampos(0, 0) As String
        Dim i As Integer
        
        nCampos = CurrentDb.TableDefs(strTabela).Fields.Count
        
        ReDim Preserve arrCampos(nCampos, 1) '<---- Dá erro nessa linha
        
        For i = 0 To nCampos
            arrCampos(i, 0) = CurrentDb.TableDefs(strTabela).Fields(i).Name
            arrCampos(i, 1) = tipoDado(CurrentDb.TableDefs(strTabela).Fields(i).Type)
        Next
        
        
    End Function

    Private Function tipoDado(argIndex As Integer) As String
        Select Case argIndex
            Case 4
                tipoDado = "Long"
            Case 10
                tipoDado = "String"
            Case 12
                tipoDado = "String"
            Case 2
                tipoDado = "Byte"
            Case 3
                tipoDado = "Integer"
            Case 6
                tipoDado = "Fixed"
            Case 7
                tipoDado = "Double"
            Case 15
                tipoDado = "Replicacao"
            Case 20
                tipoDado = "Decimal"
            Case 8
                tipoDado = "Date"
            Case 5
                tipoDado = "Currency"
            Case 1
                tipoDado = "Boolean"
            Case 11
                tipoDado = "Object"
            Case 12
                tipoDado = "Hiperlink"
            Case 101
                tipoDado = "Anexo"
        End Select
        
    End Function

    HARYSOHN
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12246
    Registrado : 01/03/2011

    Re: [Resolvido]Declarar o tamanho de um array baseado numa variavel

    Mensagem  HARYSOHN em Sex 15 Nov 2013, 12:56

    Experiemente não dimensionar a matriz na sua criação e deixá-la como variant:

    Código:

        Dim arrCampos()


    .................................................................................
    PILOTO
    الله أكبر Paz, Justiça e Liberdade! الله أكبر
    CLIQUE AQUI E VEJA O VÍDEO >>> BIOMETRIA EM ACCESS

    Iniciando no Access? Então veja esse tópico e também esse


    BUSCA NO FÓRUM - CLIQUE AQUI!!!

    Quando tua dúvida for RESOLVIDA, dê retorno com AGRADECIMENTO a aqueles que gastaram seu tempo em te ajudar.
    Clique no botão Resolvido logo acima do botão Enviar, do lado direito. Todos nós agradecemos.  
    [Você precisa estar registrado e conectado para ver esta imagem.]

    macelolaian
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 09/07/2012

    Resolvido

    Mensagem  macelolaian em Sex 15 Nov 2013, 12:58

    Deu certo, lógico Smile
    Muito obrigado.

    HARYSOHN
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12246
    Registrado : 01/03/2011

    Re: [Resolvido]Declarar o tamanho de um array baseado numa variavel

    Mensagem  HARYSOHN em Sex 15 Nov 2013, 13:03

    Só faltou o resolvido no tópico e clicar no joinha da mensagem que o auxiliou.

    Cumprimentos.


    .................................................................................
    PILOTO
    الله أكبر Paz, Justiça e Liberdade! الله أكبر
    CLIQUE AQUI E VEJA O VÍDEO >>> BIOMETRIA EM ACCESS

    Iniciando no Access? Então veja esse tópico e também esse


    BUSCA NO FÓRUM - CLIQUE AQUI!!!

    Quando tua dúvida for RESOLVIDA, dê retorno com AGRADECIMENTO a aqueles que gastaram seu tempo em te ajudar.
    Clique no botão Resolvido logo acima do botão Enviar, do lado direito. Todos nós agradecemos.  
    [Você precisa estar registrado e conectado para ver esta imagem.]

      Data/hora atual: Sab 03 Dez 2016, 19:40