Clipper On Line • Ver Tópico - Ler DBF com conexão ADODB.Connection

Ler DBF com conexão ADODB.Connection

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Ler DBF com conexão ADODB.Connection

Mensagempor asimoes » 31 Mai 2018 10:16

Pessoal,

Estou acesso com dbf via ADODB.Connection, só que notei uma lentidão absurda na leitura, existe algum exemplo ou conector para ler mais rápido ?

A tabela que eu estou lendo tem 25 mil registros com 11 campos tá levando mais de 15 minutos para ler.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Ler DBF com conexão ADODB.Connection

Mensagempor JoséQuintas » 02 Jun 2018 00:52

Não tem informação suficiente pra dizer alguma coisa.

Usar o ADO, pode usar qualquer coisa, tem algumas opções pra DBF, mas que não fazem parte do ADO.
Além disso, há formas diferentes de usar o ADO, ou de recuperar informações.
Também não sei se está dizendo sobre acesso direto ou via rede.

cheguei a usar ADS Local, que é grátis, compatível com Clipper SIX/CDX, e o acesso era rápido.

asimoes escreveu:A tabela que eu estou lendo tem 25 mil registros com 11 campos tá levando mais de 15 minutos para ler.


Sei não se não deveria ser instantâneo ou quase....
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Ler DBF com conexão ADODB.Connection

Mensagempor asimoes » 02 Jun 2018 10:16

Vou preparar o exemplo para quem quiser estudar
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Ler DBF com conexão ADODB.Connection

Mensagempor JoséQuintas » 02 Jun 2018 10:40

a string pra ADS local, compatível com SIXCDX (fonte VB6):

Case "ADSLOCAL"
    cString = "Provider=Advantage.OLEDB.1;" & _
    "Mode=Share Deny None;" & _
    "Show Deleted Records in DBF Tables with Advantage=False;" & _
    "Data Source=" & Sistema.PathDefault & ";Advantage Server Type=ADS_Local_Server;" & _
    "TableType=ADS_CDX;Security Mode=ADS_IGNORERIGHTS;" & _
    "Lock Mode=Compatible;" & _
    "Use NULL values in DBF Tables with Advantage=True;" & _
    "Exclusive=No;Deleted=No;"


demorar tudo isso, talvez neste comando que eu usava no aplicativo de transportes.
Totais de tudo, vindos de DBFs diferentes, contendo movimentação de vários anos.
( Fonte VB6 mas não muito diferente do Harbour).

cSql = "select " & _
   "cnDatEmi DtEmissao, " & _
   "count(*) CtrcQtd, " & _
   "Sum(cnPeso) CtrcPeso, " & vbCrLf & _
   "Sum(cnValor) CtrcValor, " & _
   "Sum(cnVlMerc) ValorMerc, " & _
   "0 CFQtd, " & vbCrLf & _
   "0 CFValor, " & _
   "0 ColetaQtd, " & _
   "0 ColetaVlr, " & vbCrLf & _
   "0 ColVlMerc " & vbCrLf & _
   "into lixo " & _
   "From gtconhe group by DtEmissao "
cSql = cSql & _
   "union all " & vbCrLf & _
   "select cfDatEmi DtEmissao, " & _
   "0 CtrcQtd, " & _
   "0 CtrcPeso, " & vbCrLf & _
   "0 CtrcValor, " & _
   "0 ValorMerc, " & _
   "count(*) CFQtd, " & vbCrLf & _
   "Sum(CFValor) CfValor, " & _
   "0 ColetaQtd, " & _
   "0 ColetaVlr, " & vbCrLf & _
   "0 ColVlMerc " & vbCrLf & _
   "From gtcontr group by DtEmissao "
cSql = cSql & vbCrLf & _
   "union all " & _
   "Select " & _
   "ceDatEmi DtEmissao, " & _
   "0 CtrcQtd, " & vbCrLf & _
   "0 CtrcPeso, " & _
   "0 CtrcValor, " & _
   "0 ValorMerc, " & vbCrLf & _
   "0 CFQtd, " & _
   "0 CFValor, " & _
   "Count(*) ColetaQtd, " & vbCrLf & _
   "Sum(ceValFat) ColetaVlr, " & _
   "Sum(jpnftr1.ntValor) ColVlMerc " & vbCrLf & _
   "from jpordem " & _
   "left join jpnftr1 on jpordem.ceNumLan = jpnftr1.ntColeta " & _
   "group by DtEmissao " & vbCrLf

SET Rs = cnMySql.Execute( cSql )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google Adsense [Bot] e 3 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro