Diferença de comportamento com SET AUTOPEN ON hbnetio/letodb

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Diferença de comportamento com SET AUTOPEN ON hbnetio/letodb

Mensagem por asimoes »

Pessoal,

A questão é para o driver DBFCDX tanto para HBNETIO/LETODB onde encontrei comportamento diferente para os dois gerenciadores.

O comando SET AUTOPEN ON faz com que o indice do dbf seja aberto automaticamente sem a necessidade de SET INDEX TO (CDX)

Funciona tanto com HBNETIO/LETODB notei a seguinte diferença:

Tenho uma rotina onde eu preciso criar indices temporários para uma tabela que já tem um indice.

Antes de criar o indice faço:

AbreDbf("APC01")

APC01->(ordListClear())

INDEX ON Codigo TAG IND001 FOR Empty(D_Deslig) .AND. !Deleted() MEMORY ADDITIVE

Com hbnetio o indice é acrescentado aos indices que já existem, ou seja o ordlistclear não funcionou.
Com letodb funciona o ordlistclear somente o indice ind001 está na área de trabalho do dbf
►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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Diferença de comportamento com SET AUTOPEN ON hbnetio/letodb

Mensagem por asimoes »

Exemplificando:

Sem letodb/hbnetio

Código: Selecionar todos

         SET AUTOPEN ON
         fErase("TESTDBF.CDX")
         aStruct:={}
         aAdd(aStruct, {"CODIGO", "C", 5, 0})
         aAdd(aStruct, {"NOME", "C", 30, 0})
         DbCreate( "TESTDBF", aStruct, "DBFCDX",.T., "TESTDBF" )
         INDEX ON CODIGO TAG CODIGO TO TESTDBF
         INDEX ON NOME   TAG NOME   TO TESTDBF
         TESTDBF->(DbCloseArea())
         DbUseArea(.T., "DBFCDX", "TESTDBF", "TESTDBF", .T.) 
         TESTDBF->(ordListClear())
         INDEX ON Codigo                                 TAG IND001  FOR !Deleted() MEMORY ADDITIVE
         INDEX ON Codigo + Nome                          TAG IND002  FOR !Deleted() MEMORY ADDITIVE
         FOR I:=1 TO TESTDBF->(OrdCount())
             ? TESTDBF->(OrdName(i)), TESTDBF->(OrdKey(i))
             inkey(0)
         NEXT
►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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Diferença de comportamento com SET AUTOPEN ON hbnetio/letodb

Mensagem por asimoes »

Testando, ser usar SET AUTOPEN ON ordListClear() não funciona isso com hbnetio, com letodb funciona.
►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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Diferença de comportamento com SET AUTOPEN ON hbnetio/letodb

Mensagem por JoséQuintas »

Se não me engano, autoopen não é recomendado.
Aqui sempre usei com ele desligado, mesmo com Clipper e SIXCDX.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Diferença de comportamento com SET AUTOPEN ON hbnetio/letodb

Mensagem por asimoes »

Quintas,

O interessante é que com letodb funciona! sem o autopen tem que especificar o indice com SET INDEX TO
►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)
Responder