Clipper On Line • Ver Tópico - Criar DBF temporário em memória

Criar DBF temporário em memória

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

Moderador: Moderadores

 

Criar DBF temporário em memória

Mensagempor alxsts » 28 Mai 2010 17:44

Olá!

Há algum tempo li um tópico sobre o assunto, neste fórum. Creio que foi postado pelo Itamar. Gostaria de testar isso, ver se melhora a performance. Só não consegui achar o referido tópico. Alguem conhece o assunto?

Grato
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Re: Criar DBF temporário em memória

Mensagempor sygecom » 28 Mai 2010 19:04

Buenas,
Melhora e muito a performance.
Não sei o que você está usando, mas para xHarbour 1.2.1 você tem que linkar a LIB (filemem.lib) e abaixo segue um pequeno exemplo da contrib:
/*
* $Id: test.prg,v 1.1 2009/10/05 14:41:55 marchuet Exp $
*/

REQUEST HB_MEMIO

PROC Main()
   LOCAL nI
   FIELD F1

   DBCREATE("mem:test", {{"F1", "N", 9, 0}},, .T., "memarea")
   FOR nI := 1 TO 1000
     DBAPPEND();  F1 := HB_RANDOM() * 1000000
   NEXT
   INDEX ON F1 TAG f1
   DBEVAL({|| QOUT(F1)})
   DBCLOSEAREA()
   DBDROP("mem:test")  // Free memory resource

   RETURN


Para Harbour 2.0 tens que linkar a lib (hbmemio.lib) e abaixo segue um pequeno exemplo da contrib:
/*
* $Id: test.prg 12600 2009-09-22 12:57:36Z vszakats $
*/

REQUEST HB_MEMIO

PROC Main()
   LOCAL nI
   FIELD F1

   DBCREATE("mem:test", {{"F1", "N", 9, 0}},, .T., "memarea")
   FOR nI := 1 TO 1000
     DBAPPEND();  F1 := HB_RANDOM() * 1000000
   NEXT
   INDEX ON F1 TAG f1
   DBEVAL({|| QOUT(F1)})
   DBCLOSEAREA()
   DBDROP("mem:test")  // Free memory resource

   RETURN
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Re: Criar DBF temporário em memória

Mensagempor sygecom » 29 Mai 2010 10:59

E não deixe de olhar o LetdoDB também que é um ótimo projeto que agiliza muito o uso de DBF em rede e remoto:
http://sourceforge.net/projects/letodb/
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Re: Criar DBF temporário em memória

Mensagempor alxsts » 29 Mai 2010 20:51

Olá!

Leonardo:
Obrigado pela resposta. Foi isso mesmo que eu havia visto.

No que se refere a xBase, eu tinha parado no Clipper 5.2e. Por uma dessas reviravoltas que a vida dá, após passar por outras ferramentas, acabei sendo alocado em um projeto que usa xHarbour. Como não conheço o assunto, encontrei na pesquisa do fórum um pacote demo que você postou, onde tem o xHarbour e a HwGui. É o que instalei na minha máquina:
HbMake v1.20 - xHarbour Make Utility
Copyright (C) 2000-2007 xHarbour project - http://www.xharbour.org
xHarbour build 1.0.0 Intl. (SimpLex) / Borland C++ 5.5.1

No cliente, ainda não olhei qual é a versão mas, sei que é a comercial. Nesta primeira semana, já vi que terei que fazer algumas otimizações de performance (tem processos na empresa que demoram 14 horas para rodar). Por isso estou procurando aprender essas rotinas que diminuem I/O.

Voltando aos exemplos que você postou, não consegui gerar os executáveis. Faltam as duas libs que você mencionou.
c:\BCC55\BIN\ilink32  @makefile.lnk
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_HB_MEMIO' referenced from C:\LIXO\OBJ\DBMEM1.OBJ

Meu Set Lib:
C:\lixo>set lib
LIB=c:\Bcc55\lib;c:\xHarbour\lib;c:\hwgui\lib

C:\lixo>

Provavelmente a versão está desatualizada. E o pior é que não sei como atualizar.

Alguma dica?

Obrigado mais uma vez.
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Criar DBF temporário em memória

Mensagempor asimoes » 23 Out 2018 19:59

Eu faria uso de uma hash table, 100% garantido ser uma tabela em memória
â–º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




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Bing [Bot] e 8 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