Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

claudemircruz

cOMO LER UM BANCO DBF EM ASP

Recommended Posts

velho... pelo q conheço com base de dados.. como o DBF é uma base antiiiiga... mas q anteriormente era muito comum sua utilização e seus drivers existem porai... ... a ideia de acessá-la eh a mesma....

 

um driver instalado específico da base (ADO, OLE DB)... e sua manipulação eh via SQL ANSI...

 

mas tem algumas coisas na net falando... da uma procurada...

http://www.macoratti.net/d280304.htm

 

ou entaum vai no google e busca por: dbf with asp

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dei uma olhada no endereço acima....e criei o seguinte código:

 

ASP [/tr][tr]<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

 

<%

Function AbrirDBFCon(Caminho)

Dim ConexaoSia

Set ConexaoSia = CreateObject("ADODB.Connection")

ConexaoSia.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Caminho & ";" & "Extended Properties=""DBASE IV;"";"

Set AbrirDBFCon = ConexaoSia

End Function

 

Dim DBConn

Set DBConn = AbrirDBFCon("c:\Bases\SIA")

 

Dim S_PA

Set S_PA = DBConn.Execute("Select * from [s_PA#DBF]")

 

S_PA.MoveFirst

 

%>

[/tr]

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Exportando Dados Dos SIa e FCES para SQL Server</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

</head>

 

<body>

ASP [/tr][tr]

<%Do While Not S_PA.EOF

response.Write(S_PA(0) & " - " & S_PA(1) & " - " & S_PA(2))

S_PA.MoveNext

Loop

%>

[/tr]

</body>

</html>

 

e quando executo aparece o seguinte erro:

Informações técnicas (para a equipe de suporte)

 

Tipo de erro:

Microsoft JET Database Engine (0x80004005)

Erro inesperado causado pelo drivers de banco de dados externo (15877).

/smslorena/TMP7q1z94g9jn.asp, line 17 => linha do ( Set S_PA = DBConn.Execute("Select * from [s_PA#DBF]"))

e já tentei mudar para Set S_PA = DBConn.Execute("Select * from [s_PA.DBF]")

Compartilhar este post


Link para o post
Compartilhar em outros sites

O nome de sua base de dados é SIA?, Tem que fazer tb algumas alterações, visto que o código mostrado lá foi gerado Em VB e não VBScript.

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<%

Function AbrirDBFCon(Caminho)

Dim ConexaoSia

Set ConexaoSia = Server.CreateObject("ADODB.Connection")

ConexaoSia.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Caminho & ";" & "Extended Properties=""DBASE IV;"";"

Set AbrirDBFCon = ConexaoSia

End Function

 

Dim DBConn

Set DBConn = AbrirDBFCon("c:\Bases\SIA") ' aqui deve vir caminho e nome do arquivo (sem a extensão)

 

Dim S_PA

Set S_PA = DBConn.Execute("Select * from [s_PA#DBF]") ' o que está entre [] é o nome da tabela acrescido do #DBF

 

S_PA.MoveFirst

%>

[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

As Tabelas estão no diretório c:\Bases\Sia, aqui tenho mais de 100 tabelas. Como daria nome da base de dados para arquivos dbf, eles não tem um gerenciados de arquivos de banco?Tem?

 

Se eu colocar o nome da tabela na linha como você indicou, o caminho fica inválido

 

ASP [/tr][tr]Set DBConn = AbrirDBFCon("c:\Bases\SIA") [/tr]
' aqui deve vir caminho e nome do arquivo (sem a extensão)

 

 

 

 

sim, entre o [] é o nome da tabela acrescido do DBF como no exemplo....

 

não notei nenhuma alteração entre o código que postou e o meu anterior...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ops, desculpe! é isso mesmo. sobre as alterações acrescentei um "Server." na criação do objeto de conexão. Faça um teste retirando as [] de sua SQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei o Server q acrescentou e acorre o seguinte erro:

 

Tipo de erro:

Microsoft JET Database Engine (0x80004005)

Erro inesperado causado pelo drivers de banco de dados externo (15877).

/smslorena/TMPb8nzp4ge3q.asp, line 17

 

esta é a linha 17

 

ASP [/tr][tr]Set S_PA = DBConn.Execute("Select * from [s_PA#DBF]")[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

OPS: mesmo retirando o [] e ficando assim oerro é o mesmo:Set S_PA = DBConn.Execute("Select * from S_PA#DBF")até tentei colcar (.) no lugar do # mais deu o mesmo erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

velho.. naum manjo nada de DBF.. nunca mexi na verdade...

você jah deve ter checado isso, mas vou perguntar, as vezes passa despercebido....

 

a versão do DBF eh a mesma q você está definindo???

"Extended Properties=""DBASE IV;"";"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma coisa que estava vendo, você deve ter um arquivo .DBF onde ele está localizado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Set DBConn = AbrirDBFCon("c:\Bases\SIA") Esta é a localização do dbf...vou verificar a versão do dbf

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai brother... usa isso que funciona 100%

<%
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Driver={Microsoft dBASE Driver (*.dbf)}; DriverID=277; DBQ=" & Server.MapPath("..\dados\")
%>
E para acessar você usa por exemplo:

SELECT * FROM tabela.dbf

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Hargon fiz as alterações que pediu mais apareceu o seguinte erro:

Server.MapPath(), ASP 0172 (0x80004005)

O parâmetro Path para o método MapPath deve ser um caminho virtual. Um caminho físico foi usado.

 

A pergunta é como crio e ste caminho virtual para o Server.MapPath(), ou é um problema aianda no código listado abaixo:

 

ASP [/tr][tr]

<%

Function AbrirDBFCon(Caminho)

Dim ConexaoSia

Set ConexaoSia = Server.CreateObject("ADODB.Connection")

'ConexaoSia.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Caminho & ";" & "Extended Properties=""DBASE IV;"";"

ConexaoSia.Open "DRIVER={Microsoft dBASE Driver (*.dbf)};Driver=277;DBQ=" & Server.MapPath(Caminho)

Set AbrirDBFCon = ConexaoSia

End Function

 

Dim ConexaoDBF

Set ConexaoDBF = AbrirDBFCon("c:\Bases\SIA") 'endereço onde estão as tabelas DBF

 

Dim S_PA

Set S_PA = ConexaoDBF.Execute("Select * from S_PA.dbf") 'Nome da tabela que desejo abrir ( e é justamente nesta linha que dá erro)

 

S_PA.MoveFirst

 

 

 

%>

[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

eae...

no lugar de:

ConexaoSia.Open "DRIVER={Microsoft dBASE Driver (*.dbf)};Driver=277;DBQ=" & Server.MapPath(Caminho)
altere para

ConexaoSia.Open "DRIVER={Microsoft dBASE Driver (*.dbf)};Driver=277;DBQ=" & Caminho

se você está enviando o caminho físico, naum tem necessidade de usar o mappath...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá difícil.....

Quando uso esta linha de comando:

 

ASP [/tr][tr]ConexaoSia.Open "DRIVER={Microsoft dBase Driver (*.dbf)};Driver=277;DBQ=" & Caminho[/tr]

 

dá este erro:

 

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)

[Microsoft][ODBC Driver Manager] Nome da fonte de dados não encontrado e nenhum driver padrão especificado

E quando uso está

 

ASP [/tr][tr]ConexaoSia.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Caminho & ";" & "Extended Properties=""DBASE V;"";"[/tr]

 

o erro é este:

 

Microsoft JET Database Engine (0x80004005)

Não foi possível encontrar ISAM instalável.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Há só pra saber li um artigo que um camarada falava que o erro 0x80004005 no Windows XP ocorria com ele pois suas pastas não estam compartilhadas.Compartilhei minha pasta e de nada adiantou.....(há a pasta unde estão os arquivos dbf)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu utilizo o mesmo código que lhe passei no meu site, com WIN 2000, e utilizo para testes em um servidor local com WIN XP.

 

Não tive problemas em rodar o bdd em nenhum dos dois servidores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.