Página 1 de 1
Indíces corrompidos - Dbedit - Rede
Enviado: 22 Jan 2014 10:03
por Jefferson JF
Tenho uma rede ponto a ponto (XP) na qual acesso em duas estações o sistema.
Em uma rotina, gerencio os dados de um arquivo por meio da Dbedit(), inclusive admitindo a inserção de novos registros.
Ocorre que quando as duas estações estão com a rotina em uso, e consequentemente a Dbedit() aberta em ambas, e uma delas inclui novo registro, os índices são corrompidos.
Há algo a se fazer, sabendo-se que utilizo NSX e necessito da Dbedit() ordenada?
Indíces corrompidos - Dbedit - Rede
Enviado: 22 Jan 2014 12:15
por ANDRIL
Seja bem vindo!
Fica difícil dar um pitaco sem ver sua rotina. O problema está no ponto de inclusão do registro. Veja se antes de incluir voce criou um indice temporario (tipo pesquisou pelo nome do produto). Se o indice temporario tiver ativo, ao incluir o novo registro, a outra máquina não esta vendo este indice e ai pode estar ocorrendo o erro de corrupção.
Antes de incluir, certifique que os indices fixos do DBF estão abertos, tente um
Veja idx1,idx2 usei como exemplo, use os nome dos seus índices.
Ate+
Indíces corrompidos - Dbedit - Rede
Enviado: 22 Jan 2014 13:09
por alxsts
Olá!
Como disse o Andril, é importante a aplicação garantir que todos os índices da tabela estejam abertos.
Nunca trabalhei com NSX e não sei se ele tem a opção de abertura automática dos índices, a exemplo do CDX. Importante também é o controle de lock dos registros nas operações CRUD.
Como você detecta essa suposta corrupção? O registro incluído em uma estação não aparece na outra, mesmo fechando e abrindo o aplicativo? Sempre usei TBrowse() e fazia refresh de tempos em tempos, para refletir as atualizações de outros terminais. E funcionava. Não sei se é possível fazer isso com DBEdit().
Indíces corrompidos - Dbedit - Rede
Enviado: 23 Jan 2014 22:12
por Jefferson JF
Não utilizo índices temporários em minhas rotinas e faço os devidos tratamentos de registros em rede (lock).
Assim como os CDX, os NSX também abrem automaticamente.
Como se trata da mesma rotina sendo aberta em estações diferentes, os índices estão todos abertos.
O ideal seria um refresh automático, pois a operação de inclusão fica dentro da <função> executada pelo DBEdit().
Indíces corrompidos - Dbedit - Rede
Enviado: 24 Jan 2014 05:14
por rochinha
Amiguinho,
Nos primórdios de uso do meu sistema na versão DOS eu tinha uma tela de lançamentos estilo browse e devo ter enfrentado este tipo de problema e tenho pra mim re resolvi o mesmo com indice temporário por estação.
Eu tinha uma tabela com 10 indices, mas criava um novo a cada pedido, em cada estação, e adicionava a lista de indices e setava.
Exemplo:
Eu tinha os terminais 1, 2 e 3. Criava então os indices ITENCX01 no terminal 01, ITENCX02 no terminal 02 e ITENCX03 no terminal 03.
Recriava a cada pedido novo, adicionava o novo indice a lista e setava a ordem para sua posição.
Resolvi meu problema até encontrar outra solução(que nem fui atrás, porque funcionou legal)