Página 4 de 4

letodb e letodbf ?

Enviado: 09 Abr 2024 17:34
por leandrolinauer
Boa tarde a todos.
Havia parado uma semana no projeto LETO, mas voltei hoje e consegui vários progressos.
Bom, parei no seguinte:
Quanto executo o modulo e abro os arquivos e edito, lanço dados, até aí tudo bem, quando finalizo e tento fechar o banco de dados ocorre erro.

Mensagem do erro
Vindo de: DBCLOSEALL(0) //erra nesta função ou dbclosearea()
Vindo de: ADDORCAMENTO(592)
Vindo de: (b)MENUS(2420)
Vindo de: MYBARMENU(12957)
Vindo de: INICIAMENUKAZA(2218)
Vindo de: MAIN(567)

Descrição...........: Data type error
Parece que ocorre quando fecho banco de dados que estão relacionados
Estudei muitos exemplos e alguns utilizam DBCLOSEALL() ou DBCLOSEAREA() e não dão erros.

Existe alguma configuração no LETO.INI que ou tem algo errado na linha de codigo nas seguintes etapas abaixo?

ABRE ARQUIVOS
RELACIONA ARQUIVOS
.... CODIGOS DE EXECUÇÃO DO FONTES
FECHA ARQUIVOS
SAIR

Grato a todos

letodb e letodbf ?

Enviado: 10 Abr 2024 12:03
por Itamar M. Lins Jr.
Olá!
Parece que ocorre quando fecho banco de dados que estão relacionados
Desligar o relacionamento antes de fechar.

Saudações,
Itamar M. Lins Jr.

letodb e letodbf ?

Enviado: 10 Abr 2024 20:21
por leandrolinauer
Boa noite, pensei nisto logo depois que enviei a pergunta.
Adicionei antes de fechar o banco de dados a função dbclearrelation() mas não funcionou tbem, continuou dando erro no dbclosearea e dbcloseall
Outra pergunta, o dbedit funciona direito no letodbf.
Grato

letodb e letodbf ?

Enviado: 10 Abr 2024 20:56
por JoséQuintas

Código: Selecionar todos

FOR nCont = 1 TO 250
   SELECT      (nCont)
    SET RELATION TO
NEXT
CLOSE DATABASES
Atenção que é COMANDO SELECT, e não função Select()

letodb e letodbf ?

Enviado: 19 Abr 2024 16:52
por leandrolinauer
Boa tarde JoséQuintas
Não tive tempo de trabalhar nos fontes por estes dias, hoje resolvi me dar ao luxo de mexer novamente.
Não sei se arrumei uma dor de cabeça ou algo parecido.
DbCloseAll() //onde da erro no LETO.

Colocando isto antes da certo
FOR nCont = 1 TO 250
SELECT (nCont)
SET RELATION TO
NEXT
DbCloseAll() //evitando dar erro aqui

Mas verificando as funções do LETO, a função abaixo em substituição direta do DBCLOSEALL() por LETO_CLOSEALL() resolve o problema.
Leto_CloseAll() //função do leto propria para fechar o banco de dados.

Resolvi criando uma função para fechar o banco de dados

Código: Selecionar todos

Function New_DBCloseAll()
If oVia_RDD=="LETO"
   Leto_CloseAll()
Else
	DbCloseAll()
EndIf   
Return .T.
e inserindo a linha abaixo no inicio do fonte
#xcommand DBCLOSEALL() => NEW_DBCLOSEALL()

Resolveu o problema, mas o problema é:
É uma gambiarra bem vinda ou não?
Há alguma outra forma de se fazer algo assim parecido?
Problema é ter que colocar a linha #xcommand DBCLOSEALL() => NEW_DBCLOSEALL() no inicio de cada fonte, mas se não há outra forma, farei desta forma mesmo.

Bora para outros erros na adaptação do LETO, bora testar.

Ainda não fiz testes de bancada para ver se da falha no banco de dados ou não.

Grato.

letodb e letodbf ?

Enviado: 19 Abr 2024 17:21
por JoséQuintas
leandrolinauer escreveu:esolveu o problema, mas o problema é:
É uma gambiarra bem vinda ou não?
Há alguma outra forma de se fazer algo assim parecido?
Problema é ter que colocar a linha #xcommand DBCLOSEALL() => NEW_DBCLOSEALL() no inicio de cada fonte, mas se não há outra forma, farei desta forma mesmo.
Isso já circulou por aqui, e era bug do harbour.

Não sei se tem a ver:
2024-02-09 20:56 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
...
* src/rdd/dbcmd.c
! fixed error codes set by DbSetRelations() to be Cl*pper compatible
Em 2021
http://pctoledo.com.br/forum/viewtopic. ... on#p152892

letodb e letodbf ?

Enviado: 19 Abr 2024 17:40
por leandrolinauer
Boa tarde, vi agora a postagem do bug, mas pra mim nunca ocorreu este erro quando usado DBFCDX nem em HARBOUR 3.2 quando eu usava e nem em HARBOUR 3.4 que estou usando atualmente.
Quanto ao processo que descrevi anteriormente é para funcionar com LETO.
Foi quando testei leto_dbcloseall() e funcionou pelo menos até o presente teste.
Aí aproveitando o post passei para o próximo erro:
DBCLOSEAREA(), no manual do LETO fala em LETO_DBCLOSEAREA() fui contente fazer a mesma coisa e ao compilar deu erro que o comando LETO_DBCLOSEAREA() não existe, aí lasquei-me.

Sabe como sair desta incoveniencia?
Não entendi porque os comandos do harbour não funcionam com o LETO.
Grato

letodb e letodbf ?

Enviado: 19 Abr 2024 18:11
por JoséQuintas
Não sei dizer, porque nunca usei, mas a princípio só se o LETO deixar usar com aquele VIA igual RDDs.
Aí o close fecharia conforme a RDD, se estiver preparada pra isso..

Código: Selecionar todos

USE ("any" ) VIA LETO
No harbour 3.2 tem isso até pra ADO, mas também não uso.
Usaria ADO como se fosse um DBF.

Código: Selecionar todos

USE ( "SELECT..." ) VIA ADORDD
Não lembro se é ADORDD ou RDDADO.

letodb e letodbf ?

Enviado: 24 Abr 2024 19:23
por leandrolinauer
viewtopic.php?f=42&t=27437
Neste link dei continuidade ao assunto.
Obrigado