MENSAGEM DE ERRO
Moderador: Moderadores
-
Glauco Cruz Costa
- Usuário Nível 3

- Mensagens: 102
- Registrado em: 15 Dez 2005 22:02
- Localização: Brasília/DF
- Contato:
MENSAGEM DE ERRO
Está surgindo uma mensagem de erro quando tento usar uma rotina de exclusão. Mas, o erro não é quando vou excluir, mas quando vou pesquisar o registro a excluir. O erro é o seguinte:
Workarea not in use: DBGOTOP
E, também, a linha onde aparece o problema do erro é a do Locate:
LOCATE FOR N_PRONT = PRONTUARIO
Alguém pode me ajudar nisso? Obrigado
Workarea not in use: DBGOTOP
E, também, a linha onde aparece o problema do erro é a do Locate:
LOCATE FOR N_PRONT = PRONTUARIO
Alguém pode me ajudar nisso? Obrigado
-
Glauco Cruz Costa
- Usuário Nível 3

- Mensagens: 102
- Registrado em: 15 Dez 2005 22:02
- Localização: Brasília/DF
- Contato:
evaldo escreveu:Workarea not in use: DBGOTOP
Vc tem que dar um SELECT, antes do DBGOTOP()...
Procure usar o SEEK ele é bem mais rápido.
OK
NÃO ADIANTOU.
EU NEM ESTAVA USANDO O DBGOTOP E HAVIA USADO O SELECT ANTES DO LOCATE.
AGORA, TROQUEI O LOCATE PELO SEEK, E A MENSAGEM NOVA FOI:
Workarea no in use: DBSEEK. Além da solução desse erro, se possível, diga-me de que se trata os erros com os dizeres: Workarea no in use.
Obrigado.
-
Glauco Cruz Costa
- Usuário Nível 3

- Mensagens: 102
- Registrado em: 15 Dez 2005 22:02
- Localização: Brasília/DF
- Contato:
-
Glauco Cruz Costa
- Usuário Nível 3

- Mensagens: 102
- Registrado em: 15 Dez 2005 22:02
- Localização: Brasília/DF
- Contato:
Re: MENSAGEM DE ERRO
AGORA, RESOLVI TROCAR O SEEK POR UMA ROTINA COM WHILE .NOT. EOF(), COM GO TOP ANTES, MAIS UM IF (IF N_PRONT = PRONTUARIO). E O ERRO VOLTOU A SER O ANTERIOR: WORKAREA NOT IN USE: DBGOTOP
-
Glauco Cruz Costa
- Usuário Nível 3

- Mensagens: 102
- Registrado em: 15 Dez 2005 22:02
- Localização: Brasília/DF
- Contato:
//EXCLUSAO DE DADOS POR REGISTRO
PROCEDURE EXCREG // EXCLUIR
SAVE SCREEN TO EXC
SELECT 3 // USE RETORNO EXCLUSIVE
SET CONFIRM ON
GO TOP
DO WHILE .NOT. EOF()
IF LASTKEY() = 27
EXIT
ENDIF
CLS
EX = SPACE(1)
EX1 = SPACE(1)
N_PRONT=SPACE(7)
@ 07,03 CLEAR TO 17,69
@ 07,03 TO 17,69
@ 22,15 SAY "PRESSIONE ESC PARA VOLTAR AO MENU PRINCIPAL"
@ 02,26 SAY "EXCLUSAO"
@ 08,05 SAY "DIGITE O NUMERO DO PRONTUARIO:" GET N_PRONT PICT "@!"
READ
IF N_PRONT = PRONTUARIO
@ 10,05 SAY "MEDICO..........:"
@ 12,05 SAY "CLINICA.........:"
@ 14,05 SAY "DATA............:"
@ 16,05 SAY "PRONTUARIO......:"
@ 10,36 SAY MEDICO
@ 12,36 SAY CLINICA
@ 14,36 SAY DATA
@ 16,36 SAY PRONTUARIO
@ 20,10 SAY SPACE(40)
@ 22,15 SAY SPACE(6)
@ 22,20 SAY "DESEJA EXCLUIR ESTE REGISTRO?/[N]" GET EX PICT "@!"// PICT "!"; VALID EX $ "SN"
READ
IF EX # "S"
LOOP
ELSE
DELE
PACK
@ 22,20 SAY " "
@ 20,25 SAY "EXCLUIDO <ENTER>"
INKEY(0)
@ 20,25 SAY " "
ENDIF
@ 22,20 SAY "DESEJA EXCLUIR OUTRO REGISTRO?/[N]" GET EX1 PICT "@!" // PICT "!"; VALID EX1 $ "SN"
READ
IF EX1 = "S"
LOOP
SKIP
ELSE
EXIT
ENDIF
ELSE
@ 18,10 SAY "PRONTUARIO NAO CADASTRADO"
INKEY(2)
LOOP
ENDIF
ENDDO
RETURN
PROCEDURE EXCREG // EXCLUIR
SAVE SCREEN TO EXC
SELECT 3 // USE RETORNO EXCLUSIVE
SET CONFIRM ON
GO TOP
DO WHILE .NOT. EOF()
IF LASTKEY() = 27
EXIT
ENDIF
CLS
EX = SPACE(1)
EX1 = SPACE(1)
N_PRONT=SPACE(7)
@ 07,03 CLEAR TO 17,69
@ 07,03 TO 17,69
@ 22,15 SAY "PRESSIONE ESC PARA VOLTAR AO MENU PRINCIPAL"
@ 02,26 SAY "EXCLUSAO"
@ 08,05 SAY "DIGITE O NUMERO DO PRONTUARIO:" GET N_PRONT PICT "@!"
READ
IF N_PRONT = PRONTUARIO
@ 10,05 SAY "MEDICO..........:"
@ 12,05 SAY "CLINICA.........:"
@ 14,05 SAY "DATA............:"
@ 16,05 SAY "PRONTUARIO......:"
@ 10,36 SAY MEDICO
@ 12,36 SAY CLINICA
@ 14,36 SAY DATA
@ 16,36 SAY PRONTUARIO
@ 20,10 SAY SPACE(40)
@ 22,15 SAY SPACE(6)
@ 22,20 SAY "DESEJA EXCLUIR ESTE REGISTRO?
READ
IF EX # "S"
LOOP
ELSE
DELE
PACK
@ 22,20 SAY " "
@ 20,25 SAY "EXCLUIDO <ENTER>"
INKEY(0)
@ 20,25 SAY " "
ENDIF
@ 22,20 SAY "DESEJA EXCLUIR OUTRO REGISTRO?
READ
IF EX1 = "S"
LOOP
SKIP
ELSE
EXIT
ENDIF
ELSE
@ 18,10 SAY "PRONTUARIO NAO CADASTRADO"
INKEY(2)
LOOP
ENDIF
ENDDO
RETURN
- filizola
- Usuário Nível 3

- Mensagens: 421
- Registrado em: 19 Ago 2003 20:10
- Localização: Belo Horizonte/MG
acho que aconteceu o que eu te disse. faltou o seguinte:
select 3
use retorno exclusive
* se bem que prefiro assim
use retorno exclusive new
* e quando for referenciar este arquvivo vc faria somente
SELECT RETORNO
ISTO AQUI NAO FUNCIONA, VC NAO ABRIU O ARQUIVO
SELECT 3 // USE RETORNO EXCLUSIVE
pode voltar com o seek e se estiver usando SET EXCLUSIVE OFF vc tem que travar o registro.
select 3
use retorno exclusive
* se bem que prefiro assim
use retorno exclusive new
* e quando for referenciar este arquvivo vc faria somente
SELECT RETORNO
ISTO AQUI NAO FUNCIONA, VC NAO ABRIU O ARQUIVO
SELECT 3 // USE RETORNO EXCLUSIVE
pode voltar com o seek e se estiver usando SET EXCLUSIVE OFF vc tem que travar o registro.
-
Glauco Cruz Costa
- Usuário Nível 3

- Mensagens: 102
- Registrado em: 15 Dez 2005 22:02
- Localização: Brasília/DF
- Contato:
-
Glauco Cruz Costa
- Usuário Nível 3

- Mensagens: 102
- Registrado em: 15 Dez 2005 22:02
- Localização: Brasília/DF
- Contato:
- filizola
- Usuário Nível 3

- Mensagens: 421
- Registrado em: 19 Ago 2003 20:10
- Localização: Belo Horizonte/MG
já é um problema, por que vc esta abrindo o arquivo duas vezes 
por que vc abre ele shared e outra vez exclusive
faça assim
select 1
use retorno exclusive (se o sistema for mono usuario)
ou
use retorno shared (se o sistema for multi usuario)
select 2
use retorno2
select 1
seek chave
travar() (se for multi usuario)
delete
unlock (se for multi usuario)
por que vc abre ele shared e outra vez exclusive
faça assim
select 1
use retorno exclusive (se o sistema for mono usuario)
ou
use retorno shared (se o sistema for multi usuario)
select 2
use retorno2
select 1
seek chave
travar() (se for multi usuario)
delete
unlock (se for multi usuario)
-
Glauco Cruz Costa
- Usuário Nível 3

- Mensagens: 102
- Registrado em: 15 Dez 2005 22:02
- Localização: Brasília/DF
- Contato:
-
Glauco Cruz Costa
- Usuário Nível 3

- Mensagens: 102
- Registrado em: 15 Dez 2005 22:02
- Localização: Brasília/DF
- Contato:
APARECEU A MENSAGEM 'EXCLUSIVE REQUIRED' APONTANDO O ERRO PARA A LINHA DO PACK. EU JÁ HAVIA FEITO ASSIM ANTES, AÍ EU PESQUISEI NA NET SOBRE O TAL ERRO E ENCONTREI UM SITE QUE FALAVA QUE HÁ UM PROBLEMA NO CLIPPER, QUE NÃO ACEITA EXCLUIR REGISTROS SE NÃO SE ENTRAR COMO EXCLUSIVO NO ARQUIVO. POR ISSO ESTAVA TENTANDO DO OUTRO JEITO.filizola escreveu:tente da forma que te mostrei e poste aqui se deu certo
VEJA COMO FICOU AGORA:
...
RLOCK()
DELE
PACK
UNLOCK
COMMIT
...