Erro ORDLISTCLE

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
kirua
Usuário Nível 1
Usuário Nível 1
Mensagens: 29
Registrado em: 01 Fev 2007 10:04

Erro ORDLISTCLE

Mensagem por kirua »

olá...

meu eu to com um erro na seguinte linha

Código: Selecionar todos

SET INDEX TO INDIC3     
acontece o erro na seguinte hora.....

Quando eu entro na função de cadastrar produto, saio dela entro em qualquer uma e volta pra ela....
da um erro chamado
Error DBCMD/2001 Workarea not in use: ORDLISTCLE
Called from LOCKERRHAN(0)
Called from (b)INITHANDL$(0)
e na linha do erro é o codigo bem acima..

alguem ja passou por isso ou sabe como me tirar dessa???

VLW pessoal..
Desde Já agradeço..
By Kirua
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Bem provavel que vc esteja deixando os arquivos abertos quando sai de alguma funçao ...de um DBCLOSSEALL() no final de sua funçao ou no inicio das outras !!!


Abraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem por MARCELOG »

Abra o arquivo dbf relativo ao índice.

MarceloG
Avatar do usuário
kirua
Usuário Nível 1
Usuário Nível 1
Mensagens: 29
Registrado em: 01 Fev 2007 10:04

Mensagem por kirua »

sygecom...

eu fiz o q vc falou até funcionou mas deu outro erro logo em seguida...
da erro agora no meu dbedit...

o erro chama
Error DBCMD/2001 Workarea not in use: DBGOBOTTON
no seguinte movimento:

quando eu abro o dbedit uma vez blz funciona normal mas quando eu abro a segunda vez da esse erro acima...

E MARCELOG
ja tah aberto


VALEU PESSOAL
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche é mais facil vc postar sua função ai e nos dar uma olhada.....mas a principio agora sim é a falta de abertura do DBF...

Abraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem por MARCELOG »

Eu não uso dedit em meu programas.
Contudo, acho que ele tem ação sobre o banco de dados em uso.
Então, basta abrir o arquivo de dados e respectivo índice, ou selecionar a área em que se encontra com a função DBSELECTAREA(cNomedaArea) e usar o dbedit.
O erro citado ocorre porque você está tentando ir para o final de um arquivo que não é o atual, ou o alias não foi indicado.

Use arquivo1 new
dbgobottom() //abre arquivo1 e vai para o final
Use arquivo2 new
dbgobottom() //abre arquivo2 e vai para o final - o arquivo2 é o atual e ativo

arquivo3->(dbgobottom()) // tenta ir para o final do arquivo3

Vai provocar um erro, pois o arquivo3 não é o atual e também não está aberto em nenhuma área.

Workarea not in use (área de trabalho não está em uso)

MarceloG

Ps: crie procedimento para, quando chamar o dbedit, salvar a área corrente, mudar para aquela necessária ao funcionamento do dbedit e, após, restabelecer a área corrente.
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

:? Isso acontece pq vc estas usando um prog com varios bancos de dados abertos oK's? então quando vc vai de uma função para outra função vc esta esquecendo de selecionar o campo correto para a função e quando volta da funçào estas esquecendo de voltar a função corrente ex: eu uso assim o comando select


sele A
use fonecedor index xforn

sele B
use meucarro index xdevolva

sele C
use empresto index xpago // até aqui apenas selecionei os bancos que //vou usar nessa tabela mas me prog começa usando o banco fornecedor então


sele A

do while .t.

continua ...

//aqui irei chamar a função de pesquisa da segunda area selecionada

carro() // chamei a função
v
v
v







function carro()

sele B // aqui esta a sacada , ja mudei o banco , repare que estou
usando a segunda area selecionada , a area B
//pesquisei achei o que eu queria

return // volto para a tabela





Obs: quando voltar para a tabela tera novamente de selecionar o banco que for trabalhar se for alternativo ao sele B , ou seja vc tem que indicar cada banco que vai trabalhar e se tiver mais que um indice por banco tera tbm de usar o SET ORDER to 1 ou 2 ou 3 ... 6 se ainda percistir as duvidas poste ae que os masters dào conta
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
kirua
Usuário Nível 1
Usuário Nível 1
Mensagens: 29
Registrado em: 01 Fev 2007 10:04

Mensagem por kirua »

eu tirei o dbedit mas o erro da area de trabalho continua quando eu entro na função....

Código: Selecionar todos

Function propesquisa
	
Local save_v
Local codig_v  := space (3)                 
save_v		   := savescreen(0,0,24,79)

SetColor ("7/8*")
@ 08, 39, 8, 47 Box []
@ 08, 39 Say "Pesquisar"
SetColor("15/9")

USE PRODUTO NEW ALIAS PRODUTO
 

IF !FILE("INDIC3.NTX")               
	INDEX ON CODIGO TO INDIC3
ENDIF 
                             
SET INDEX TO INDIC3 

SetColor ("7/8*")	
@ 9, 39 SAY "Codigo:"
@ 9, 45 GET codig_v  
Read	

SetColor("15/9")
Clear screen
Restscreen (0,0,24,79, save_v)
If Lastkey()=27
	Return
EndIf

GO TOP
SEEK codig_v

IF FOUND( )
	Alert('Registro Encontrado')
	@ 07, 00 Clear To 19, 57
	@ 07, 00 To  19, 57 double
	@ 08, 01 To  10, 56           
	@ 09, 02 Say 'Cadastro de Produto:'             
	SetColor ("14/9")   
	@ 09, 02 Say "Cadastro de Produto:"
	SetColor("15/9")		                        
	
	@ 11, 02 Say "Codigo.......:                                        "
	@ 12, 02 Say "Nome.........:                                        "    
	@ 13, 02 Say "Tipo.........:                                        "    
	@ 14, 02 Say "Quantidade...:                                        "    
	@ 15, 02 Say "Peso.........:              Tamanho....:              "    
	@ 16, 02 Say "Preco Venda..:              Preco Custo:              "    
	@ 17, 02 Say "Fornecedor...:                                        "  
	@ 18, 02 SAY "Observacao...:                                        " 
	
	SetColor("15/9")
	@ 11, 17 Say codig_v     
	@ 12, 17 Say nome	               
	@ 13, 17 Say tipo	            
	@ 14, 17 Say quanti	
	@ 15, 17 Say Peso	      
	@ 15, 43 Say taman  	                       
	@ 16, 17 Say precv	                
	@ 16, 43 Say precc	     
	@ 17, 17 Say forne  	                          
	@ 18, 17 Say obser  	                    
	                                                    	                         			         
	Inkey (0)
	clear screen
	Restscreen (0,0,24,79, save_v)
Else
	Alert("Nao foi encontrado nenhum registro")
    clear screen
	Restscreen (0,0,24,79, save_v)
Endif

dbcloseall()

Return
Por favor, vcs consegue ver o erro pois eu não achei!
Obrigado
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

O problema parece ser porque você dá um DBCLOSEALL(), ou seja, quando volta para a rotina que chamou todos os arquivos foram fechados.

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
kirua
Usuário Nível 1
Usuário Nível 1
Mensagens: 29
Registrado em: 01 Fev 2007 10:04

Mensagem por kirua »

mas quando eu saio e entro de novo a função na abre o banco de dados?
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Código: Selecionar todos

Function propesquisa 
    
Local save_v 
Local codig_v  := space (3)                  
save_v         := savescreen(0,0,24,79) 

DO WHILE .T.
DBCLOSEALL()
SetColor ("7/8*")  
@ 08, 39, 8, 47 Box [] 
@ 08, 39 Say "Pesquisar" 
SetColor("15/9") 

USE PRODUTO NEW ALIAS PRODUTO 

IF !FILE("INDIC3.NTX")                
   INDEX ON CODIGO TO INDIC3 
ENDIF 
                              
SET INDEX TO INDIC3 

SetColor ("7/8*")    
@ 9, 39 SAY "Codigo:" 
@ 9, 45 GET codig_v  
Read    

SetColor("15/9") 
Clear screen 
Restscreen (0,0,24,79, save_v) 
If Lastkey()=27 
   Return 
EndIf 

GO TOP 
SEEK codig_v 

IF FOUND( ) 
   Alert('Registro Encontrado') 
   @ 07, 00 Clear To 19, 57 
   @ 07, 00 To  19, 57 double 
   @ 08, 01 To  10, 56            
   @ 09, 02 Say 'Cadastro de Produto:'              
   SetColor ("14/9")    
   @ 09, 02 Say "Cadastro de Produto:" 
   SetColor("15/9")                              
    
   @ 11, 02 Say "Codigo.......:                                        " 
   @ 12, 02 Say "Nome.........:                                        "    
   @ 13, 02 Say "Tipo.........:                                        "    
   @ 14, 02 Say "Quantidade...:                                        "    
   @ 15, 02 Say "Peso.........:              Tamanho....:              "    
   @ 16, 02 Say "Preco Venda..:              Preco Custo:              "    
   @ 17, 02 Say "Fornecedor...:                                        "  
   @ 18, 02 SAY "Observacao...:                                        " 
    
   SetColor("15/9") 
   @ 11, 17 Say codig_v      
   @ 12, 17 Say nome                   
   @ 13, 17 Say tipo               
   @ 14, 17 Say quanti    
   @ 15, 17 Say Peso         
   @ 15, 43 Say taman                             
   @ 16, 17 Say precv                   
   @ 16, 43 Say precc         
   @ 17, 17 Say forne                               
   @ 18, 17 Say obser                         
                                                                                                      
   Inkey (0) 
   clear screen 
   Restscreen (0,0,24,79, save_v) 
Else 
   Alert("Nao foi encontrado nenhum registro") 
    clear screen 
   Restscreen (0,0,24,79, save_v)
   exit
Endif 
enddo

dbcloseall() 

Return
Testa ai.....
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
kirua
Usuário Nível 1
Usuário Nível 1
Mensagens: 29
Registrado em: 01 Fev 2007 10:04

Mensagem por kirua »

Meu valeu.....

agora tah indo até agora não deu nenhum pau...
vou aplicar nos outros PRGs......

OBRIGADO A TODOS!!!!!!!!!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Qualquer coisa posta ai, agente não é macaco gordo mas quebra o galho..
Abraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder