Página 1 de 1

Programa trabalhando

Enviado: 13 Fev 2024 11:36
por thereit23
Estou tendo muitos problemas com o gerenciamento dos DBFs. Parte do meu programa esta em clipper (maior parte) e a outra esta em Delphi. Quando vou salvar as informações nos dois ao mesmo tempo um deles cai na grande maioria das vezes no delphi... Já pesquisei em foruns relacionado ao delphi ninguem soube me dizer!!

Programa trabalhando

Enviado: 13 Fev 2024 12:01
por JoséQuintas
O Delphi deve permitir: altere pra ADO e use ADS Local.
Não basta acessar DBF, precisam ser compatíveis.
Precisa ser índice compatível senão tem corrupção, precisa ser bloqueio compatível.
E não é todo formato de DBF igual.
Ao mesmo tempo.... grande chance de ser relacionado ao bloqueio, já que mencionou "gravação ao mesmo tempo".
Também pode ter problemas se não liberar direito o registro.
Sempre usei

Código: Selecionar todos

SKIP 0
UNLOCK
Vai ver que sem o SKIP 0 antes do unlock, no Delphi pode aparecer com conteúdo desatualizado, e pode corromper índice.

Isso é básico, tanto faz Harbour & Clipper, Clipper & VB, Clipper & Delphi, Harbour & Delphi, VB e Delphi, ou tudo junto.

Programa trabalhando

Enviado: 16 Fev 2024 04:29
por thereit23
O Delphi deve permitir: altere pra ADO e use ADS Local.
Não basta acessar DBF, precisam ser compatíveis.
Precisa ser índice compatível senão tem corrupção, precisa ser bloqueio compatível.
E não é todo formato de DBF igual.
Ao mesmo tempo.... grande chance de ser relacionado ao bloqueio, já que mencionou "gravação ao mesmo tempo".
Também pode ter problemas se não liberar direito o registro.
Sempre usei
Expandir visualizacaoVer codigo
1 SKIP 0
2 UNLOCK
3


Vai ver que sem o SKIP 0 antes do unlock, no Delphi pode aparecer com conteúdo desatualizado, e pode corromper índice.

Isso é básico, tanto faz Harbour & Clipper, Clipper & VB, Clipper & Delphi, Harbour & Delphi, VB e Delphi, ou tudo junto.
José M. C. Quintas
obrigado, eu te entendo

Programa trabalhando

Enviado: 16 Fev 2024 09:32
por JoséQuintas
Complemento:

É SKIP 0 ANTES de UNLOCK, se inverter é onde outra estação pode alterar mas usando conteúdo velho, não importa se as outras estações são Clipper, Harbour ou outro.

Na época usei Clipper 5.2 com SIXCDX, e VB 6 com ADS Local + ADO + comandos SQL, ADS local configurado pra CDX.

O limite do ADS local era de 20 usuários.
A representante no Brasil deu a entender que esse limite poderia ser aumentado, mas não entrei em detalhes.
O ADS local é grátis, trabalha diretamente SEM servidor, basta o ODBC, o mesmo que seria usado com servidor.

Nota:
Dizem que o dbCommit() também serve, no lugar de SKIP 0, mas NUNCA usei.
O importante é a sequência salvar antes de desbloquear, e SKIP 0 faz isso. (para o sistema operacional).

Programa trabalhando

Enviado: 08 Mar 2024 12:28
por rochinha
Amiguinhos,

thereit23 vale lembrar que Delphi só reconhece indices NDX.

Programa trabalhando

Enviado: 08 Mar 2024 15:05
por rochinha
Amiguinhos,

Encontrei algmas informações de Paulo Bergo, forense do ScriptBrasil que já dizia:
Olá!

Se você está querendo aproveitar tabelas do dBaseIII, Fox ou Clipper...

1) Se você quer (insistir) em usar tabelas DBF com índices NTX no Delphi, terá que usar um componente que "traz" a tecnologia NTX da CA para o Delphi... dentre todas as que experimentei, a única que funcionou foi a Halcyon (5 e 6);

2) Se você quer (insistir) em usar tabelas DBF com índices CDX no Delphi, não há dificuldades, pois os estes índices são perfeitamente aceitos (defina as tabelas como do tipo FoxPro); neste caso, há um bug na gravação de dados quando você usa uma query (sql) e que inclui, na cláusula "where", uma coluna que seja a chave de um índice... este bug faz o processador levar um tempão para gravar um registro quando levaria centesimos de milesimos de segundo...

3) Se você quer (finalmente) ter paz e ficar satisfeito com suas tabelas DBF, passe a acessá-las como sendo do tipo dBASE (Visual dBase), com índices MDX...

Meus programas em Clipper e FoxPro, que estão mantidos no passado, permanecem com suas respectivas tabelas com índices NTX e CDX

Nos programas atuais, em Delphi, uso as tabelas dBase com índices MDX...

Os meus programas em Clipper acessam estas tabelas apenas para pesquisa, ou seja, nada de alterar, excluir ou incluir informações com eles... sem contar que só consegue abrir tabelas simples... as que usam campos especiais (como timestamp ou autoinc) não são aceitas pelas aplicações Clipper... aí, só no Delphi mesmo...

Ok?

Programa trabalhando

Enviado: 08 Mar 2024 16:44
por sygecom
Acredito que nesse caso, para manter uma boa compatibilidade seria migrar o sistema em CLIPPER para Harbour e, usar algumas facilidades que o Harbour oferece para esse tipo de compatibilidade.

Exemplo:
viewtopic.php?f=4&t=11735&p=67116&hilit=SCHEMES#p67116