Erro no CLOSE DATA quando tem relacionamento
Moderador: Moderadores
Erro no CLOSE DATA quando tem relacionamento
Boa tarde amigos!
Quando utilizo o comando CLOSE DATA da erro se tiver algum arquivo com relacionamento.
Utilizo a versão 3.20 do Harbour.
No clipper não dava esse erro!
Alguem tem uma solução fácil para isso?
eu estava tirando o relacionamento manualmente antes de usar o CLOSE DATA.
Só que implementei o fechamento do sistema depois de 30 minutos sem uso e ele utiliza o a função __Quit() ai não tenho controle do que esta aberto e da erro.
>>> MEU AGRADECIMENTO AO NOSSO COLEGA JAIRO MAIA QUE ENSINOU COMO FAZER O ENCERRAMENTO APÓS UM TEMPO DE INATIVIDADE <<<
Quando utilizo o comando CLOSE DATA da erro se tiver algum arquivo com relacionamento.
Utilizo a versão 3.20 do Harbour.
No clipper não dava esse erro!
Alguem tem uma solução fácil para isso?
eu estava tirando o relacionamento manualmente antes de usar o CLOSE DATA.
Só que implementei o fechamento do sistema depois de 30 minutos sem uso e ele utiliza o a função __Quit() ai não tenho controle do que esta aberto e da erro.
>>> MEU AGRADECIMENTO AO NOSSO COLEGA JAIRO MAIA QUE ENSINOU COMO FAZER O ENCERRAMENTO APÓS UM TEMPO DE INATIVIDADE <<<
Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
ssflavio@osite.com.br
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Erro no CLOSE DATA quando tem relacionamento
Nunca ouvi falar sobre esse tipo de erro.
Qual a mensagem de erro?
Note que certas LIBs usam PROCEDURES de entrada e saída. (INIT PROCEDURE e acho que END PROCEDURE).
Essas rotinas são obrigatoriamente executadas no início e no final do aplicativo, não importa aonde estejam, e não importa quantas sejam.
Existe a possibilidade de ser uma delas.
Qual a mensagem de erro?
Note que certas LIBs usam PROCEDURES de entrada e saída. (INIT PROCEDURE e acho que END PROCEDURE).
Essas rotinas são obrigatoriamente executadas no início e no final do aplicativo, não importa aonde estejam, e não importa quantas sejam.
Existe a possibilidade de ser uma delas.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Erro no CLOSE DATA quando tem relacionamento
Error BASE/1002 Alias não existe: PED
Called from SGC42.PRG/(b)SGC42(90)
Called from /DBCLOSEALL(0)
Called from SGC42.PRG/SGC42(182) <<< LINHA DO CLOSE DATA
Called from SGC4.PRG/SGC4(52)
Called from sgc.prg/MAIN(201)
No inicio do programa abro os arquivos desta forma (só um exemplo, tem mais arquivos abertos)
no final do programa tenho que fechar os relacionamentos na mão antes
Called from SGC42.PRG/(b)SGC42(90)
Called from /DBCLOSEALL(0)
Called from SGC42.PRG/SGC42(182) <<< LINHA DO CLOSE DATA
Called from SGC4.PRG/SGC4(52)
Called from sgc.prg/MAIN(201)
No inicio do programa abro os arquivos desta forma (só um exemplo, tem mais arquivos abertos)
Código: Selecionar todos
if !net_use('PED') && PEDIDOS
return
endif
set order to 3
set rela to CODCLI_PED into CLI
if !net_use('PPE') && PRODUTOS DOS PEDIDOS
return
endif
set relation to CODPRO_PPE into PRO,;
to CODMOE_PPE+dtos(PED->DTACAM_PED) into COT <<< LNHA 90
.
.
.
Código: Selecionar todos
sele PPE
use
close data <<< LINHA 182Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
ssflavio@osite.com.br
Erro no CLOSE DATA quando tem relacionamento
analisando o erro, agora na hora de postar a resposta anterior, percebi que da 2 erros no programa sgc42, um na linha 182 e outro na linha 90
na linha 90 o segundo relacionamento usa um campo do arquivo anterior (PED)
esse programa é muito velho, talvez tenha que reescrever algumas partes
esse relacionamento é meio estranho
na linha 90 o segundo relacionamento usa um campo do arquivo anterior (PED)
esse programa é muito velho, talvez tenha que reescrever algumas partes
esse relacionamento é meio estranho
Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
ssflavio@osite.com.br
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Erro no CLOSE DATA quando tem relacionamento
Quando usa __Quit() e se você usa uma EXIT PROCEDURE, ela será executada, mas não se aplica nesse caso, já que uma EXIT PROCEDURE não herda nada (absolutamente nada) do sistema, assim, não é possível evitar esse Runtime Error com ela.ssflavio escreveu:eu estava tirando o relacionamento manualmente antes de usar o CLOSE DATA.
Porém, uma sugestão é você trocar o __Quit() da tarefa de fechamento e substituir por exemplo por EncerrarSistema(), assim, se atingido o tempo de inatividade, a tarefa não executa o __Quit() diretamente, mas sim sua função. Em sua função trate os fechamentos de relacionamentos e termine com QUIT.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Erro no CLOSE DATA quando tem relacionamento
teria como saber quantos arquivos estão abertos no momento???
se tiver como, seria simples varrer todos os arquivos abertos e remover os relacionamentos antes de efetuar o comando CLOSE DATA
se tiver como, seria simples varrer todos os arquivos abertos e remover os relacionamentos antes de efetuar o comando CLOSE DATA
Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
ssflavio@osite.com.br
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Erro no CLOSE DATA quando tem relacionamento
Olá!
Veja se funciona:
Só escrevi o código. Não testei.
Veja se funciona:
Código: Selecionar todos
//--------------------------------------------------------------------------------------------------
FUNCTION DbClearRelationAll()
LOCAL nArea
For nArea := 1 To 255
If Used()
(nArea)->( DbClearRelation() )
Endif
Next
RETURN NIL
//--------------------------------------------------------------------------------------------------[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Erro no CLOSE DATA quando tem relacionamento
Também não testei a função do Alexandre, mas caso não funcione, tente dessa forma:alxsts escreveu:Só escrevi o código. Não testei.
Código: Selecionar todos
FUNCTION DbClearRelationAll()
LOCAL nArea
For nArea := 1 To 255
If !Empty( Alias( nArea ) )
Select( Alias( nArea ) )
DbClearRelation()
Endif
Next
RETURN NILAbraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Erro no CLOSE DATA quando tem relacionamento
Procure nos fontes aonde faz o relacionamento, pra saber quais relacionamentos precisa desligar.
Mas... fecha os arquivos só no final do aplicativo?
Eu costumo abrir/fechar em cada módulo, até pra ter certeza de que tudo está salvo.
SET RELATION eu nunca usei, porque sempre existiu a história de que ele não é 100% eficaz.
Já tentou verificar se realmente precisa disso?
Mas... fecha os arquivos só no final do aplicativo?
Eu costumo abrir/fechar em cada módulo, até pra ter certeza de que tudo está salvo.
SET RELATION eu nunca usei, porque sempre existiu a história de que ele não é 100% eficaz.
Já tentou verificar se realmente precisa disso?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
Erro no CLOSE DATA quando tem relacionamento
Bom dia. Não entendi isso:
sele PPE
use // Você Fechou o banco.
aqui você tenta fechar o que já fechou?
close data <<< LINHA 182 -> CLOSE DATABASES or DBCLOSEALL()
Retire o USE e use: CLOSE( PPE ) // só ele, não todos os .DBFs.
Não me faz sentido.
Regards, saludos.
sele PPE
use // Você Fechou o banco.
aqui você tenta fechar o que já fechou?
close data <<< LINHA 182 -> CLOSE DATABASES or DBCLOSEALL()
Retire o USE e use: CLOSE( PPE ) // só ele, não todos os .DBFs.
Não me faz sentido.
Regards, saludos.
Erro no CLOSE DATA quando tem relacionamento
obrigado pela ajuda amigos!
a ideia do Jairo caiu como uma luva para a minha necessidade!
GRATIDÃO!
a ideia do Jairo caiu como uma luva para a minha necessidade!
GRATIDÃO!
Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
ssflavio@osite.com.br
