Usando Arquivos dBASE Com o Microsoft Jet


O driver de IISAM Xbase do Microsoft Jet dá suporte às versões seguintes da linha de produtos dBASE da Borland: dBASE III, dBASE IV, e dBASE 5.0. Quando você está tendo acesso a bancos de dados dBASE pelo Microsoft Jet, você também deve considerar como o Microsoft Jet manipula os tipos de dados do Paradox, registros excluídos, índices dBASE e campos Memo.

Anexando Tabelas do dBASE

Para anexar um banco de dados do dBASE ao seu banco de dados Microsoft Jet , use o método OpenDatabase para abrir o banco de dados Microsoft Jet local, crie um objeto TableDef, e configure as propriedades Connect e SourceTableName do objeto TableDef para indicar o caminho e o nome, respectivamente, da tabela dBASE que você quer anexar.

O exemplo seguinte anexa uma tabela dBASE IV externa e então exibe uma caixa de mensagem como confirmação:

Public Sub AnexaTabelaDBase()

Dim dbsJet As Database

Dim tdfDBaseTable As TableDef

' Abre o banco de dados Jet.

Set dbsJet = OpenDatabase ("C:\Jet_Samp.mdb")

' Cria um objeto TableDef.

Set tdfDBaseTable = dbsJet.CreateTableDef ("Tabela Anexada dBASE")

' Informa os dados para a conexão.

' O parâmetro "DATABASE=" é o caminho onde se ' encontra a tabela no disco local ou na rede.

tdfDBaseTable.Connect = "dBASE IV;DATABASE=\\dBASE\Data\AP"

tdfDBaseTable.SourceTableName = "Accounts"

' Adiciona o objeto TableDef à coleção TableDefs

' para criar a anexação.

dbsJet.TableDefs.Append tdfDBaseTable

' Exibe a mensagem de confirmação.

MsgBox "Terminada a anexação " & tdfDBaseTable.SourceTableName & ".", 0

End Sub

Abrindo Tabelas do dBASE

Para abrir uma tabela do dBASE diretamente, use o método OpenDatabase para indicar o caminho, valor de acesso exclusivo, valor somente de leitura, e nome da fonte de dados.

O exemplo seguinte abre uma tabela dBASE III externa diretamente e cria um objeto Recordset da tabela:

Public Sub OpenDBaseTable()

Dim dbsdBASE As Database

Dim rstAccounts As Recordset

' Abre o banco de dados externo dBASE.

Set dbsdBASE = OpenDatabase ("\\dBASE\Data\AP", False, False,"dBASE III;")

' Cria um objeto recordset da tabela Accounts.

Set rstAccounts = dbsdBASE. OpenRecordset("Accounts")

End Sub

Convertendo Tipos de Dados dBASE Para Tipos de Dados Microsoft Jet

O Microsoft Jet traduz cada tipo de dados do dBASE em tipos de dados correspondentes do Jet quando sua aplicação lê os dados. A tabela seguinte mostra a correspondência um-para-um entre tipos de dados.

Tipos de Dados do dBASE               Tipos de Dados Microsoft Jet

Character                                             Text                   

Numeric                                                Float Double

Logical                                                  Boolean

Date                                                      Date/Time

Memo                                                    Memo

OLE                                                         Long Binary

Lidando com Registros Deletados

Quando você deleta um registro de uma tabela do dBASE na sua aplicação, o registro está marcado como deletado na tabela. O registro não é, porém, removido da tabela porque o dBASE não elimina registros deletados até a tabela ser compactada. Uma vez que você não pode compactar uma tabela do dBASE com o Microsoft Jet, você tem que compactar o banco de dados no dBASE para remover os registros fisicamente.

Embora registros marcados para exclusão não sejam removidos de fato no banco de dados fonte, eles não aparecerão em sua aplicação porque o Microsoft Jet automaticamente filtra os registros deletados. Se você quer que registros marcados para exclusão apareçam em seu conjunto de dados, você tem que atribuir o valor FALSE para o item Deleted na chave

 \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Xbase

do banco de dados de registro do Windows/95 ou NT. Feito isso, você tem que reiniciar a aplicação que usa o Microsoft Jet para refletir as exclusões de registro.

Lidando com Índices do dBASE

Para acelerar o acesso a tabelas do dBASE com o Microsoft Jet, especifique os índices dBASE .ndx ou .mdx a serem usados. Você pode especificar arquivos de índice em um arquivo .inf criando um arquivo de texto com o mesmo nome de arquivo do seu banco de dados dBASE e juntando uma extensão .inf. Para localizar índices associados facilmente, é melhor por o arquivo .inf no mesmo diretório da tabela associada. Porém, se a tabela está em um diretório somente de leitura, você pode especificar um caminho diferente usando o valor INFPath na chave

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Jet\3.5\Engines\Xbase

no Registro do Windows.

O procedimento seguinte descreve como criar um arquivo de .inf para o banco de dados dBASE hipotético chamado Sales.dbf.

1. crie o arquivo de texto Sales.inf.

2. na primeira linha, adicione o identificador de tipo de banco de dados entre chaves. Por exemplo, para especificar um índice dBASE III, digite o seguinte:

[dBASE III]

3. Atribua um número de índice ao primeiro índice para o banco de dados. Numere o primeiro índice NDX1, o segundo NDX2, e assim por diante. Se você quer especificar arquivos de índice múltiplos (.mdx) para dBASE IV ou dBASE 5.0 , use números de índice da forma MDX1, MDX2, e assim por diante. Você também pode especificar índices únicos prepondo a string "UIDX" ao número do índice. Para índices MDX, preponha a string "MDX" ao número do índice.

4. Siga o número de índice com um sinal de igual e o nome do arquivo de índice que você quer especificar, inclusive a extensão. Não ponha nenhum espaço nesta entrada. Por exemplo, para especificar o índice custname.ndx como o primeiro índice e o índice único custno.ndx como o segundo índice, junte as entradas seguintes:

NDX1=custname.ndx

UIDX1=custno.ndx

5. Repita os passos 3 e 4 até que você tenha especificado todos os índices para a tabela do banco de dados. Seu arquivo de .inf completado deve ficar semelhante ao seguinte:

[dBASE III]

NDX1=custname.ndx

UIDX1=custno.ndx

6. Salve o arquivo .inf no diretório que contém seu banco de dados dBASE. Alternativamente, você pode criar uma entrada no Registro do Windows para apontar o caminho onde o arquivo .inf é armazenado. Isto é útil se você não pode armazenar o arquivo .inf no mesmo diretório com o banco de dados ou se você quer manter todos os arquivos .inf em uma localização compartilhada para manutenção fácil.

Se você quer criar uma entrada INFPath em seu Registro do Windows, você tem que adicionar o valor manualmente com o Editor de Registro na forma de uma string. Para adicionar o valor, abra a chave \HKEY_LOCAL_MACHINE \

SOFTWARE\Microsoft\Jet\3.5\Engines\Xbase no Registro do Windows; no menu Edit, aponte para New, e então clique String Value. Digite INFPath como o nome, e digite o diretório completo ou caminho na rede para o arquivo .inf na coluna de dados. Salve as mudanças no Registro e reinicie a aplicação que usa o Microsoft Jet para poder usar esta configuração.

Lembre-se de que o Microsoft Jet precisa atualizar seu arquivo de índice periodicamente quando você muda os dados em seu banco de dados dBASE. Se você associa arquivos de índice a um banco de dados dBASE que é anexado ou é aberto de um banco de dados Microsoft Jet, você precisa ter certeza que os índices também estão disponíveis ao seu banco de dados Microsoft Jet.

Importante não apague ou mova os arquivos de índice ou .inf sem atualizar as referências associadas (como o Registro do Windows). Se o Microsoft Jet não tem acesso à informação de índice atualizada, não pode processar consultas corretamente.

Lidando Com Campos Memo

Campos Memo para bancos de dados dBASE são armazenados no sistema de arquivos em vez de no banco de dados. Se você quer anexar ou abrir um banco de dados do dBASE que tem campos Memo, tenha certeza de que os arquivos Memo são armazenados no mesmo diretório que os arquivos de banco de dados.

Exportar uma tabela ou consulta para um arquivo Paradox ou dBASE usando o Access

  1. Na janela Banco de dados, clique no nome da tabela ou consulta (banco de dados do Microsoft Access apenas) que você deseja exportar e, no menu Arquivo, clique em Exportar.
  2. Na caixa Salvar como tipo, clique no formato de banco de dados Paradox ou DBASE desejado.
  3. Clique na seta à direita da caixa Salvar em e selecione a unidade de disco ou pasta para a qual você deseja exportar.
  4. Na caixa Nome do arquivo, digite o nome do arquivo e, em seguida, clique em Salvar tudo.

Observações