PROBLEMAS COM IMPORTACAO DE ARQUIVO .DBF

LCSD 05/08/2010 14:06:22
#349529
Pessoal, Boa tarde.......

Estou com um problema [Ô]grave[Ô] em minha aplicação, e até agora não conseguí resolver o meu problema. é o seguinte:
Eu preciso importar um arquivo .DBF para o meu bco de dados SQL SERVER 2005, pelo menos, 2 vezes ao dia. Só que algumas vezes o istema importa o arquivo, e em outras vezes o sistema não o importa.

Fiz o código para a importação de 2 maneiras, vou postar as 2 maneiras e os problemas que estão acontecendo nelas:

FORMA 1:
SQL = [Ô]Select * from lista[Ô]
RSDBF.Open SQL, CnDBF, adOpenKeyset, adLockOptimistic
If Not RSDBF.EOF Then
Cn.BeginTrans
Cn.Execute [Ô]delete from Alunos[Ô]
Cn.CommitTrans
prgImportacao.Max = RSDBF.recordCount
prgImportacao.min = 0
prgImportacao.Visible = True
End If
Do While Not RSDBF.EOF
SQL = [Ô]INSERT INTO ALUNOS (LICODIGO, LINOME, LIVIA, LIBLOQUEIO, LIMENSAG, LIHORINI, LIHORFIN, LIHORINI2, LIHORFIN2, LIVALIDADE, LIVALEXA, LIVALAVA, LIDTAGEXA, LIDTAGAVA) VALUES [Ô]
SQL = SQL & [Ô] ([ô][Ô] & RSDBF!licodigo & [Ô][ô], [ô][Ô] & RSDBF!linome & [Ô][ô], [ô][Ô] & RSDBF!LIVIA & [Ô][ô], [ô][Ô] & RSDBF!LIBLOQUEIO & [Ô][ô], [ô][Ô] & RSDBF!limensag & [Ô][ô], [ô][Ô] & RSDBF!LIHORINI & [Ô][ô], [Ô]
SQL = SQL & [Ô] [ô][Ô] & RSDBF!LIHORFIN & [Ô][ô], [ô][Ô] & RSDBF!LIHORINI2 & [Ô][ô], [ô][Ô] & RSDBF!LIHORFIN2 & [Ô][ô], [ô][Ô] & RSDBF!LIVALIDADE & [Ô][ô], [ô][Ô] & RSDBF!livalexa & [Ô][ô], [ô][Ô] & RSDBF!livalava & [Ô][ô], [Ô]
SQL = SQL & [Ô] [ô][Ô] & RSDBF!lidtagexa & [Ô][ô], [ô][Ô] & RSDBF!lidtagava & [Ô][ô])[Ô]

Cn.BeginTrans
Cn.Execute SQL
Cn.CommitTrans
RSDBF.MoveNext
prgImportacao.value = prgImportacao.value + 1
DoEvents
Loop

PS: Neste exemplo, tem horas que o meu sistema abre o arquivo normalmente, mas não encontra registro NENHUM no meu arquivo DBF, mas ao eu abrir o mesmo arquivo DBF no Excell, ele me mostra a porrada de registros nele.


Forma 2:
SQL = [Ô]SELECT * INTO ALUNOS1 [Ô]
SQL = SQL & [Ô] FROM OPENROWSET([ô]MSDASQL[ô],[ô]Driver={Microsoft dBASE Driver (*.dbf)}; DefaultDir=[Ô] & App.Path & [Ô]\; SourceType=dbf[ô],[ô]select * from lista[ô])[Ô]

Cn.BeginTrans
Cn.Execute SQL
Cn.CommitTrans

PS: Neste exemplo, está me dando o seguinte erro:
O provedor do OLE DB [Ô]MSDASQL[Ô] para o servidor vinculado [Ô](null)[Ô] retornou a mensagem [Ô][Microsoft][Driver ODBC para dBase] [ô](desconhecido)[ô] não é um caminho válido. Certifique-se de que o nome do caminho esteja escrito corretamente e que você esteja conectado ao servidor no qual o arquivo reside.[Ô].


A Conecção com o arquivo DBF está sendo feita da seguinte forma:
Set CnDBF = New ADODB.Connection
[ô]Usando Driver do Foxpro:
str_CN = [Ô]Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=[Ô] & m_Arq & [Ô];Exclusive=No; collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;[Ô]


CnDBF.ConnectionString = str_CN
CnDBF.CursorLocation = adUseClient
CnDBF.Open str_CN


Preciso fazer com que este arquivo DBF seja importado sempre sem maiores problemas, portanto, para mim seria melhor se fosse feito via OPENROWSET.


Conto com a ajuda de vocês.
LUIS.FLAVIO 05/08/2010 15:00:24
#349538
Luiz acho que seria muito bom você utilizar o OPENROWSET, você poderia criar um procedure que executa, segue o link para um verificada!

http://msdn.microsoft.com/pt-br/library/ms190312.aspx
LCSD 05/08/2010 15:16:30
#349541
Caro Luis Flavio,

Só que ao tentar utilizar o OPENROWSET, ele me retorna aquele erro acima citado por mim, ao utlizar via VB6, E se eu tentar executar a query diretamente no meu SQL SERVER, ele me retorna o seguinte erro por lá.


O provedor do OLE DB [Ô]MSDASQL[Ô] para o servidor vinculado [Ô](null)[Ô] retornou a mensagem [Ô][Microsoft][Driver ODBC para dBase] [ô](desconhecido)[ô] não é um caminho válido. Certifique-se de que o nome do caminho esteja escrito corretamente e que você esteja conectado ao servidor no qual o arquivo reside.[Ô].
O provedor do OLE DB [Ô]MSDASQL[Ô] para o servidor vinculado [Ô](null)[Ô] retornou a mensagem [Ô][Microsoft][Driver ODBC para dBase]Atributo de seqüência de caracteres de conexão inválido SourceType[Ô].
O provedor do OLE DB [Ô]MSDASQL[Ô] para o servidor vinculado [Ô](null)[Ô] retornou a mensagem [Ô][Microsoft][Driver ODBC para dBase]Atributo de seqüência de caracteres de conexão inválido SourceType[Ô].
O provedor do OLE DB [Ô]MSDASQL[Ô] para o servidor vinculado [Ô](null)[Ô] retornou a mensagem [Ô][Microsoft][Driver ODBC para dBase]Atributo de seqüência de caracteres de conexão inválido SourceType[Ô].
O provedor do OLE DB [Ô]MSDASQL[Ô] para o servidor vinculado [Ô](null)[Ô] retornou a mensagem [Ô][Microsoft][Driver ODBC para dBase]Erro geral Não é possível abrir a chave [ô]Temporary (volatile) Jet DSN for process 0x6e4 Thread 0x91c DBC 0x4a4f0064 Xbase[ô] do Registro.[Ô].
O provedor do OLE DB [Ô]MSDASQL[Ô] para o servidor vinculado [Ô](null)[Ô] retornou a mensagem [Ô][Microsoft][Driver ODBC para dBase]Atributo de seqüência de caracteres de conexão inválido SourceType[Ô].
O provedor do OLE DB [Ô]MSDASQL[Ô] para o servidor vinculado [Ô](null)[Ô] retornou a mensagem [Ô][Microsoft][Driver ODBC para dBase]Atributo de seqüência de caracteres de conexão inválido SourceType[Ô].
O provedor do OLE DB [Ô]MSDASQL[Ô] para o servidor vinculado [Ô](null)[Ô] retornou a mensagem [Ô][Microsoft][Driver ODBC para dBase]Atributo de seqüência de caracteres de conexão inválido SourceType[Ô].
O provedor do OLE DB [Ô]MSDASQL[Ô] para o servidor vinculado [Ô](null)[Ô] retornou a mensagem [Ô][Microsoft][Driver ODBC para dBase]Atributo de seqüência de caracteres de conexão inválido SourceType[Ô].
O provedor do OLE DB [Ô]MSDASQL[Ô] para o servidor vinculado [Ô](null)[Ô] retornou a mensagem [Ô][Microsoft][Driver ODBC para dBase]Erro geral Não é possível abrir a chave [ô]Temporary (volatile) Jet DSN for process 0x6e4 Thread 0x91c DBC 0x4a4f0064 Xbase[ô] do Registro.[Ô].
Msg 7303, Level 16, State 1, Line 1
Não é possível inicializar um objeto de fonte de dados do provedor do OLE DB [Ô]MSDASQL[Ô] para o servidor vinculado [Ô](null)[Ô].
MARCOSLING 05/08/2010 17:12:23
#349562
Eu utilizo DAO para abrir o DBF e funciona sem problemas.
Tópico encerrado , respostas não são mais permitidas