Visual Basic, VB .NET, ASP, Active X, Access, SQL Server

DAO: Exportando Access para formatos ISAM

Todo mundo sabe dizer como importar, mas mesmo os técnicos da Microsoft começam a tossir quando você lhes pergunta como exportar programaticamente com DAO! De fato, a própria documentação da Microsoft claramente estabelece que não pode ser feito (veja a nota na página 314 do Programmer's Guide para o Jet Database Engine "Creating an External Table"). Isto nos causa admiração: "Se é impossível, como então a macro/método TransferDatabase do Access funciona?" E, se a MS não soubesse que é possível, porque eles listaram "HTML Export;" como um especificador de exportação, embora sem mencionar como ele pode ser usado? 

Use este código para exportar dados para diferentes formatos ISAM programaticamente (exceções são listadas abaixo). Crie um novo projeto com um botão de comando e uma referência ao DAO 3.5. Copie então este código para o evento Click do botão ( este exemplo assume que o arquivo de exemplo biblio.mdb está no diretório da aplicação):

Dim db as database

Set db = Workspaces(0).OpenDatabase(app.path & "\biblio.mdb")

' sintaxe comentada e seguida de exemplo funcional

' db.execute "SELECT tbl.Campos INTO 

' [tipo de arquivo de destino;DATABASE=caminho para o destino].[nome para arquivo de destino] 

' FROM [tabela ou tabelas]

db.Execute "SELECT * INTO " _

    [dBase III;DATABASE=C:\My Documents].[testb]" & " FROM [Authors]"

Usando as chaves e os operadores de ponto, você consegue a saida apropriada para um formato ISAM de sua escolha. Também, se você escolher Text, Lotus ou HTML Export como o tipo de arquivo de destino, a consulta cria um arquivo Schema.ini para você automaticamente, ou adiciona uma nova seção para o seu novo arquivo de dados a um Schema.ini já existente no diretório de destino.

Agora você pode fazer qualquer tipo de exportação que o usuário queira sem precisar ter o Access instalado no computador do usuário. Naturalmente você pode limitar o número de campos exportados, criar campos calculados e fazer join com múltiplas tabelas normalmente. Basta modificar texto do SELECT. O estranho é que o que foi dito acima funciona para todos os formatos ISAM exceto dois da própria Microsoft. Na verdade, pastas do Excel5/95 e Excel97 não podem ser criadas com o método acima.