Página 1 de 4

DBF não gravando

Enviado: 09 Jan 2020 01:41
por JoséQuintas
NUNCA aconteceu isto.

Código: Selecionar todos

   SELECT jpanpmov
   GOTO TOP
   DO WHILE ! Eof()
      RecLock()
      REPLACE jpanpmov->amAnpNum WITH StrZero( nContador, 6 )
      RecUnlock()
Acompanhei pelo debug, está executando essa linha de gravação.
Mas ao olhar o DBF... tá tudo vazio.

DBF não gravando

Enviado: 09 Jan 2020 09:00
por JoséQuintas
O problema continua.
Coloquei pra mostrar durante a gravação, e mostra certo.
Mas no final, mesmo NÃO fechando arquivos, tá vazio.

Só resta agora usar alguma alternativa pra substituir esse dbf temporário.

Mas ainda tenho coisas em DBF, não sei o que pensar.

DBF não gravando

Enviado: 09 Jan 2020 09:40
por janio
Possíveis problemas:

- Falta de commit ao final do loop
- Antivirus
- Problema disco rígido
- Cache do windows
- Tabela corrompida

DBF não gravando

Enviado: 09 Jan 2020 10:08
por Kapiaba
Tente:

Código: Selecionar todos

   SELECT jpanpmov
   GOTO TOP

   WHILE ! Eof()

      IF EOF()

         APPEND BLANK // Novo registro.

      ELSE  // Alteracao de registro.

         GOTO nRecno

      ENDIF   

      RecLock()

      REPLACE jpanpmov->amAnpNum WITH StrZero( nContador, 6 )

      Commit

   ENDDO

   Unlock
Abs

DBF não gravando

Enviado: 09 Jan 2020 12:23
por alxsts
Olá!

Outras opções:

Código: Selecionar todos

jpanpmov->( DbGoTop() )

While jpanpmov->( ! Eof() )
   jpanpmov->( RecLock() ) , ;
               amAnpNum := StrZero( nContador, 6 ), ;
               DbCommit(), ;
               RecUnLock(), ;
               DbSkip() ;
             )
Enddo

// Ou

jpanpmov->( DbGoTop(), DbEval( { ||amAnpNum := StrZero( nContador, 6 ) } ), DbCommit() )

DBF não gravando

Enviado: 09 Jan 2020 14:07
por JoséQuintas
O problema era o programador.
Tinha dois campos com nome parecido pra numeração.
Estava salvando em um e olhando o outro.
É que teve tanta coisa pra resolver, que não estava enxergando o nome diferente.
Agora pude eliminar a numeração local, e deixar só a numeração oficial, que faz parte da transmissão.
Nunca mais vai ter confusão.

DBF não gravando

Enviado: 14 Jan 2020 11:59
por Marcos Kieron
O nome do campo está complicado demais
Sugiro fazer o seguinte:
Usar nomes simples, fáceis e óbvios.
Deletar o índice, reconstruir o NTX ou CDX ou NDX que estiver usando
Resetar o computador

ou melhor ainda, não usar DBF, use SQLite, MySQL, Postgress, etc... qualquer coisa que não seja DBF vai ser melhor

DBF não gravando

Enviado: 14 Jan 2020 13:58
por JoséQuintas
Marcos Kieron escreveu:O nome do campo está complicado demais
Sugiro fazer o seguinte:Usar nomes simples, fáceis e óbvios.
Um dos campos foi eliminado.
Marcos Kieron escreveu: Deletar o índice, reconstruir o NTX ou CDX ou NDX que estiver usando
Resetar o computador ou melhor ainda, não usar DBF, use SQLite, MySQL, Postgress, etc...
qualquer coisa que não seja DBF vai ser melhor
o arquivo é temporário, sem sentido criar em servidor.

DBF não gravando

Enviado: 14 Jan 2020 22:37
por Marcos Kieron
entao nem perde tempo, use o SQLite que vai ganhar muito mais em velocidade

DBF não gravando

Enviado: 15 Jan 2020 09:52
por Kapiaba
Bom dia Marcos, tens um exemplo simples de uso da SQLite?? Obg. abs.

DBF não gravando

Enviado: 15 Jan 2020 11:23
por asimoes
Kapiaba escreveu:Bom dia Marcos, tens um exemplo simples de uso da SQLite?? Obg. abs.
Um exemplo de CRUD tem como postar?

DBF não gravando

Enviado: 15 Jan 2020 11:29
por Marcos Kieron
SQLite para quem precisa: https://hmglights.wordpress.com/2014/03 ... m-precisa/

DBF não gravando

Enviado: 15 Jan 2020 11:34
por Kapiaba
Asimões, aprendi uma nova:

CRUD (acrónimo do inglês Create, Read, Update and Delete) são as quatro operações básicas (criação, consulta, atualização e destruição de dados) utilizadas em bases de dados relacionais (RDBMS) fornecidas aos utilizadores do sistema.

SQLite é para Harbour MiniGUI Lights? Não conheço e não uso. Uso Fivewin. Mesmo assim agradeço Marcos.

Vivendo e aprendendo. Many thanks. Abs.

DBF não gravando

Enviado: 15 Jan 2020 11:56
por Marcos Kieron
Não, pode usar em qualquer linguagem, Harbour, HMG, C, etc...
Só passei aquele exemplo porque estava na mão, mas tem outros.

Veja na comunidade HMG também (com exemplos de uso):
http://www.hmgforum.com/viewtopic.php?f=15&t=853
http://www.hmgforum.com/viewtopic.php?f=5&t=5994
http://www.hmgforum.com/viewtopic.php?f=6&t=1507
http://www.hmgforum.com/viewtopic.php?f=24&t=5271
http://www.hmgforum.com/viewtopic.php?f=15&t=4502
http://www.hmgforum.com/viewtopic.php?t=1507
http://www.hmgforum.com/viewtopic.php?f=5&t=1854
http://www.hmgforum.com/viewtopic.php?f=8&t=1562

Aqui mesmo neste forum:
viewtopic.php?f=42&t=18480

Do mesmo autor:
https://programandoxbase.wordpress.com/ ... -classe-i/

Basta substituir a parte HMG por equivalente FiveWin ou outro que utilize

DBF não gravando

Enviado: 15 Jan 2020 12:19
por JoséQuintas
Kapiaba escreveu:SQLite é para Harbour MiniGUI Lights? Não conheço e não uso. Uso Fivewin. Mesmo assim agradeço Marcos.
Se não me engano, no Harbour a contrib acrescenta o SQLite ao Harbour, sem precisar nada adicional.

Isso me leva a pensar uma coisa:

Será o SQLite rápido, ou trabalhar com SQL é que faz dele rápido?
Porque DBF através de comandos SQL... é muito rápido.