Página 1 de 1

Erro ORDLISTCLE

Enviado: 01 Mar 2007 16:27
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

Enviado: 01 Mar 2007 17:21
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

Enviado: 02 Mar 2007 16:22
por MARCELOG
Abra o arquivo dbf relativo ao índice.

MarceloG

Enviado: 05 Mar 2007 13:54
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

Enviado: 05 Mar 2007 14:43
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

Enviado: 05 Mar 2007 15:17
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.

Enviado: 06 Mar 2007 08:17
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

Enviado: 06 Mar 2007 09:42
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

Enviado: 06 Mar 2007 10:01
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

Enviado: 06 Mar 2007 12:17
por kirua
mas quando eu saio e entro de novo a função na abre o banco de dados?

Enviado: 06 Mar 2007 13:48
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.....

Enviado: 06 Mar 2007 17:03
por kirua
Meu valeu.....

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

OBRIGADO A TODOS!!!!!!!!!

Enviado: 06 Mar 2007 17:21
por sygecom
Qualquer coisa posta ai, agente não é macaco gordo mas quebra o galho..
Abraços