MENSAGEM DE ERRO

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

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

MENSAGEM DE ERRO

Mensagem por Glauco Cruz Costa »

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
evaldo
Usuário Nível 3
Usuário Nível 3
Mensagens: 113
Registrado em: 27 Out 2005 23:29

Mensagem por evaldo »

Workarea not in use: DBGOTOP

Vc tem que dar um SELECT, antes do DBGOTOP()...
Procure usar o SEEK ele é bem mais rápido.

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

Mensagem por Glauco Cruz Costa »

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.
Avatar do usuário
filizola
Usuário Nível 3
Usuário Nível 3
Mensagens: 421
Registrado em: 19 Ago 2003 20:10
Localização: Belo Horizonte/MG

Mensagem por filizola »

sera que vc abriu mesmo o arquivo ???

use arquivo
dbgotop()
seek chave
travar()
delete
unlock
Glauco Cruz Costa
Usuário Nível 3
Usuário Nível 3
Mensagens: 102
Registrado em: 15 Dez 2005 22:02
Localização: Brasília/DF
Contato:

Mensagem por Glauco Cruz Costa »

SIM, EU ABRI O ARQUIVO COM O SELECT. MAS COMO É UMA ROTINA DE EXCLUSÃO, EU O ABRI COM EXCLUSIVIDADE.
Glauco Cruz Costa
Usuário Nível 3
Usuário Nível 3
Mensagens: 102
Registrado em: 15 Dez 2005 22:02
Localização: Brasília/DF
Contato:

Re: MENSAGEM DE ERRO

Mensagem por Glauco Cruz Costa »

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
Avatar do usuário
filizola
Usuário Nível 3
Usuário Nível 3
Mensagens: 421
Registrado em: 19 Ago 2003 20:10
Localização: Belo Horizonte/MG

Mensagem por filizola »

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

Mensagem por Glauco Cruz Costa »

//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
Avatar do usuário
filizola
Usuário Nível 3
Usuário Nível 3
Mensagens: 421
Registrado em: 19 Ago 2003 20:10
Localização: Belo Horizonte/MG

Mensagem por filizola »

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.
Glauco Cruz Costa
Usuário Nível 3
Usuário Nível 3
Mensagens: 102
Registrado em: 15 Dez 2005 22:02
Localização: Brasília/DF
Contato:

Mensagem por Glauco Cruz Costa »

EM CIMA, NO INÍCIO DO PROGRAMA, EU JÁ HAVIA DECLARADO ASSIM:
SELECT 3
USE RETORNO EXCLUSIVE

AGORA, NA PROCEDURE, EU USEI SOMENTE SELECT 3
O // USE RETORNO EXCLUSIVE EU SÓ COLOQUEI PARA VOCÊ VER DO QUE SE TRATAVA O SELECT 3.
Glauco Cruz Costa
Usuário Nível 3
Usuário Nível 3
Mensagens: 102
Registrado em: 15 Dez 2005 22:02
Localização: Brasília/DF
Contato:

Mensagem por Glauco Cruz Costa »

SERÁ QUE O ERRO NÃO PODE ESTAR NO FATO DE EU TER DECLARADO TRES SELECTS ASSIM:
SELECT 1
USE RETORNO SHARED NEW
SELECT 2
USE RETORNO2
SELECT 3
USE RETORNO EXCLUSIVE

O FATO DE EU TER DECLARADO O RETORNO DUAS VEZES PODERÁ ME DAR PROBLEMAS OU JÁ É PROBLEMA?
Avatar do usuário
filizola
Usuário Nível 3
Usuário Nível 3
Mensagens: 421
Registrado em: 19 Ago 2003 20:10
Localização: Belo Horizonte/MG

Mensagem por filizola »

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)
Glauco Cruz Costa
Usuário Nível 3
Usuário Nível 3
Mensagens: 102
Registrado em: 15 Dez 2005 22:02
Localização: Brasília/DF
Contato:

Mensagem por Glauco Cruz Costa »

já é um problema, por que vc esta abrindo o arquivo duas vezes ???

por que vc abre ele shared e outra vez exclusive ?

EU ESTOU ABRINDO SHARED NA ROTINA DE INCLUSÃO, IMPRESSÃO, PESQUISA. E EXCLUSIVE NA ROTINA DE EXCLUSÃO, POIS ELE NÃO ACEITOU EXCLUIR QUANDO EU ABRI SHARED PARA EXCLUIR.
Avatar do usuário
filizola
Usuário Nível 3
Usuário Nível 3
Mensagens: 421
Registrado em: 19 Ago 2003 20:10
Localização: Belo Horizonte/MG

Mensagem por filizola »

tente da forma que te mostrei e poste aqui se deu certo
Glauco Cruz Costa
Usuário Nível 3
Usuário Nível 3
Mensagens: 102
Registrado em: 15 Dez 2005 22:02
Localização: Brasília/DF
Contato:

Mensagem por Glauco Cruz Costa »

filizola escreveu:tente da forma que te mostrei e poste aqui se deu certo
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.
VEJA COMO FICOU AGORA:
...
RLOCK()
DELE
PACK
UNLOCK
COMMIT
...
Responder