Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.
23 Nov 2015 09:32
Alguém pode dar uma luz para esse problema:
Error LETO/1201 Workarea nao indexada
O problema acontece no dbseek
- Código:
ADMSAUDE->(OrdSetFocus(3))
IF ADMSAUDE->(DbSeek(cVar))
A abertura da tabela está assim:
- Código:
SWITCH Upper(cDataBase)
CASE 'ADMSAUDE'
IF SELECT(cDataBase) == 0 .OR. !&cDataBase.->(Used())
lAbriu:=NetUse(cServer,cDataBase,lShared)
SET INDEX TO ("ADMSAUDE.CDX")
ENDIF
EXIT
As estações são windows 7/32 professional
23 Nov 2015 11:24
Boa tarde.
Tem certeza que o CDX abriu mesmo? Tem umas condições, será que retornaram .T. ?
Sds,
Mario.
23 Nov 2015 11:30
Mário,
A abertura do dbf é feito no inicio da rotina, se fosse um problema na tabela o sistema já entraria em erro, o indice é aberto logo após a abertura da tabela,
O ordsetfocus é trocado conforme a necessidade da pesquisa, não sei se isso é um problema de rede, no servidor ou qualquer outro motivo não conhecido, eu não achei nada no google que indica-se uma solução.
23 Nov 2015 13:05
Asiomes,
Que abacaxi! Tenho observado os colegas que usam o Leto. Andei interessado em usar o motor nas minhas tabelas .DBF, coisa básica, intranet mesmo.
Para usar em redes pequenas, de menos de dez terminais. Parece muito interessante, mas quando vejo vocês que são feras tendo esses pequenos problemas, fico meio assustado...
Nesse erro, parece que ele não reconhece o arquivo índice. Está setado para CDX? Desculpe as perguntas bobas, mas essas coisas às vezes é que te dão canseira.
Abraço,
Mario.
23 Nov 2015 13:32
Mário,
O indice é cdx, inclusive eu até uso SET AUTOPEN ON só para garantir a abertura automática
23 Nov 2015 13:40
Tem muita coisa legal disponível para o harbour, mas quando começa dar erro e você não faz idéia do que é, preocupa.
23 Nov 2015 14:36
Alexandre, se os arquivos estão abertos (DBF e CDX), então resta saber se no arquivo CDX existe esta terceira (3) ordem.
O melhor seria fazer alguns testes:
- Código:
SELE ADMSAUDE
? OrdSetFocus(1)
? OrdSetFocus(2)
? OrdSetFocus(3)
? OrdSetFocus(1)
Abraços,
23 Nov 2015 15:01
Olá Toledo,
Depois de aberta a tabela eu fiz este teste:
- Código:
cTEXTO := ''
FOR X = 1 TO OrdCount()
cTEXTO += Str(X,2)+'-'+OrdName(x)+" "+OrdKey(x) + hb_EOL()
NEXT
hwg_MsgInfo(cTexto)
Todas as tags com as chaves estão corretas.
Obs.: este erro é eventual, não sei qual condição precisa para ocasionar a falha, pode ser um problema de rede no momento do ordsetfocus?, inclusive eu estou
testando esta rotina de outra forma, não sei se é chover no molhado, mas ao invés de fazer assim: OrdsetFocus(1) troquei para OrdSetFcus("nome da tag")
ADMSAUDE->(OrdSetFocus("admsau-2")) //3
IF ADMSAUDE->(DbSeek(cVar))
24 Nov 2015 11:12
Olá Pessoal,
Alexandre, como você disse que o erro é eventual, então apenas um palpite: Mais acima você colocou como faz a abertura da tabela, e é através da função NetUse(). Você também pega o retorno de NetUse() em lAbriu. Mas parece que você não trata a variável lAbriu, assim, se a função NetUse() retornou .f. porque o arquivo está bloqueado por outro terminal, sua função continua, e na verdade o arquivo não foi aberto na máquina que dá o erro. Apenas palpite...
24 Nov 2015 15:57
Não uso lettodb mas estranhei essa parte de índice.
Como é identificado se o índice é local ou no lettodb?
No hbnetio é diferente:
- Código:
use net:clientes
set index to net:clientes
Ao não identificar com net:, o arquivo é considerado local.
Só estranhei isso e fiquei curioso.
Não sei se pode ter a ver com seu problema.
30 Nov 2015 13:51
Ola!
Em algum lugar vc deve está fechando o DBF ou a rede está caindo... Esse erro ocorre mesmo em rede local ou via ADSL ?
Eu pego esse erro aqui quando uso ADSL com o sinal muito ruim... Local já não apresenta.
LetoDb não tem o sintaxe do NETIO, quando abrimos o DBF indicamos o local via TCP/IP.
use "//192.168.0.100:2812/meudbf.dbf "
ou
use meudbf.dbf
Quando setado anteriormente o local via arquivo letodb.ini
- Código:
[MAIN]
Port = 2812
Logfile = "letodb.log"
DEFAULT_DRIVER = CDX
DATAPATH = c:\clientes\lojaxyz\
...
Eu fiz uma checagem extra neste caso...
- Código:
BEGIN SEQUENCE WITH {| oErr | Break( oErr ) }
eqw->(ordSetFocus(2)) //cod_mercad
If eqw->( Dbseek(eq->cod_mercad) )
...
Recover
hwg_Msginfo('Falha na rede: ' + cPath)
//aWAN[n] := LETO_GETCURRENTCONNECTION()
//aAlias[n] := "EQ"+strzero(n,3)
fechaDb("EQW")
cCDX := cPath+'estoque.cdx'
DbUseArea(.T.,"LETO",cPath+'estoque.dbf',"EQW",.t.,.f.,'PTISO')
Set index to &cCDX
EQW->(OrdSetFocus(2)) //cod_mercad
LOOP
End Sequence
Saudações,
Itamar M. Lins Jr.
30 Nov 2015 19:07
Eu modifiquei o código para OrdSetFcus("nome da tag") e até agora está funcionando sem erro.
30 Nov 2015 21:56
Apenas suposição:
Talvez a macro no nome do índice tenha causado falha na conversão do #include.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.