Indíces corrompidos - Dbedit - Rede

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Jefferson JF
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 22 Jan 2014 09:50
Localização: Juiz de Fora

Indíces corrompidos - Dbedit - Rede

Mensagem 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?
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Indíces corrompidos - Dbedit - Rede

Mensagem 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

Código: Selecionar todos

SET INDEX TO idx1, idx2
APPEND BLANK
...
Veja idx1,idx2 usei como exemplo, use os nome dos seus índices.
Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Indíces corrompidos - Dbedit - Rede

Mensagem 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().
[]´s
Alexandre Santos (AlxSts)
Jefferson JF
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 22 Jan 2014 09:50
Localização: Juiz de Fora

Indíces corrompidos - Dbedit - Rede

Mensagem 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().
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Indíces corrompidos - Dbedit - Rede

Mensagem 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)
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder