Ir para conteúdo
Fórum Script Brasil
  • 0

Variáveis Públicas


André Basílio

Pergunta

Tenho um sistema em Access que busca arquivos JPG em certos diretórios, sendo que estes diretórios devem poder ser configurados pelo administrador do sistema.

Criei uma tabela para poder armazenar as configurações. Defini o conteúdo de cada campo (com a configuração específica de cada campo), mas não consigo usar uma função que obtenha esse valor numa expressão em VB.

Por exemplo: a tabela com o nome de "Configurações" tem um campo chamado "Localização das fotos dos funcionários", que tem o conteúdo "C:\AB Frota\Fotos\Funcionários\". Preciso utilizar isso no código abaixo:

Me.ImagemFoto.Picture = [Localização das fotos dos funcionários] & "arquivo.jpg"

Como não consegui fazer isso, tentei criar variáveis públicas definindo a localização do diretório das fotos. Criei um subprocedimento para isso, mas ele não pôde ser aberto com uma macro do tipo Autoexec devido a uma limitação do Access. Então, tive que mudar de subprocedimento para função, que pode ser aberta por um Autoexec. A função que criei é pública e estática, com variáveis também estáticas, conforme abaixo:

Public Static Function DeclaraVariaveis()

Static DirFotosFunc As String

...

DirFotosFunc = "C:\AB Frota\Funcionários\"

...

End Function

Porém, mesmo definindo as variáveis como estáticas, ao término da execução da função, as variáveis ficam com seus valores inacessíveis a comandos como: PRINT DirFotosFunc.

O estranho é que fiz um teste e percebi que as variáveis que criei mantêm seus dados armazenados, mas são lidos somente enquanto a função é executada. Ao término da execução, seus valores não ficam disponíveis normalmente ao sistema.

Então, tenho duas dúvidas:

1 - Como buscar dados numa tabela para utilizar como configuração em qualquer parte do programa?

2 - Como criar uma variável pública para utilizá-la a qualquer momento?

Obrigado pela atenção de todos!

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

ummm pelo que que vi você pode incluir essa variavel logo no inicio do codigo principal do seu PRG, ou seja não colocar ele dentro de nenhuma função, logo no inicio tem se não me engano "Option Explicit" ou algo assim... e lá você adiciona essa variavel que o restante do codigo irá reconhece-la em qualquer parte do seu sistema!!!

:)

Link para o comentário
Compartilhar em outros sites

  • 0

Tentei fazer isso, mas não funcionou. Talvez eu esteja fazendo errado. Tentei da seguinte forma:

Option Explicit

Dim AntecAvisoTrocas As Integer

Dim DirSis As String

Dim DirFotosFunc As String

Dim DirFotosProd As String

Dim DirFotosVeic As String

Public Static Function DeclaraVariaveis()

AntecAvisoTrocas = 10

DirSis = "C:\AB Frota\"

DirFotosFunc = "C:\AB Frota\Funcionários\"

DirFotosProd = "C:\AB Frota\Funcionários\"

DirFotosVeic = "C:\AB Frota\Funcionários\"

End Function

Criei a função DeclaraVariaveis() após a criação das variáveis porque, estando tudo dentro do Option Explicit não funciona. O Option Explicit não aceita criar variáveis como Static.

Ainda não consegui deixar as variáveis públicas. Se alguém puder me ajudar, agradeço muito!

Atenciosamente,

André Basílio.

Link para o comentário
Compartilhar em outros sites

  • 0

CONSEGUI! Troquei os "Dim" por "Global" e deu certo! O código ficou assim:

Option Explicit
    Global AntecAvisoTrocas As Integer
    Global DirSis As String
    Global DirFotosFunc As String
    Global DirFotosProd As String
    Global DirFotosVeic As String
Public Static Function DeclaraVariaveis()
    AntecAvisoTrocas = 10
    DirSis = "C:\AB Frota\"
    DirFotosFunc = "C:\AB Frota\Fotos\Funcionários\"
    DirFotosProd = "C:\AB Frota\Fotos\Produtos\"
    DirFotosVeic = "C:\AB Frota\Fotos\vêículos\"
End Function

Agora, preciso saber como posso buscar essas variáveis diretamente de uma tabela, podendo ser o sistema configurável pelo próprio usuário, sem ter que mexer nas linhas de programação.

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

Caro André,

Para que você possa utilizar tranquilamente variáveis em vários formulários, sem se preocupar em perdê-las quando fechar o formulário onde as variáveis estão armazenadas, crie um novo módulo e dentro dele declare as suas variáveis como públicas (por ex. Public strDirSis As String). No seu caso, para que você permita que o usuário escolha o diretório onde estão os arquivos, basta utilizar a caixa de diálogo abrir e salvar do VBA, e configure-a para armazenar o caminho, sem que seja necessário selecionar um arquivo.

Envie o seu e-mail e te enviarei o arquivo do Access. Não estou conseguindo anexar a esta mensagem.

O arquivo funciona da seguinte maneira: Fiz um formulário onde estão os campos txtFotosFunc, txtFotosProd, txtFotosVeic e txtDirSis. Quando o usuário der dois cliques sobre os mesmos será abera a caixa de diálogo abrir e salvar, e quando o usuário escolher um diretório, o caminho do mesmo ficará armazenado no campo. B)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...