Clipper On Line • Ver Tópico - Arquivo em memoria, como definir Área

Arquivo em memoria, como definir Área

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

Moderador: Moderadores

 

Arquivo em memoria, como definir Área

Mensagempor porter » 24 Nov 2018 10:48

Olá pessoal,
Procurei alguns exemplos aqui no fórum, mas ainda não consegui esclarecer minha dúvida.
No exemplo abaixo, memArea, é criado na Area 1, mas logo em seguida, preciso abrir um arquivo físico, que também está na Area 1,
então memArea é anulado, como faço para definir memArea na Area 99 por exemplo para abri-lo posteriormente e usa-lo ?

aCampos := {}
aAdd( aCampos , { "REG"    , "C" ,  4 , 0 } )
aAdd( aCampos , { "UF"     , "C" ,  2 , 0 } )
aAdd( aCampos , { "VALOR1" , "N" ,  12, 2 } )
aAdd( aCampos , { "VALOR2" , "N" ,  12, 2 } )   
   
dbCreate( "mem:test", aCampos, "DBFCDX" , .T., "memArea" )
INDEX ON UF TO INDUF

select 1
use produtos SHARED // Aqui memArea é anulado


Harbour 3.2.0(dev)
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

Arquivo em memoria, como definir Área

Mensagempor NiltonGM » 24 Nov 2018 12:44

Amigo, quando usava o Clipper com DBF eu nunca definia área, sempre usava o NEW e o clipper é que se preocupava de encontrar uma área vazia para usar.... para me referenciar ao DBF eu sempre usava o ALIAS.
Veja alguns comandos:
dbUseArea( .T., "DBFNTX", "Sales", "Sales", .T. )
   dbSetIndex( "SALEFNAM" )
   dbSetIndex( "SALELNAM" )
   //
   dbUseArea( .T., "DBFNTX", "Colls", "Colls", .T. )
   dbSetIndex( "COLLFNAM" )
   dbSetIndex( "COLLLNAM" )
   //
   dbSelectArea( "Sales" )      // select "Sales" work area
   //
   IF ( Sales->(dbSeek(cLast)) )
      IF Sales->( Deleted() ) .AND. Sales->( RLock() )
         Sales->( dbRecall() )
         ? "Deleted record has been recalled."
      ENDIF
   ELSE
      ? "Not found"
   ENDIF
Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 393
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 249 vezes
Mens.Curtidas: 24 vezes

Arquivo em memoria, como definir Área

Mensagempor rochinha » 24 Nov 2018 16:51

Amiguinhos,

Porter
Quando se usa áreas você pode direcionar de várias formas, seja, numéricamente, pelo nome do Álias ou pelo nome da tabela.

A muito não se usa mais selecionar por número da área, como exemplificado por niltonGM pois obriga a saber quem está em cada área numérica.

Para facilitar você apenas especifica o nome da tabela ou apelido passado:
...
close databases
use tabela1 shared new alias nome1
use tabela2 shared new alias nome2
use tabela3 shared new alias nome3
...
select tabela2 // seleciona a segunda area
...
select nome1 // seleciona a primeira area
...


Quando você definiu uma área para o seu arquivo de memória, "memArea" você deu um apelido, portante chame-o por ele:
select memArea


ou
dbSelectArea( "memArea" )
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes




Retornar para Harbour

Quem está online

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