Página 1 de 2

Configurar Servidor i5 no XP

Enviado: 19 Abr 2012 15:47
por Zeca Roque
Boa tarde a todos!!

Estou com um problema aparentemente sem solução.

Tenho os seguintes equipamentos envolvidos

3 computadores i5 com 1 terabyte e 4 mega de ram

1 computador pentium com 500 giga e 2 mega de ram


Os sistemas foram construidos em CLIPPER VISUALLIB 2 PAGAESCRIPT SIXNSX BLINKER

Os sistemas(EXE E DBFS) estão instalados em um i5 como servidor e o que é muito estranho

é o seguinte: todos os programas(3) funcionam com excessão do sistema de COLETA

onde consta uma rotina que envolve 6 arquivos. Quando acesso pelo TERMINAL(pentium)

o sistema. Ele dá um erro como se o um dos arquivo não estivesse indexado.

O mais estranho é que acesso este mesmo programa pelo SERVIDOR e ele funciona

normalmente. Quando acesso pelo TERMINAL (i5) acontece o mesmo erro.

Parece que o problema está no XP mas do servidor(todos os computadores estão com XP)

mas não estou achando a configuração adequada. Alguém tem alguma configuração XP para

que o SERVIDOR funcione corretamente ?.

Estes computadores estão substituindo outros de menor configuração que foram roubados.

CONFIGURAR SERVIDOR i5 NO XP

Enviado: 19 Abr 2012 17:17
por Clipper
Prezado Colega

Levando em consideração ao que você postou, aparentemente é algum problema relativo a conexão entre os terminais e o servidor tendo em vista que o erro só ocorre nos terminais e no servidor funciona perfeitamente, pode ser algum problema no compartilhamento dos arquivos, na abertura dos arquivos, configuração do Files, do Swappath, ou coisas do tipo. Você diz que os outros sistemas funcionam perfeitamente então eu descartaria inicialmente algum problema de hardware.

Você poderia dar maiores detalhes sobre o erro propriamente dito, qual a mensagem que aparece na hora do erro ?

Até logo.

Marcelo

CONFIGURAR SERVIDOR i5 NO XP

Enviado: 19 Abr 2012 19:53
por Zeca Roque
Boa Noite!!!

O erro que aparece(parece ironico) é

ERROR SIXNSX/1020 AREA DE TRABALHO NÃO ESTÁ INDEXADA.

Teoricamente significa que o arquivo perdeu o indice, mas se voce entrar no sistema pelo SERVIDOR, tudo está normal.

O que chama a atenção é que se trata de uma rotina (um Browse) que tem seis arquivos com seis BAG.
O maior BAG tem treze indices dentro dele.
Parece que o SERVIDOR veta uma certa quantidade de arquivos/bag.
Sei lá, vai entender

CONFIGURAR SERVIDOR i5 NO XP

Enviado: 19 Abr 2012 21:28
por Clipper
Prezado Colega

Você poderia postar a parte do código onde faz a abertura dos arquivos bem como a parte onde ocorre o erro ?

Até logo.

Marcelo

CONFIGURAR SERVIDOR i5 NO XP

Enviado: 19 Abr 2012 21:44
por Zeca Roque
Vou postar uma parte porque este programa tem + ou menos 1300 linhas.

Código: Selecionar todos

* PROGRAM ............ CONSDATA.PRG
* INSTALLATION ....... 12/OUT/90
* MAINTENANCE ........ 12/OUT/90
* AUTHOR ............. J.C. ROQUE
* FUNCTION ........... Consulta Coleta por Data    
*
*
#include "inkey.ch"
#include "cor.ch"
#include "sixnsx.ch"

#DEFINE amarelo  "R+/B,GR+/B*"
#DEFINE azul     "R+/B*,GR+/B*"
#DEFINE corcons  "W+/B*,W+/B*"
#DEFINE bege     "GR+/RB,GR+/B*"
#DEFINE CORTELA  "GR+/B,GR+/B"
#DEFINE vermelho "BG+/B,BG+/B"
#DEFINE REFRESH_TIME  "15:00:00" // minutos aguardando a rotina antes do REFRESH
#DEFINE DIF_TEMPO(A,B)  ELAPTIME(hora1,hora2) // Rotina para verificar tempo parado do sistema

close databases

*
IF !(USA_ARQ("DATA",.F.,0))
   CLOSE DATABASES
   RETURN
ENDIF
NT_DATA:=DIA
*
SELE A  // area 1
IF !(USA_ARQ("NUMCOL",.F.,0))
   CLOSE DATABASES
   RETURN
ENDIF
*
SELE B     // area 2
IF !(USA_ARQ("BACKCOL",.F.,0))
   CLOSE DATABASES
   RETURN
ENDIF
*
SELE C  // area 3
IF !(USA_ARQ("ARCLI",.F.,0))
   CLOSE DATABASES
   RETURN
ENDIF
*
SELE D   // area 4
IF !(USA_ARQ("COLETA",.F.,0))
   CLOSE DATABASES
   RETURN
ENDIF
*
SELE E   // area 5
IF !(USA_ARQ("ROMANEIO",.F.,0))
   CLOSE DATABASES
   RETURN
ENDIF
*
Acima ele seleciona os arquivos. O problema maior é o arquivo ROMANEIO que tem uma BAG com 13 indices.


e_coleta:=.T.
VER_COLETA(04,04,18,75,"COLETA",1,;
                          {"N_COLETA","DATA","R_NOME","D_NOME","D_CIDADE","R_FONE","CONTATO"},{"Coleta","Data","Remetente","Destinatario","Destino","Fone","Contato"},;
                          {"@!","@!","@!","@!","@!","@!","@!"},1)


   tone(5000,1)
   tone(5000,2)
   tone(5000,3)
   SET DELETED OFF
   SET DELETED OFF
   CLOSE DATABASES
   RETURN
ENDDO
*
*-------------------------------------------------------------------------
Function Ver_coleta(Li,Ci,Lf,Cf,Arquivo,Indices,Campo,Cabecalho,Pictr,titulo)
*-------------------------------------------------------------------------

/*----------------------------- Parametros -----------------------------------

Li, Ci   (N) - Coordenadas do canto superior esquerdo da janela de visualizaç╞o
Lf, Cf   (N) - Coordenadas do canto inferior direito da janela de visalizaç╞o
Arquivo  (N) - Numero da area
Indices  (N) - Indices do arquivo
Campo    (M) - Matriz que contem os campos do arquivo a serem  visualizados
Cabecalho(M) - Matriz que contem o cabecalho das colunas a serem visualizados
Pictr    (M) - Matriz com as pictures dos campos. Este parametro é opcional
titulo   (N) - Numero do arquivo - 1 Principal 2 Backup

----------------------------------------------------------------------------*/

Local Tela:=SaveScreen(0,0,24,79),Area:=Select(), CorSalva:=SetColor()
Local oMyBrowser, Coluna, nKey, NroDig:=0, qNome:="", Col:=Ci+19
Local PictTam:={6,10,21,21,15,9,10}
Local cTitulo:= IF(titulo=1,"Arquivo Principal de Coletas","Arquivo Backup de Coletas")
Local nseconds:=0
Local hora1:=TIME()
Local hora2

//SELE D
SELE &Arquivo
set order to (indices) 
//set order to 1 

do while .t.

DbGotop()     

oMybrowser:=TBrowseDb(li,Ci+1,Lf-1,Cf-1)
oMybrowser:HeadSep  :=Chr(196)
oMybrowser:FootSep  :=Chr(196)
oMybrowser:ColSep   :=CHR(32)+Chr(179)+CHR(32)
oMybrowser:ColorSpec := "W+/B,G+/B,GR+/B,R+/B,GB+/B,RB+/B,W+/G,R*/B"
// cores                  1     2     3    4    5      6    7    8
@ 02,40 SAY PADC(cTitulo,40) color "gb+/w"

@ 18,05 SAY "[F1]" color "rb+/b"
@ 18,10 SAY "Renova a Tela" color "gr+/b"
@ 18,24 SAY "[F2]" color "rb+/b"
@ 18,29 SAY "Coleta" color "gr+/b"
@ 18,36 SAY "[F3]" color "rb+/b"
@ 18,41 SAY "Data" color "gr+/b"
@ 18,48 SAY "[F4]" color "rb+/b"
@ 18,53 SAY "Remetente" color "gr+/b"
@ 18,63 SAY "[F5]" color "rb+/b"
@ 18,70 SAY "Fone" color "gr+/b"
*
@ 19,05 SAY "[F6]" color "rb+/b"
@ 19,10 SAY "Endereco" color "gr+/b"
@ 19,20 SAY "[F7]" color "rb+/b"
@ 19,25 SAY "Bairro" color "gr+/b"
@ 19,32 SAY "[F8]" color "rb+/b"
@ 19,37 SAY "Destino" color "gr+/b"
@ 19,45 SAY "[F9]" color "rb+/b"
@ 19,50 SAY "Destinatario" color "gr+/b"
@ 19,63 SAY "[F10]" color "rb+/b"
@ 19,70 SAY (IF( e_coleta,"BACKUP","COLETA")) color "gr+/b"

@ 20,05 SAY "[F11]" color "rb+/b"
@ 20,11 SAY "Baixar" color "gr+/b"
@ 20,18 SAY "[DEL]" color "rb+/b"
@ 20,24 SAY "Excluir" color "gr+/b"
IF e_coleta
   @ 20,31 SAY "[ALT P]" color "rb+/b"
   @ 20,39 SAY "Reemissao" color "gr+/b"
   @ 20,49 SAY "[ALT C]" color "rb+/b"
   @ 20,57 SAY "Clona" color "gr+/b"
   @ 20,62 SAY "[ALT O]" color "rb+/b"
   @ 20,70 SAY "Ocorr" color "gr+/b"
ELSE
   SETCOLOR("W+/B,GR+/R") 
   @ 20,31 CLEAR TO 20,75
   @ 20,31 SAY "[ALT C]" color "rb+/b"
   @ 20,39 SAY "Clona" color "gr+/b"
   @ 20,49 SAY "[ALT O]" color "rb+/b"
   @ 20,57 SAY "Ocorrencia" color "gr+/b"
ENDIF


For I:=1 To Len(Campo)

    Coluna:=TbColumnNew(Cabecalho[I],FieldwBlock(Campo[I],Select()))
    Coluna:Picture:=Pictr[I]
    Coluna:width:=PictTam[I]
    Coluna:colorblock={|cor1|videcode(FEITO,IMPRESSO) }
    oMybrowser:AddColumn(Coluna)

Next

// posiciona no primeiro registro
dbGoTop()

SET CURSOR OFF
Aqui através de uma função ele cria e estabiliza o Browse. O erro está na função videcode

*
*---------------------------------------------------------------------*
STATIC FUNCTION videcode(FEITO,IMPRESSO)
*---------------------------------------------------------------------*
*
*
nt_col=N_COLETA
cChave:=STR(nt_Col,6,0)+DTOC(nt_data)
Rua:=.F.

Area:=SELECT() //  area 4

*
SELE E // SELECIONA ARQUIVO DE ROMANEIOS
SET  ORDER TO 13
seek(cChave)
IF !EOF() // se  localizado significa que foi pra emntrega/coleta
   Rua:=.t. // se .t. saiu pra rua
ENDIF



SELE &Area // arquivo de coleta
SET ORDER TO 1

// Condições para as cores do Browse

IF     IMPRESSO =" " .and. FEITO ="S"
       cor1:={2,5} // Verde -  Feito
ELSEIF IMPRESSO=" " .and. Rua .and. FEITO ="S"
       cor1:={2,5} // Verde -  Feito
ELSEIF IMPRESSO=" " .and. Rua .and. FEITO =" "    
       cor1:={3,5} // Amarelo - Em andamento
ELSEIF IMPRESSO=" " .and. !Rua .and. FEITO =" "    
       cor1:={1,5} // Branco -  Não Impresso
ELSEIF IMPRESSO="S" .and. Rua .and. FEITO =" "    
       cor1:={3,5} // Amarelo - Em andamento
ELSEIF IMPRESSO="S" .and. !Rua .and. FEITO =" "    
       cor1:={5,1} // Magenta - Impresso, mas não na Rua
ELSEIF IMPRESSO="S" .and. Rua .and. FEITO ="S"    
       cor1:={2,5} // Verde -  Feito
ELSEIF IMPRESSO=" " .and. FEITO ="S"    
       cor1:={2,5} // Verde -  Feito
ELSEIF IMPRESSO="S" .and. FEITO ="S"    
       cor1:={2,5} // Verde -  Feito
ELSE
       cor1:={5,1} // Magenta - Impresso, mas não na Rua
ENDIF

Rua:=.F.
RETURN(cor1)
O erro está dentro desta função. Ele "pinta " a linha de acordo com a situação da coleta. Quando chama o arquivo ROMANEIo aí aparece o erro já citado.

CONFIGURAR SERVIDOR i5 NO XP

Enviado: 20 Abr 2012 08:50
por Zeca Roque
Continuando a minha saga posto também o meu arquivo LNK pra ver se tem algo faltando:

# modo NORMAL
BLINKER CLIPPER PAGE ON
BLINKER INCREMENTAL OFF
BLINKER LOWMEM RESERVE 0
BLINKER OVERLAY PAGEFRAME ON
BLINKER OVERLAY OPSIZE 64
#BLINKER EXECUTABLE CLIPPER //F:200 //DYNF:16 //SWAPK:65535 //SWAPPATH:'C:\TEMP' //TEMPPATH:'C:\TEMP'
BLINKER EXECUTABLE CLIPPER F220
BLINKER EXECUTABLE COMPRESS 1
#BLINKER PROCEDURE DEPTH 50
BLINKER EXECUTABLE REAL
BLINKER CACHE XMS 50%,1024
BLINKER CACHE EMS 50%,1024
BLINKER SYMBOL OFF

OUTPUT COLETA.EXE
NOBEL
PACKDATA
PACKCODE
BEGIN

fi .....
fi ....
fi ...

ENDAREA
//FI TIMESLIC
//FI __WAIT_B
@CL520MAX.LNK
LIB relogio
READONLY

criei este lnk baseado em algumas dicas que achei na internet, mesmo porque parece que ninguém sabe exatamente
como criar o LNK para rodar - DUALMODE - PROTEGIDO -REAL e por ai afora. A mesma coisa acontece com a configuração do clipper. Uns usam f:200 outros /F:200, afinal qual é o certo para clipper 52e?

CONFIGURAR SERVIDOR i5 NO XP

Enviado: 20 Abr 2012 09:09
por Jairo Maia
Olá Zeca,
Clipper escreveu:Parece que o SERVIDOR veta uma certa quantidade de arquivos/bag.
Será que não é a configuração da estação que está abaixo do que vc precisa, ou seja, como está configurado na estação a variável de ambiente:

FILES =

Sei que a SET CLIPPER o Blinker permite configurar no script, e isso você já fez, mas a FILES me parece que vc tem que ajustar no Windows.

Se vc tenta abrir um arquivo, mas não há espaço, ele não abre, e pode acorrer também este erro. Penso que pode ser isso, uma vez que se no servidor funciona, o problema não me parece estar no sistema.

CONFIGURAR SERVIDOR i5 NO XP

Enviado: 20 Abr 2012 17:32
por Clipper
Prezado Zeca

Primeiramente respondendo aos seus questionamentos.

1 - Tanto faz usar F:200 ou //F:200 o Clipper aceita ambos.
2 - Se você usa o Blinker, na minha opinião só deverá usar modo real se for impossível usar o modo protegido.
3 - Eu faria algumas modificações no seu script de linkagem, deixaria como abaixo :

Código: Selecionar todos

BLINKER INCREMENTAL OFF
BLINKER OVERLAY PAGEFRAME ON
BLINKER EXECUTABLE CLIPPER //F:240 //DYNF:8 //SWAPK:65535 //SWAPPATH:'C:\TEMP' //TEMPPATH:'C:\TEMP'
BLINKER EXECUTABLE COMPRESS 1
BLINKER EXECUTABLE EXTENDED
OUTPUT COLETA.EXE
NOBELL

BENGIAREA
FI ...
FI ...
FI ...
Segundamente...

Não consegui identificar onde você faz a abertura dos arquivos de indices, você poderia postar a função USA_ARQ(), por favor ?

Até logo.

Marcelo

CONFIGURAR SERVIDOR i5 NO XP

Enviado: 20 Abr 2012 18:57
por Zeca Roque
Boa Noite Marcelo!!!

Vou dar uma modificada no meu LNK confoorme voce sugeriu.

Segue abaixo a rotina de abertura de arquivos

Código: Selecionar todos

*----------------------------------------------------------------------
*  funcao USA_ARQ
*----------------------------------------------------------------------
*  Tenta abrir um arquivo para uso exclusivo/compartilhado.
*
*  Passa os seguintes parametros
*    1. Caracter -   nome do arquivo .DBF a ser aberto
*    2. Logico   -   modo de abertura (.T. exclusivo/.F. compartilhado)
*    3. Numerico -   segundos de espera (0 = espera sempre)
*    4. Caracter -   Alias a ser utilizado se diferente de ''
*    5. Logico   -   Se .T., mostra as mensagens

FUNCTION USA_ARQ(arquivo, exclusivo, espera,set_als,tmsgs)

PRIVATE sempre,cArq,cMsgs
IF espera = 0
   espera:= 2
ENDIF
cArq  = arquivo+".DBF"
qArq  = arquivo
cMsgs = IF(EMPTY(tmsgs),.F.,.T.)
IF !FILE(cArq)
   DwnMsg('Arquivo "'+qArq+ '" n╞o localizado - Favor verificar')
   bell2(7)
   inkey(2)
   RETURN (.F.)
ENDIF
IF cMsgs;DwnMsg('Aguarde! Acessando Arquivo "'+qArq+'"');ENDIF
TONE(785,1)
DwnMsg(space(50))
TECLA = LASTKEY()

DO WHILE (espera > 0) .AND. TECLA#27
   TECLA = LASTKEY()
   IF exclusivo    && exclusive
      IF .NOT. EMPTY(SET_ALS)
         USE (arquivo) ALIAS (SET_ALS) EXCLUSIVE
      ELSE
         USE (arquivo) EXCLUSIVE
      ENDIF
   ELSE
      IF !EMPTY(SET_ALS)
         USE (arquivo) ALIAS (SET_ALS) SHARED
      ELSE
         USE (arquivo) SHARED
      ENDIF
   ENDIF
   IF .NOT. NETERR()           && USO com sucesso
      RETURN (.T.)
   ENDIF
   INKEY(1)            && espera 1 segundo
   --espera 
ENDDO

IF TECLA=27 .OR. LASTKEY() = 27
   DwnMsg('Processo cancelado pelo usuário')
   bell2(7)
   //inkey(2)
   DwnMsg(space(50))
   RETURN (.F.)
ENDIF
DwnMsg('Acesso ao "'+qArq+'" BLOQUEADO, Verifique !!!')
bell2(7)
//inkey(2)
DwnMsg(space(50))
RETURN (.F.)   && falha no USO
* Fim - USE_ARQ
*
Obrigado

CONFIGURAR SERVIDOR i5 NO XP

Enviado: 20 Abr 2012 19:02
por Zeca Roque
Boa Noite Marcelo!!!!

Alterei o LNK e veja o resultado abaixo.



Blinker 7.00 DOS Extender - RC 2
Copyright (c) Assembler Software Manufacturers Inc, 1992-2002.


BLINKER : 1004 : CONSDATA.OBJ(CONSDATA) : 'ORDENAFOR' is duplicated in
CONSROM.OBJ(CONSROM)
BLINKER : 1004 : CONSDATA.OBJ(CONSDATA) : 'ORDENAFOR' is duplicated in
CONSMOV.OBJ(CONSMOV)
BLINKER : 1004 : CONSDATA.OBJ(CONSDATA) : 'ORDENAFOR' is duplicated in
CONSIT.OBJ(CONSIT)
BLINKER : 1004 : CONSDATA.OBJ(CONSDATA) : 'MENU' is duplicated in
CONSIT.OBJ(CONSIT)
BLINKER : 1004 : CONSROM.OBJ(CONSROM) : 'FUCAR' is duplicated in
INCLROM.OBJ(INCLROM)
BLINKER : 1004 : CONSROM.OBJ(CONSROM) : 'FUCAR' is duplicated in
XINCLROM.OBJ(XINCLROM)
BLINKER : 1004 : CONSROM.OBJ(CONSROM) : 'FUCAR' is duplicated in
YINCLROM.OBJ(YINCLROM)
BLINKER : 1004 : CONSROM.OBJ(CONSROM) : 'FUCAR' is duplicated in
IMPROM.OBJ(IMPROM)
BLINKER : 1004 : CONSDATA.OBJ(CONSDATA) : 'ORDENAFOR' is duplicated in
LISTTAB.OBJ(LISTTAB)
BLINKER : 1004 : INCLCOL.OBJ(INCLCOL) : 'POE_FONE' is duplicated in
NEWCOL.OBJ(NEWCOL)
BLINKER : 1004 : INCLCOL.OBJ(INCLCOL) : 'M_SPRINTER' is duplicated in
NEWCOL.OBJ(NEWCOL)
BLINKER : 1004 : INCLCOL.OBJ(INCLCOL) : 'M_608ABERT' is duplicated in
NEWCOL.OBJ(NEWCOL)
BLINKER : 1004 : INCLCOL.OBJ(INCLCOL) : 'M_608BAU' is duplicated in
NEWCOL.OBJ(NEWCOL)
BLINKER : 1004 : INCLCOL.OBJ(INCLCOL) : 'M_TOCOABER' is duplicated in
NEWCOL.OBJ(NEWCOL)
BLINKER : 1004 : INCLCOL.OBJ(INCLCOL) : 'M_TOCOBAU' is duplicated in
NEWCOL.OBJ(NEWCOL)
BLINKER : 1004 : INCLCOL.OBJ(INCLCOL) : 'M_TRUCKABE' is duplicated in
NEWCOL.OBJ(NEWCOL)
BLINKER : 1004 : INCLCOL.OBJ(INCLCOL) : 'M_TRUCKBAU' is duplicated in
NEWCOL.OBJ(NEWCOL)
BLINKER : 1004 : INCLCOL.OBJ(INCLCOL) : 'M_KOMBI' is duplicated in
NEWCOL.OBJ(NEWCOL)
BLINKER : 1004 : INCLCOL.OBJ(INCLCOL) : 'M_KOMBI_AB' is duplicated in
NEWCOL.OBJ(NEWCOL)
BLINKER : 1004 : INCLCOL.OBJ(INCLCOL) : 'M_FIORINO' is duplicated in
NEWCOL.OBJ(NEWCOL)
BLINKER : 1004 : CONSDATA.OBJ(CONSDATA) : 'ORDENAFOR' is duplicated in
ROMGERAL.OBJ(ROMGERAL)
BLINKER : 1004 : CONSROM.OBJ(CONSROM) : 'FUCAR' is duplicated in
ROMGERAL.OBJ(ROMGERAL)
BLINKER : 1115 : BLIKRNMGR(C5EVLDOS) : '__VMMSTCSEG' : unresolved external
BLINKER : 1115 : BLIKRNMGR(C5EVLDOS) : '__VMMSTCOFF' : unresolved external
BLINKER : 1115 : BLIKRNMGR(C5EVLDOS) : '__VMMSTCLOW' : unresolved external

BLINKER : 22 Warning error(s), 3 Fatal error(s)

COLETA.EXE (not created) (1.1 seconds)

Tem alguma posição?

CONFIGURAR SERVIDOR i5 NO XP

Enviado: 20 Abr 2012 23:35
por Clipper
Prezado Zeca

Por enquanto vamos esquecer o LNK já que esse não é exatamente o problema, continue usando o que está funcionando, depois veremos ele com mais cuidado.

Voltando ao problema principal. Eu não consegui identificar onde você está abrindo os arquivos de índices, será que o problema não está aí ? Aparentemente o arquivo DBF está sendo aberto mas seu(s) índices não, embora seja também estranho pois você diz que no servidor funciona perfeitamente. Mas não custa nada verificar...

Até logo.

Marcelo

CONFIGURAR SERVIDOR i5 NO XP

Enviado: 21 Abr 2012 12:13
por Zeca Roque
Bom dia Marcelo!!!

Continuo achando que o problema está na quantidade de indices. A minha dúvida é se a quantidade de indices dentro de uma BAG influencia. Coincidentemente esta BAG é a unica que tem treze indices dentro dela. Preciso verificar no SIXDRIVE quantos indices é possivel dentro de uma BAG. Outra dúvida é se quando o sistema abre uma BAG conta somente como um arquivo ou conta pela quantidade de indíces. Esta quantidade de indices circulando pela REDE pode causar o transtorno que está acontecendo. Fiz um teste deixando o EXE no terminal e deixei somente dos dados circulando no rede, mas o problema persiste. Este fim de semana vou tentar enxugar esta rotina e quando retornar ao trabalho na segunda vou fazer os testes pra ver o acontece.
Continuo aberto a opiniões.
Antecipadamente agradeço qualquer opinião

CONFIGURAR SERVIDOR i5 NO XP

Enviado: 21 Abr 2012 14:13
por Clipper
Não acredito que o problema seja a quantidade de arquivos, a quantidade de arquivos abertos só tem influência local, ou seja, seu eu tiver 100 arquivos abertos em um determinado micro eles só estarão "visíveis" para este micro. Outro ponto é que não importa o número de índices que um determinado arquivo contenha, ele será aberto como um único arquivo, essa é uma vantagem do uso do CDX e NSX que permite trabalhar com múltiplos índices com apenas um arquivo.

Você não me respondeu a pergunta anterior. Onde você faz a abertura do(s) arquivo(s) de índice(s) ? Poderia postar a parte da rotina onde é feito isso ?

Até logo.

Marcelo

CONFIGURAR SERVIDOR i5 NO XP

Enviado: 21 Abr 2012 22:11
por Zeca Roque
Boa Noite Marcelo!!!

Esqueci a droga do HD externo da empresa, mas vou tentar esclarecer como procedo.

Abrir o arquivo

*
SELE A //Seleciono da area A
IF !(USA_ARQ("DATA",.F.,0)) // se não consigo abri o arquivo
CLOSE DATABASES // fecho tudo
RETURN // retorno
ENDIF

Caso consigo abrir o arquivo seleciono a area a ser usada.
SET ORDER TO 1

(nos retalhos de PRG´s enviado tem o uso do USA_ARQ)

Como você tocou neste assunto, creio que tem SET da vida que quando é usado, ao abrir o arquivo
como faço acima ele abre automaticamente o arquivo de indices, principalmente se ele for uma BAG.
Voce sabe que SET é este ?
Continuo aberto a sugestões

Grato

CONFIGURAR SERVIDOR i5 NO XP

Enviado: 21 Abr 2012 22:59
por Clipper
Prezado Zeca

É justamente da abertura do arquivo de índices que estou sentido falta, deveria ter nos exemplos que você postou um :

DBSETINDEX() ou um SET INDEX TO e provavelmente um ORDSETFOCUS() ou SET ORDER TO.

DBSETINDEX() e SET INDEX TO fazem exatamente a mesma coisa, abrem um arquivo de índice.

A função ORDSETFOCUS() ou o comando SET ORDER TO servem para selecionar o índice que será usado.

Aí é que está estranho, você não abre nenhum arquivo de índice e dá um SET ORDER TO 1 ?

Se é para selecionar uma área o comando correto seria SELECT 1, e neste caso deveria ser selecionada a área antes da abertura do arquivo.

Vou dar um exemplo de como eu trabalho. (Utilizo CDX)

Código: Selecionar todos

use ARQUIV alias MEUARQ shared new
if .not. file("INDICE.CDX")
   index on CODIGO tag COD to INDICE
   index on NOME tag NOM to INDICE
else
   dbsetindex("INDICE")
endif
ordsetfocus("COD")

** Se eu precisar mudar de área uso ***

select MEUARQ

*** Facilita o uso do alias do arquivo, pois não preciso lembrar que o número da área
*** Se o alias for omitido na abertura, o alias será igual ao nome do arquivo, no meu exemplo seria ARQUIV

*** Digamos que preciso mudar o indice agora, então usaria :

ordsetfocus("NOM")
Então eu creio que o problema esteja relacionado a isso.

Até logo.

Marcelo