Important:

Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog podem ser tratados como consultoria freelance.

Views

Access VBA Advanced - Usando o Poder do VBScripit e do WMI - Using the Power of VBScripts and WMI in Microsoft Access VBA



Muitos programadores da suíte MS Office, sequer imaginam poderem explorar as poderosas capacidades de Scripting e WMI (Windows Management Instrumentation - instrumentação de gerenciamento do Windows).

O WMI (instrumentação de gerenciamento do Windows) é a implementação da Microsoft do WBEM, uma iniciativa da indústria que visa estabelecer padrões para acessar e compartilhar informações de gerenciamento por meio de uma rede empresarial. O WMI é compatível com WBEM e fornece suporte integrado ao modelo CIM (modelo de informação comum), o modelo de dados que descreve os objetos existentes em um ambiente de gerenciamento.

O WMI inclui um repositório do objeto compatível com o CIM, que é o banco de dados das definições do objeto, e o gerenciador de objetos CIM, que lida com a coleta e a manipulação dos objetos no repositório e reúne as informações dos provedores WMI. Esses provedores agem como intermediários entre o WMI e os componentes do sistema operacional, aplicativos e outros sistemas. Por exemplo, o provedor do Registro extrai as informações do Registro, enquanto o provedor SNMP fornece os dados e eventos dos dispositivos SNMP. Os provedores dão informações sobre seus componentes e podem fornecer métodos para manipular os componentes, as propriedades que podem ser definidas ou os eventos que podem alertá-lo sobre as alterações nos componentes.

O WMI pode ser usado pelas ferramentas de gerenciamento do computador, como o Microsoft Systems Management Server, para ajudá-lo a gerenciar seus computadores. Ele também é usado por outras tecnologias e ferramentas da Microsoft, como o Microsoft Health Monitor e o Microsoft Operations Manager, e por outros fornecedores de sistemas de gerenciamento dos computadores. Você pode usar o WMI com sistemas de programação ou de scripts (como o host de scripts do Windows) para recuperar detalhes de configuração da maioria dos aspectos dos sistemas de computador, incluindo aplicativos de servidor, ou para gerar alterações nos sistemas.



De fato, é emocionante descobrir que é fácil convertermos VBScript WMI em código VBA deixando-os tão funcionais quanto os scripts.

Embora haja uma série de funções VBSript alguns não podem ser usados ​​no VBA, mas a maioria dos scripts pode ser facilmente modificado para funcionar a partir do MS Access ou outros aplicativos do Office.

Por que ficar animado?

Com VBA e WMI podemos fazer muitas coisas que não são possíveis usando o Windows API. O WMI é tão poderoso que é preciso ter cuidado para não fazermos alguns estragos sérios nos computadores sob a nossa responsabilidade quer localmente, quer num PC remoto ou mesmo num Servidor Windows!

Por que o WMI tão poderoso?

"O WMI é a principal tecnologia de gestão de habilitação embutido nos família de sistemas operacionais Windows 2000, Windows XP e Windows Server 2003. Estão baseados em padrões supervisionados pelo Distributed Management Task Force (DMTF), o WMI é a ferramenta e o encanamento através do qual todos, ou  quase todos, os recursos do Windows podem ser acessados, configurados, gerenciados e monitorados. "

A última frase acima estabelece o tamanho do poder de WMI, o qual você, sim você, tem na ponta dos dedos através do VBA.

Segue uma lista das coisas que podemos fazer localmente ou através de acesso remoto:

Gerenciar usuários e Políticas de Grupo
(Manage Users and Group Policies)

Ler e salvar logs de eventos em arquivos
(Read and save Event Logs to files)

Obter o tamanho de memória livre de um disco rígido
(Get the size of a hard drive's free Memory)

Obter a versão do Microsoft Office
(Get the Version of Microsoft Office)

Obter os atributos das Impressoras
(Get the attributes of Printers)

Obter a versão do OSSP
(Get the Operating System Service Pack Version (CSDVersion–ServicePackLast))

Obter o nome do SO
(Get the Operating System Name)

Obter a versão do SO
(Get the Operating System Version Number)

Obter a versão do compilação do SO
(Get the Operating System Build Number)

Obter o número de série do produto Windows OS
(Windows Operating System Product/Serial Number)

Ter ciência dos Jobs agendadas
(Get Scheduled Jobs)

Conte processos em execução
(Count Running Processes)

Lista dos processos em execução
(List Running Processes)

Encerrar processos
(Terminate Processes)

Deletar softwares

Instalar softwares

Atualizar software

Lista de todos os software Windows instalado
(List all Windows installed software)

Lista todas as IDs dos produtos Microsoft instalados
(List Microsoft software Product IDs)

Retorna o nome do Usuário Registado
Get the Registered User

Nem tudo são flores

A maior dificuldade com o uso de WMI é que existem milhares de propriedades e métodos que estão disponíveis para acessarmos. O WMI tem classes, propriedades e métodos e um dialeto próprio de query VBScript chamado WQL.

WMI usa o Common Information Model (CIM) para acessar informações e executar ações. O CIM nos dá acesso a quase tudo sobre um PC. Podemos aprender mais sobre o CIM aqui.

Finalmente usando

Para que você não morra de curiosidade, segue um exemplo de código VBA usando WMI

Este código obtém os IDs dos Processores de um computador local, o que pode ser muito útil. 

Este código pode ser usado como um template de como acessar e usar grande parte da informação que queremos usar com o WMI.

Function ProcessorIDs() As String

    ' Usando late binding para evitar um problema de referência - late binding
    Dim strComputer As String
    Dim objWMIService As Object
    Dim colItems As Object
    Dim objItem As Object
    Dim strProcessorIDs As String

    Let strComputer = "."

    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" _
        & strComputer & "\root\cimv2")

    Set colItems = objWMIService.ExecQuery( _
        "SELECT * FROM Win32_Processor", , 48)
        
    For Each objItem In colItems
        Let strProcessorIDs = strProcessorIDs & ";" & Nz(objItem.ProcessorID, "")
    Next
    
    ' Remove the leading ; from the string  
    Do While Left(strProcessorIDs, 1) = ";"
        Let strProcessorIDs = Right(strProcessorIDs, (Len(strProcessorIDs) - 1))
    Loop
   
    Let ProcessorIDs = strProcessorIDs

    Set objItem = Nothing
    Set colItems = Nothing
    Set objWMIService = Nothing

End Function

Como funciona o código?

Após declararmos algumas variáveis, criamos uma instância do objeto WMI usando GetObject ("winmgmts:")

Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")

Usamos winmgmts, o CIM Object Manager, para acessar o "root" ("\ root \ cimv2") da biblioteca CIM. Se estiver acessando um computador remoto "{ImpersonationLevel = personificar}! \ \" Concede-nos o acesso se tivermos as credenciais de segurança adequadas.

A variável strComputer passa um valor de "." Quando estamos acessando o computador local. Se quiser acessar um computador remoto, em vez de usar nós, precisamos usar o caminho e o nome do computador remoto ".": GetObject ("winmgmts: \ TargetComputer") ou GetObject ("winmgmts: \ DomainName TargetComputer \").

Em seguida, instanciamos um conjunto de propriedades da classe Win32_Processor WMI.

Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_Processor", , 48)

Nós usamos uma consulta WQL para selecionar todas as propriedades da classe. E podemos aprender mais sobre WQL aqui.

Finalmente temos o 
número de série de identificação do processador numa string.

For Each objItem In colItems
    ProcessorID = Nz (objItem.ProcessorID, 0)
Next

Termos os ProcessorIDs pode nos ajudar a ter algum nível de segurança, permitindo-nos saber se o banco de dados foi copiado para um computador diferente. Se já salvamos pelo menos um dos ProcessorIDs num banco de dados personalizado, podemos verificar se o valor foi alterado usando o código a seguir, que pode ser chamado por uma Macro AutoExec ou num formulário Splash. Atenção: Faça backup de seus arquivos de banco de dados antes de usar o seguinte código.

Function StartSafe() As Boolean
    Dim strProcessorID As String

    ' Get the stored ProcessorIDs from
    ' the custom Database property
    strProcessorID = GetDBPropValue("dbPrpProcessorID")

    If InStr(1, ProcessorIDs, strProcessorID) > 0 Then
        StartSafe= True
    Else
        StartSafe= False
        ' The database has been copied to an unauthorized computer!
        ' Delete the Back End Database to protect your data
        ' Uncomment the next line of code to delete the back end database
        'Kill (CurrentProject.Path & "\BackEndDB.mdb")
        ' If this is the back end add code to Delete all tables
        ' Add code to Delete all Modules
        DoCmd.Quit
    End If
End Function


TenhPode obter o código para a função GetDBPropValue e Funções Propriedades de banco de dados em outros
Criação de banco de dados personalizado Propriedades e uso.

Em nosso próximo artigo vamos aprender mais sobre como usar o poder da WMI com VBA.


Seguem alguns livros para ampliarmos a visão sobre WMI





Tags: VBA, Access, VBScripts, WMI, Microsoft Access, scripiting, advanced, WMI, vbscript, Windows API, WQL, 



English Tips - Prepositions of Place and Direction - Preposições de Lugar




Que tal relembrar/praticar mais algumas preposições de lugar





































Sim, se tiver algum tempo para fazer algumas buscas de palavras, mesmo que no computador, poderá ajudá-lo a fixar um vocabulário mais amplo.

TenteWhere is the ball?

Enjoy!


ReferencesEnglish is fun
                 English will easy

Tags: English Tips, english, inglês, Prepositions, Place, Direction, Preposições

VBA Access 2013 - Facilitando a construção da Data Entry - Data entry made easy



Há muitas melhorias no Access 2013 para ajudá-lo a fazer rapidamente uma interface de usuário para os seus bancos de dados na web. Com esta interface, os seus clientes internos terão tempo hábil para inserirem os dados.

Há duas formas de fazermos isso:

Usarmos a geração automática de dois pontos de vista com base nos seus dados.

Gerarmos controles especiais para a entrada de dados com os itens relacionados e o controle de preenchimento automático.

Criando visualizações automaticamente

A unidade básica de um aplicativo de acesso é uma tabela. Ao descrever um aplicativo com o que ele controla, como por exemplo: "Quero controlar compromissos" ou "Quero acompanhar os pagamentos e as Notas Fiscais", sim, estamos falando de tabelas. Nestes casos, uma tabela para Appointments, Payments, ou Invoices (nomes, pagamentos, ou faturas).

O Access 2013 faz algo realmente útil com todas as tabelas. Sempre que criarmos uma nova tabela (ou efetuarmos determinadas atualizações numa já existente), ele irá automaticamente criar (ou atualizar) dois pontos de vista para nós.

Uma visão é a tela no navegador que mostra com fica quando navegamos via app, através da visão que interage com os dados.

O Access 2013 nos dá o poder para criarmos visões totalmente personalizadas, mas para começarmos mais rapidamente, gerará automaticamente uma exibição de lista, num modo Folha de Dados.

Esta é uma exibição de lista. Ele funciona muito como uma forma de preenchimento em qualquer site.



Este é o modo Folha de Dados. Parece e funciona como uma planilha do Excel.



Tanto no modo Lista quanto no modo Folha de Dados (Planilha), ambos permitem-nos que editemos os dados da nossa app. Se quisermos adicionar novos dados, editar ou excluir dados existentes, haverá uma maneira de fazê-lo na visão.

Podemos criar diferentes tipos de pontos de vista (Visões), além destas duas, e ainda podemos criar duplicatas da mesma visão, mas com diferentes fontes de dados. Por exemplo, poderíamos ter uma lista chamada "todos os funcionários" e uma lista de "empregados atuais".

É importante que assimilemos a ideia de que os pontos de vista são gerados automaticamente para nós quando criamos uma nova tabela. E se atualizarmos a tabela no Designer de Tabela, desde que editemos a visão no Designer de Exibição, a nossa visão será atualizada automaticamente.

Por exemplo, se quisermos adicionar um campo com a Data que o time de futebol joga final  (Ahh, tá bom, não foi um bom exemplo, mas é só para entendermos como inserir um novo campo na interface é rápido) para a sua tabela de Clientes para acompanhar o campeonato e os resultados do time de cada cliente, podemos fazer a mudança no Designer de Tabela.


Após a inserção do novo campo, clique em "Atualizar" no navegador.


Teclas de atalho e barra de ação

Você notará no topo da exibição da lista, uma linha de botões. Isso é chamado de Barra de ação, e inclui uma série dos comandos mais usados ​​que são úteis na interação com os dados noseu aplicativo.

Para a Visão de lista, as seguintes ações são fornecidas automaticamente:
    • Add item
    • Delete item
    • Edit item
    • Save item
    • Cancel item
Estas poucas funções ajudam-nos a obter um aplicativo a partir do nada rapidamente, assim podemos começar a usá-lo imediatamente. Se o cenário requerer personalização avançada ou lógica do negócio, poderá concentrar seu tempo para projetar o que é único na sua situação.

Como essas funções são comuns, também precisamos atribuir algumas teclas de atalho. Desta forma podemos rapidamente mover o aplicativo. Aqui estão as teclas de atalho para cada uma das ações:

    • Add: N
    • Delete: <Delete> key
    • Edit: E
    • Save: Ctrl + S
    • Cancel: Esc
Também notaremos que podemos nos guiar entre links e controles do nosso aplicativo. Atalhos de teclado ajudarão a tornar mais fácil e rápido a interação com os dados da nossa aplicação no Access 2013.

Controles gerados automaticamente para Dados Relacionados

O Access é particularmente poderoso no rastreamento de dados relacionais, isto é, compreender as tabelas se interligam. Por exemplo, se acompanharmos as Tarefas dos Empregados, provavelmente desejaremos ligar as duas tabelas para que cada tarefa tenha um funcionário que lhe é atribuída, e cada empregado terá múltiplas tarefas.

Para relacionar essas duas tabelas criamos uma pesquisa a partir de uma tabela na outra. A pesquisa é uma espécie de campo de uma tabela que pode exibir dados da outra tabela relacionada. Assim, para o exemplo das Tarefas / Funcionários, poderíamos criar um campo de pesquisa chamado "Proprietário" no campo Tarefas que apresenta o nome do funcionário adequado.

Abaixo, estamos usando o Designer de Tabela para olhar a nossa tabela de tarefas. Você pode ver que há uma pesquisa aqui para Empregados, e que a pesquisa é o que faz as duas tabelas se relacionarem.



Sempre que criarmos uma consulta entre duas tabelas, o Access 2013 criará automaticamente alguns controles especiais para nós, de modo que será fácil entrar e vermos os dados nessas tabelas.

Os dois controles especiais para tabelas relacionadas são:

O controle de itens relacionados
O controle autocomplete

O controle de itens relacionados

No exemplo Tarefas / Colaboradores, dissemos que cada funcionário pode ter várias tarefas atribuídas a ele. Não seria bom se pudéssemos ver todas as tarefas de um funcionário só por olharmos para uma visão do empregado? É isso que o controle de itens relacionados faz.

Se navegarmos para um registro numa tabela, neste caso os Colaboradores, veremos todos os registros relacionados com as suas tarefas, graças ao controle de itens relacionados.


Toda vez que criar um relacionamento entre duas tabelas, o Access 2013 tentará gerar itens relacionados para controlar facilmente os dados relacionados.

Isso não é tudo, se clicar em qualquer um dos itens no controle itens relacionados, verá um pop-up que apresenta todos os detalhes para esse item. Quer mais detalhes sobre uma tarefa específica? Basta clicar sobre ela.


O Controle Autocompletar

O controle autocompletar é gerado em casos semelhantes como o controle de itens relacionados, mas verifica-se na tabela em relação ao que não tem um controle de itens relacionados.

Se navegar até uma tarefa e olhar sob proprietário, vai notar que se parece com um link.


Quando clicamos no link, aparece um pop-up com todos os lançamentos e seus detalhes para esse item.


Se quiser alterar a propriedade de uma tarefa, o controle autocomplete ajuda você a encontrar o registro de direito na tabela relacionada. Eu simplesmente começo a digitar o nome de outra pessoa no controle autocomplete, e me é apresentada uma lista suspensa dos resultados da pesquisa. Quando encontrei a pessoa que procuro, apenas aperto enter.


O controle de preenchimento automático e o controle itens relacionados tornaram ainda mais fácil lidar com os dados relacionados. Combinado com o ponto de vista de lista e o modo Folha de Dados, o Access 2013 torna mais fácil para nós visualizarmos e editarmos os dados.

O mais importante é que ao criarmos um aplicativo, podemos nos concentrarmos em projetar o que há de específico e original no cenário, em vez de reconstruir a funcionalidade básica a cada vez.

O Access 2013 é uma ferramenta muito poderosa em termos de rapidez e construção de aplicações web para o seu departamento, organização ou negócio, em parte porque é fácil e rápido para inserir e editar dados.

Tags: MS Access 2013, Office 2013, Access, Access 2013, Data entry, Autocomplete, Control, Related Items, Hotkeys, Action Bar, views, visões, 



Tips - English Descriptive Words - Palavras Descritivas



















Esta é uma oportunidade de relembrar e/ou praticar suas habilidades e perceber se onde pode melhorar. 

Não podemos negar, por mais que desejemos, que o inglês tem uma relevância muito grande nas nossas vidas e nas nossas carreiras.



Que tal aproveitar alguns minutos e assimilar alguns novos termos ou relembrar. Também poderá, se desejar, imprimir estas imagens e deixá-las em um local para onde olha constantemente e paulatinamente ir absorvendo tais novas palavras e expressões.



É certo que se tivermos algum tempo para fazermos buscas de palavras, mesmo que no computador, isso também pode nos ajudar a fixar um bom vocabulário. Tente:



Enjoy!


References: English is fun
                     English will easy

Tags: Tips, english, inglês, Palavras Descritivas, Descriptive words,

LinkWithinBrazilVBAAccessSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine