Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.
04 Fev 2016 16:42
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
04 Fev 2016 17:15
Exemplificando:
Sem letodb/hbnetio
- Código:
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
04 Fev 2016 18:15
Testando, ser usar SET AUTOPEN ON ordListClear() não funciona isso com hbnetio, com letodb funciona.
05 Fev 2016 01:07
Se não me engano, autoopen não é recomendado.
Aqui sempre usei com ele desligado, mesmo com Clipper e SIXCDX.
05 Fev 2016 07:56
Quintas,
O interessante é que com letodb funciona! sem o autopen tem que especificar o indice com SET INDEX TO
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.