Página 1 de 1
IDX incompativel com CLIPPER
Enviado: 18 Set 2013 14:28
por VanderSimples
Eu tenho um sistema que converti do CLIPPER 5.2 para Harbour usando arquivos DBF ordenado em IDX
Quando rodo o sistema em Harbour da a mensagem que o Indice esta corrompido então eu deleto os arquivos IDX, entrou no sistema e esta os Índices são criados normalmente.
Se tento abrir o sistema em Clipper da o mesmo erro... aí tenho de deletar os índices para entrar no sistema em Clipper.
Também abri os 2 indices feitos pelo CLIPPER e pelo Harbour usando um editor HEX.
No indice IDX do CLIPPER a chave inicia no byte (16)
No indice IDX do Harbour a chave inicia no byte (22)
Alguém teria alguma ideia de como compatibilizar estes Índices?
Se tiver de usar CDX vai dar um belo de um trabalho...
IDX incompativel com CLIPPER
Enviado: 19 Set 2013 10:48
por sygecom
Procure por:
SET DBFLOCKSCHEME TO <nLockScheme>
DB_DBFLOCK_DEFAULT 0 Default locking scheme
DB_DBFLOCK_CLIP 1 Clipper 5.2 locking scheme
DB_DBFLOCK_CL53 2 Clipper 5.3 locking scheme
DB_DBFLOCK_VFP 3 Visual FoxPro locking scheme
DB_DBFLOCK_CL53EXT 4 Emulated shared locking
DB_DBFLOCK_XHB64 5 Locking scheme for files > 4GB
IDX incompativel com CLIPPER
Enviado: 19 Set 2013 18:06
por Jairo Maia
Olá Pessoal,
Apenas uma observação: O RDD DBF/IDX com Harbour apresenta problemas severos para trabalhar em rede. Salvo se as versões 3.x do Harbour trouxe novidade a esse respeito, em rede os índices desse RDD se corrompem com facilidade.
IDX incompativel com CLIPPER
Enviado: 20 Set 2013 10:50
por VanderSimples
Ola
Sygecon, eu não conhecia este SET DBFLOCKSCHEME TO <nLockScheme>
Mas pelo que li, ele apenas serve para compatibilizar o travamento de registros em rede, será muito útil para mim, mas infelizmente não resolveu meu problema.
Mesmos colocando SET DBFLOCKSCHEME TO no inicio do sistema, antes do MAIN(), os indices foram criados de forma que não consegui abrir no CLIPPER.
Olhando aquivo de include dbinfo.ch achei outra constante:
/* DBF TYPES */
#define DB_DBF_STD 1
#define DB_DBF_VFP 2
Saberia me dizer qual comando que utiliza esta constante? É apenas no DbCreate? Ou tem da para colocar no USE também?
IDX incompativel com CLIPPER
Enviado: 20 Set 2013 11:27
por VanderSimples
Haa... descobri o meu problema... é muito mais simples que eu imaginava.
No clipper quando eu faço:
Código: Selecionar todos
REQUEST DBFCDX
DBSETDRIVER("DBFCDX")
RDDSETDEFAULT("DBFCDX")
use e:\clientes\geren\cadusu.dbf new alias USU shared
index on U_COD to e:\clientes\geren\usucod
O resultado é que ele cria o USUCOD.IDX
fazendo o mesmo no Harbour:
Código: Selecionar todos
#include <hmg.ch>
#include "hbgtinfo.ch"
Function Main
REQUEST DBFCDX
REQUEST DBFFPT
DBSETDRIVER("DBFCDX")
RDDSETDEFAULT("DBFCDX")
SET DBFLOCKSCHEME TO DB_DBFLOCK_CLIP
use e:\clientes\geren\cadusu.dbf new alias USU shared
index on U_COD to e:\clientes\geren\usucod
Return
O resultado é que ele cria um usucod.cdx
Como na minha linha estava assim: index on U_COD to e:\clientes\geren\usucod.idx eu não percebia que na realidade era um CDX.
Então a minha pergunta é alguem sabe como executar o INDEX ON de forma que o HARBOUR crie um IDX e não um CDX?