Tratando arquivos DBF


É isto mesmo , você pode criar , acessar e gerenciar arquivos DBF com páginas ASP. Por que você iria fazer isto ? Bem , quem sabe um dia você seja obrigado a ter que realizar esta tarefa então é só consultar esta dica.

Podemos usar vários provedores para abrir arquivos DBF usando ADODB. A forma padrão é usar uma fonte de dados ODBC (com ou sem DSN) e sobre este assunto eu já falei no artigo :

Mas como fazer a mesma coisa usando um provedor OLE DB ?  Uma das opções é usar o provedor Microsoft.Jet.OLEDB.

Para usar este provedor teremos que usar a propriedade "Extend Properties" para trabalhar arquivos DBF . Este parâmetro pode ser entendido como tendo o mesmo comportamento do parâmetro connect que usamos no método OpenDataBase da DAO. Vejamos um exemplo de como abrir um conexão com arquivos DBF do dbase IV:

Function AbrirDBFCon(Caminho)
  Dim Conn
  Set Conn = CreateObject("ADODB.Connection")
  Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Caminho & ";" & "Extended Properties=""DBASE IV;"";" 
  Set AbrirDBFCon = Conn
End Function

Os arquivos DBF são conhecidos como arquivos no formato ISAM . Você pode encontrar informações sobre os formatos ISAM instalados em sua máquina no registro do windows na chave ::

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\ISAM Formats\

Existem outros formatos ISAM : "dBase 5.0", "Paradox 3.X", "Outlook 9.0" etc.  

Abrindo uma conexão com um arquivo DBF

Vejamos um exemplo real onde iremos abrir uma conexão com um arquivo DBF chamado clientes.dbf que será criado no drive d:\ . Neste exemplo irei mostrar como abrir a conexão , criar uma tabela , inserir e obter registros. A seguir o código:

Nota: estou usando a função AbrirDBFcon criada anteriormente para abrir a conexão com o DBF.

Option explicit
Dim DBConn As Connection

Private Sub Command1_Click()

'abre uma conexao com o aruivo DBF em c:\dbf
Set DBConn = AbrirDBFCon("c:\dbf")

'Cria um novo arquivo dbf chamado clientes
DBConn.Execute "Create Table Clientes (Nome char(50), Endereco char(50), cidade char(20), Cep decimal(8))"

'inclui alguns registros no arquivo dbf
DBConn.Execute "Insert into Clientes Values('Macoratti', 'Rua Mexico 100','Brasilia','14589999')"
DBConn.Execute "Insert into Clientes Values('Miriam', 'Rua Venezuela 90','Lins','01245987')"
DBConn.Execute "Insert into Clientes Values('Jessica', 'Rua Peru , 123,'Americana','12345678')"
DBConn.Execute "Insert into Clientes Values('Jefferson', 'Rua Panama 1890','Vinhedo','01245987')"
DBConn.Execute "Insert into Clientes Values('Janice', 'Rua Bolivia , 1045,'Campinas','12345678')"


'abre o recordset da tabela clientes
Dim Clientes As Recordset
Set Clientes = DBConn.Execute("Select * from [Clientes#DBF]")

'vai para o primeiro registro
Clientes.MoveFirst

'exibe o nome , endereco e cidade
Do While Not Clientes.EOF
   List1.AddItem Clientes(0) & " - " & Clientes(1) & " - " & Clientes(2)
   Clientes.MoveNext
Loop

End Sub

Function AbrirDBFCon(Caminho)
  Dim Conn As ADODB.Connection
  Set Conn = CreateObject("ADODB.Connection")
  Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Caminho & ";" & "Extended Properties=""DBASE IV;"";"
  Set AbrirDBFCon = Conn
End Function
Abaixo o formulário do projeto exibindo o resultado do processamento do código acima:

Nota : embora o código acima esteja sendo executado em um formulário VB para executar em uma página ASP basta fazer pequenos ajustes.

Observe que o arquivo clientes.dbf foi criado via código

Até mais ver ...


José Carlos Macoratti