problema na execução em rede

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Genildo
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 05 Out 2006 10:19
Localização: Nilopolis-RJ

problema na execução em rede

Mensagem por Genildo »

Bom dia a todos

tenho uma dúvida a esclarecer se possível ... tenho uma rotininha que funciona muito bem no meu C: onde fica o PRG ele roda tranquilo, mas ao colocar a rotina no servidor F: ao executar ele processa uns dados e depois me emite uma tela vermelha com WORKAREA NOT IN USE: DBGOTOP ... pq isso no F e não ocorre no C ??? segue o trecho do PRG onde indica o problema para uma análise .. grato

USE DEMONS
REPLACE ALL WFAT WITH 0
REPLACE ALL WCODVEN WITH " "

DO WHILE ! eof()

LOCATE FOR WFAT = 0

IF FOUND()

TOTFAT := 0

ZERADO := WCODCLI
@ 24,0 SAY ZERADO
@ 24,15 SAY WNOMCLI

USE \LILAS\RECEBER

DO WHILE ! EOF()
IF RCCLIENTE = ZERADO

TOTFAT := TOTFAT + RCVALOR
@ 24,65 SAY TOTFAT
ENDIF
SKIP
LOOP
ENDDO

USE DEMONS

<< o erro de DBGOTOP ocorre nesta linha >>

DO WHILE ! EOF()

IF WCODCLI = ZERADO

REPLACE WFAT WITH TOTFAT

IF TOTFAT = 0
REPLACE WFAT WITH 1
ENDIF

ENDIF
SKIP
LOOP

ENDDO

ELSE
DO IMP
ENDIF

ENDDO
P4-256 mem ... q merreca rss
marchiore
Usuário Nível 1
Usuário Nível 1
Mensagens: 31
Registrado em: 18 Set 2006 11:25

Sugestão

Mensagem por marchiore »

Olá, minha sugestão e você especificar o caminho dentro do programa na hora da abertura dos arquivos, por exemplo:

USE DEMOS ficaria USE F:\PASTA\DEMOS

USE \LILAS\RECEBER ficaria USE F:\LILAS\RECEBER

Outro detalhe e você verificar se não ha outro usuario abrindo os mesmos arquivos, pois este seu código não esta preparado para trabalhar em multiusuario, para isso deve haver alguns tratamentos como o SET EXCLUSIVE OFF, além de ter que existir um controle de nos REPLACE ´s


Exemplo simples
SET EXCLUSIVE OFF && ABERTURA DE ARQUIVOS COMPARTILHADOS

SELECT 1
USE TESTE1
IF NETERR()
? "ERRO NA ABERTURA DO ARQUIVO"
CLOSE DATABASES
QUIT
ENDIF

SELECT 2
USE TESTE2 INDEX TESTE2
IF NETERR()
? "ERRO NA ABERTURA DO ARQUIVO"
CLOSE DATABASES
QUIT
ENDIF

SELECT 1
CODIGO=0
GO TOP && VAI NO INICIO DO ARQUIVO TESTE1
DO WHILE .NOT. EOF()
IF ALOCA() && ESTA FUNÇÃO TENTA 10 VEZES BLOQUEAR O REGISTRO PARA USO
CODIGO = WCODIGO
REPLACE CAMPO WITH 1
DBUNLOCK() && DESBLOQUEIA
DBCOMMIT() && BAIXA O BUFFER PARA O DISCO
ELSE
EXIT
ENDIF
SELECT 2
SEEK CODIGO
IF .NOT. EOF()
IF ALOCA()
REPLACE VALOR WITH 100
DBUNLOCK()
DBCOMMIT()
ELSE
EXIT
ENDIF
ENDIF
SELECT 1
SKIP
ENDDO
CLOSE DATABASES
RETURN

FUNCTION ALOCA()

FCTA=0
DO WHILE .T.
FCTA++
IF RLOCK()
RETURN .T.
ELSE
IF FCTA > 10
? "Registro sendo usado por outro usuario"
INKEY(0)
RETURN .F.
ELSE
INKEY(1)
ENDIF
ENDIF
ENDDO
RETURN .F.
Genildo
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 05 Out 2006 10:19
Localização: Nilopolis-RJ

Mensagem por Genildo »

ok ... vou tentar essa solução de apontar o drive do sistema, mas normalmente só uma pessoa q usa mesmo. Até eu sozinho testando ele deu o erro.
P4-256 mem ... q merreca rss
Genildo
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 05 Out 2006 10:19
Localização: Nilopolis-RJ

Mensagem por Genildo »

realmente é pra deixar alucinado, apontei o drive e ficou

USE F:\LILAS\DEMONS

e mesmo assim ele continua WORKAREA NOT IN USE: DBGOTOP

é muito louco ... eu uso normalmente sem a letra do drive para fins de compilação para teste no HD.

PS: só eu usando a rotina
P4-256 mem ... q merreca rss
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 »

Atenção!
Você já abriu o arquivo em modo exclusivo e está tetando abrí-lo novamente.
Não faça isso!
Use o comando (SELECT) ou função (DBSELECTAREA()) de seleção de área do arquivo e pronto.
Espero ter ajudado.

MarceloG
Genildo
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 05 Out 2006 10:19
Localização: Nilopolis-RJ

Mensagem por Genildo »

ok marcelo .. vou procurar fazer isso .. o engraçado é q executando no HD num tem esse problema ...
P4-256 mem ... q merreca rss
marchiore
Usuário Nível 1
Usuário Nível 1
Mensagens: 31
Registrado em: 18 Set 2006 11:25

Rede

Mensagem por marchiore »

e que local não ha problemas de compartilhamento, já em uma unidade de rede sim

por isso do SET EXCLUSIVE OFF no inicio do meu exemplo

além disso você não deve ficar abrindo o arquivo varias vezes, além da performance ficar horrivel ha estes e outros problemas, siga o conselho do amigo e use SELECT para abrir arquivos sempre no inicio da aplicação e detalhe para não ter problemas no futuro, se usar indices abraos sempre na mesma ordem por exemplo

select 1
use arquivo1 index index1, index 2

nunca faça isso

select 1
use arquivo1 index index2, index1 pois com isso tera problema de arquivo corrompido blz.

Abraço.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

Na verdade não é muito bom usar o SELECT para criar uma area pois no meio do caminho voce pode esquecer em que area esta um .DBF e tentar seleciona-lo em outra area.

Use o parametro NEW nas aberturas de arquivo e deixe o Clipper alocar uma área.

USE arquivo1 NEW
USE arquivo2 NEW
...
SELECT arquivo1
...
SELECT arquivo2
...

Outra coisa é que voce faz USE DEMONS e em um ponto abaixo repete o USE DEMONS e o que pode estar ocorrendo é o fechamento do arquivo DEMONS, pois se voce abre um arquivo em uma área e depois da um comando USE sem parametros este comando fecha a área atual e o que pode estar ocorrendo é isto.

@braços :?)
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Genildo
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 05 Out 2006 10:19
Localização: Nilopolis-RJ

Mensagem por Genildo »

vlw gente .. vou tentar aperfeiçoar essa joça rsss
P4-256 mem ... q merreca rss
Avatar do usuário
Augusto
Usuário Nível 3
Usuário Nível 3
Mensagens: 473
Registrado em: 26 Ago 2003 17:50
Localização: Maricá/RJ
Contato:

Mensagem por Augusto »

O parceiro ROCHINHA tem toda razão (com sempre) ...
O que está acontecendo é que ou vc usa o SELECT como foi dito por ele ou uma outa forma é:

Código: Selecionar todos

select 1
USE ARQUIVO1 alias ARQUIVO1

select 2
USE ARQUIVO2 alias ARQUIVO2

...

select ARQUIVO1
...
select ARQUIVO2
Além é claro de ter de usar os controles de MULTIUSUÁRIO tais como:
SET EXCLUSIVE OFF, RLOCK(), FLOCK(), UNLOCK, COMMIT entre outros...
:xau Fui...
goulart@provsul.com.br

Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

Obrigado

@braços :?)
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Genildo
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 05 Out 2006 10:19
Localização: Nilopolis-RJ

Mensagem por Genildo »

vou decorando e implementando essas paradas pq num tem nada disso na rotina rss
P4-256 mem ... q merreca rss
Genildo
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 05 Out 2006 10:19
Localização: Nilopolis-RJ

Mensagem por Genildo »

nossa ... hj q consegui fazer a cabeça esfriar e funcionou a parada ... rsss a galera ta de parabéns ...
P4-256 mem ... q merreca rss
Genildo
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 05 Out 2006 10:19
Localização: Nilopolis-RJ

Mensagem por Genildo »

sem querer ser chato .. mas ja sendo ..o q seriam ?? e como se aplicam ?

SET EXCLUSIVE OFF, RLOCK(), FLOCK(), UNLOCK e COMMIT
P4-256 mem ... q merreca rss
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 »

Responder