quinta-feira, 23 de junho de 2016

Cuidado com SELECT TOP n no Access

O Access tem algumas características estranhas e uma delas me chamou a atenção:
Se o SELECT TOP n registros apresentar valores duplicados, todos serão exibidos no resultado, o que em algumas situações pode resultar em problemas no banco de dados.
Nas figuras abaixo, exemplifico o caso.
Interessante que, a mesma instrução no SQL Server 2008 R2 (e acredito que em qualquer versão do SQL Server), retorna apenas 1 registro, como era de se esperar.
Na sequencia, parte do help do Access 2007 comentando esse tipo de situação.

;-)




Retorna um determinado número de registros que se encontrem na parte superior ou na parte inferior de um intervalo especificado pela cláusula ORDER BY. Suponha que você queira os nomes dos primeiros 25 estudantes da turma de 1994:


SELECT TOP 25
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage DESC;


Se você não incluir a cláusula ORDER BY, a consulta retornará um conjunto arbitrário de 25 registros da tabela Students que satisfaça a cláusula WHERE.
O predicado TOP não opta por valores iguais.

No exemplo anterior, se as médias de pontuação de grau 25 e 26 forem as mesmas, a consulta retornará 26 registros.


sábado, 18 de junho de 2016

Criar um banco de dados pelo VBA

As vezes é necessário criar um banco de dados durante a execução de um programa.
Apliquei esta solução quando enviava o mesmo banco de dados para clientes diferentes, porém cada um com tabelas específicas.
Não esquecer de marcar a referência no VBA conforme a figura mais abaixo.

;-)


Private Sub CriarBancoDeDados()
 
    Dim objCatalog As ADOX.Catalog
 
    Set objCatalog = New ADOX.Catalog
 
    objCatalog.Create "provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Teste.accdb"

    Set objCatalog = Nothing
 
End Sub




quarta-feira, 15 de junho de 2016

Utiizando funções do Excel em outros aplicativos Office

Um recurso que facilita muito a vida de quem programa em VBA no Microsoft Office é a possibilidade de utilizar recursos de um aplicativo em outro.
Exemplificando, utilizar as funções do Excel no Word através do VBA, veja nas figuras mais abaixo.
Não esquecer de marcar a referência do Excel na versão do Office instalado.

;-)




domingo, 5 de junho de 2016

Conexão ADO em banco de dados Access 2010 com senha

Outro dia precisei fazer uma conexão via ADO num banco de dados criado no Access 2010 com senha.
Utilizei a string de conexão abaixo, mas que sempre informava "Formato de banco de dados desconhecido":

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Banco de Dados1.accdb;Jet OLEDB:Database Password="MinhaSenha"

Em pesquisa na internet, descobri que o problema é na forma como a senha é criptografada no banco de dados, bastando portanto, apenas alterar para o formato antigo, vide imagem.

;-)




sábado, 4 de junho de 2016

Listar tabelas do Access via VBA

Marca a referência:
Microsoft ADO Ext.  2.8 for DDL and Security


Option Compare Database
Option Explicit

Private Sub ListarTabelas()

    Dim cnn As New ADODB.Connection

    Dim catalogo As New ADOX.Catalog
    Dim tabela As New ADOX.Table

    Set cnn = New ADODB.Connection
    cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\northiwnd.mdb"
 
    Set catalogo.ActiveConnection = cnn
 
    For Each tabela In catalogo.Tables
        Debug.Print tbl.Name
    Next


End Sub

Pesquisar este blog

Arquivo do blog

Quem sou eu

Minha foto
Administrador de Empresas/Técnico em Processamento de Dados. Microsoft Office User Specialist - Excel Proficient. Pós-graduado em Business Intelligence.