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
Moderador: Moderadores
-
Jefferson JF
- Usuário Nível 1

- Mensagens: 4
- Registrado em: 22 Jan 2014 09:50
- Localização: Juiz de Fora
Indíces corrompidos - Dbedit - Rede
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+
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
...
Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Indíces corrompidos - Dbedit - Rede
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().
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)
Alexandre Santos (AlxSts)
-
Jefferson JF
- Usuário Nível 1

- Mensagens: 4
- Registrado em: 22 Jan 2014 09:50
- Localização: Juiz de Fora
Indíces corrompidos - Dbedit - Rede
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().
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().
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Indíces corrompidos - Dbedit - Rede
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)
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.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
