Página 1 de 1

DÚVIDA C/ SIX 2:

Enviado: 12 Mai 2005 09:49
por djjack
Bom dia Pessoal, td. bem?

Estou com a seguinte dúvida:

Acabo de migrar o sistema p/ RDD SIX2 c/ Clipper 5.2e e BLINKER 5, e toda vez que abro o sistema, é feita uma reconstrução de todos os índices.

Isso é normal?

Enviado: 12 Mai 2005 11:40
por janio
Amigo,

A resposta é simples: O sistema refaz todos os índices quando é aberto, pq vc pede pra q o sistema faça isso.

Em qualquer versão do clipper e com qualquer RDD, o sistema só faz os índices se vc pedir pra ser feito... isso é lógico.

Se vc está abrindo seus DBF´s normalmente, indexados com os seus respectivos arquivos de índices, toda vez que o DBF é atualizado, o índice também o é.... não precisa ficar reidexando toda vez...

Um abraço,

Janio

Enviado: 12 Mai 2005 23:03
por leo
Se tiver alguma coisa de anormal poste seu codigo aki pra vermos se tem algum problema

uso six2 a muito tempo e comigo nao acontece isso.

Enviado: 16 Mai 2005 21:23
por djjack
Eu utilizava RDD CDX que vem c/ clipper 5.2 e quando iniciava o sistema não ocorria a reconstrução dos índices.

Quando Complilei e Linkei c/ SIX2 - SIXCDX , toda vez que inicio o sistema, ele refaz todos os índices de todos os arquivos do sistema.

O arquivo LNK é:

BLINKER INCREMENTAL OFF
BLINKER EXECUTABLE EXTENDED
BLINKER EXECUTABLE COMPRESS 1
FI LOJA
FI CAD001
FI PROD001
FI UNID001
FI VEND001
FI TRAN001
FI COND001
FI CCORR01
FI TPD001
FI RCB001
FI LOJ_R001
FI R02001F9
FI LOJ_R020
FI R01801F9
FI __WAIT_B
FI SIXCDX
SEARCH BLXCLP52
SEARCH BLXRATEX
LIB C:\GASPRO40\GASP52PM, SIX2

Coloquei as seguintes linhas no PRG principal:

Request SIXCDX
# Include "SIXCDX.ch"

RDDSETDEFALT("SIXCDX")
DBSETDRIVER("SIXCDX")

Tentei também utilizar o RDD SIXNSX da SIX2, mas dá um erro ao tentar abrir os arquivos.

Precisa converter os arquivos para utilizar a SIXNSX? Onde Consigo este conversor?

Fico no aguardo.

Enviado: 16 Mai 2005 21:43
por janio
djjack escreveu: Coloquei as seguintes linhas no PRG principal:

Request SIXCDX
# Include "SIXCDX.ch"

RDDSETDEFALT("SIXCDX")
DBSETDRIVER("SIXCDX")

Amigo,

Para utilizar o RDD Six, vc deve colocar no PRG principal SOMENTE:

Código: Selecionar todos

REQUEST SIXNSX
RDDSETDEFAULT("SIXNSX")
No seu LNK coloque:

Código: Selecionar todos

lib SIX2
Pra criar os índices, veja esse exemplo:

Código: Selecionar todos

IF !FILE("A16CLI.NSX")
USE A16CLI EXCLUSIVE
   INDEX ON CODIGO TAG CHAVE1 TO A16CLI
   INDEX ON NOMCLI TAG CHAVE2 TO A16CLI
ENDIF
Nos seus PRG´s, use:

Código: Selecionar todos

DBSELECTAREA(1)
DBUSEAREA(,,[A16CID],[CIDADE], .T.)  // DBF
DBSETINDEX("A16CID") // Índice
Janio

Enviado: 17 Mai 2005 09:39
por djjack
Fiz o que o Janio sugeriu, mas não resolveu.

Com SIXCDX, continua reindexando todos arquivos na inicialização do sistema.

Com SIXNSX, ocorre o seguinte erro:
ERRO BASE 1012 - SIXNSX
Não é possivel abrir o arquivo.

Enviado: 17 Mai 2005 12:22
por Jorge Adourian
Se o seu programa indexa sempre na entrada, só tem um culpado, e ele se chama PROGRAMADOR.

Coloque seu inicio de programa que te mostramos seu erro, meu caro.

Enviado: 17 Mai 2005 20:59
por djjack
Segue abaixo o PRG principal:

Código: Selecionar todos

#include "loja.ch"
REQUEST DESCEND, MTAB, VUF, VCGC, VDV2, EXT, NMES, LTOC, SIXCDX

#include "LOJ_PUBL.ch"

RDDSETDEFAULT("SIXCDX")
// DBSETDRIVER("SIXCDX")
V0=SAVESCREEN(0,0,MAXROW(),79)
CLEA SCREEN
VideoSeg=IF(CARDTYPE()=V_MONO,45056,-18432)

#ifdef COM_TUTOR
 PARAM arq_mac, acao_
 acao_mac="D"
 IF !EMPT(arq_mac) .AND. !EMPT(acao_)
  acao_=UPPER(acao_)
  IF SUBS(acao_,2,1)$'LGCA'.AND.LEN(acao_)=2
   acao_=SUBS(acao_,2,1)
   IF acao_ $ "LCA" .AND. !FILE(arq_mac)
    ALERTA(2)
    ? "Arquivo "+arq_mac+" n„o encontrado!"
    RETU
   ELSE
    IF acao_="G"
     IF FILE(arq_mac)
      ALERTA(2)
      x="N"
      @ 10,20 SAY "Arquivo "+arq_mac+" j  existe sobrepor?" GET x PICT "!"
      READ
      CLEA SCREEN
      IF LASTKEY()=K_ESC .OR. x!="S"
       ? "Execu‡„o interrompida!"
       RETU
      ENDI
      ERASE (arq_mac)
     ENDI
     handle_mac=FCREATE(arq_mac)
    ELSE
     handle_mac=FOPEN(arq_mac,2)
    ENDI
    IF handle_mac=-1
     ? "N„o foi poss¡vel utilizar "+arq_mac
     RETU
    ENDI
    fat_mac=5
    acao_mac=acao_
   END IF
  END IF
 ENDI
#endi

NAOPISCA()
VAL_AX("6200")
CALLINT("21")
x=VAL_BX()
Sg=PEEK(x,44)+PEEK(x,45)*256
x=0
DO WHIL .t.
 IF PEEK(Sg,x)=0
  IF PEEK(Sg,x+1)=0
   x+=2
   EXIT
  ENDI
 ENDI
 x++
ENDD
direxe=""
IF PEEK(Sg,x)=1
 x+=2
 DO WHIL PEEK(Sg,x)>0
  direxe+=CHR(PEEK(Sg,x))
  x++
 ENDD
ENDI
IF EMPTY(direxe)
 direxe=TRATADIR(QUALDIR())
ENDI
direxe=UPPER(LEFT(direxe,RAT("\",direxe)))
arq_sos=direxe+"LOJA.SOS"    
SET CENTURY ON               
SETCANCEL(.f.)
SET DATE BRIT
SET EXAC OFF
SET SCOREBOARD OFF
SET WRAP ON
SET KEY K_ALT_F2  TO doscom
SETKEY(K_INS,{||;
              IF(READINSERT(),SETCURSOR(1),SETCURSOR(3)),;
              READINSERT(!READINSERT());
             };
)

msg:=cpord:=criterio:=chv_rela:=chv_1:=chv_2:=vr_memo := ""
op_sis:=cod_sos:=nucop:=op_posi:=op_menu :=1
nss=030
exrot:=AFILL(ARRAY(nss),""); usuario:=obs_usuario:=senha:=senhatu:=msg_auto:=pw_grupo:=pw_codigo := ""
quer_sair:=.f.
datac=DATE()
nao_mostra:=l_s:=c_s:=c_i:=l_i := 0
tem_borda:=drvpvdbf:=drvexcl := .t.
v_out:=gr_rela:=ve_outros:=cn:=fgrep:=drvmouse:=drvpesq :=.f.
tem_t:=fgconf:=drvconf:=brw:=drvincl :=.f.
gcr=CHR(17)+CHR(217); nivelop=3
drvdbf:=drvntx:=drverr:=drvpw := TRATADIR(QUALDIR())
drvcara=CHR(176); mold="ÚÄ¿³ÙÄÀ³ÃÄ´"
drvmenucen=.f.; drvfonte=1
drvporta="LPT1"
drvcortna="B+/BG*"; drvtittna="B/BG*"
nemp="NG COMERCIAL DISTRIB. LTDA"
nsis="Sistema Gerencial V1.0"

#ifdef COM_MOUSE
 drvmouse=(MOUSE()>0)

 #ifdef COM_TUTOR
  IF acao_mac!="D"
   drvmouse=.f.
  ENDI
 #endi

 drvratH=8; drvratV=16
 tpo_mouse=0
#endi

#ifdef COM_LOCK
 pr_ok=__PPRJ(arq_sos,"úûá÷åâùòëóêêøþêüáâðù")
 IF LEN(pr_ok)>0
  CLEAR
  ? pr_ok
  RETU
 ENDI
#endi

#ifdef COM_REDE
 ms_uso="Arquivo sendo acessado|COM EXCLUSIVIDADE"
#endi

arqgeral="LOJ"

#ifdef COM_REDE

 #undef COM_PROTECAO

 drvtempo=25
 ide_maq=RIGHT(ALLTRIM(NETNAME()),4)
 IF EMPTY(ide_maq)
  ide_maq=LEFT(GETENV("ESTACAO"),4)
 ENDI
 IF EMPTY(ide_maq)
  cod_sos=49
  msgt="IDENTIFICA€ŽO DA ESTA€ŽO"
  SET KEY K_F1 TO
  ide_maq=DBOX("Nome da esta‡„o",,,,,msgt,SPAC(4),"@!",,"W+/N")
  SET KEY K_F1 TO help
  IF LASTKEY()=K_ESC .OR.;
     EMPTY(ide_maq)
   RESTSCREEN(0,0,MAXROW(),79,v0)
   SETPOS(MAXROW()-1,1)
   RETU
  ENDI
 ENDI
 ide_maq="_"+ALLTRIM(ide_maq)
#else
 ide_maq="_temp"
#endi

qualsis={|db_f|db_:=UPPE(db_f),ASCAN(sistema,{|si|si[O_ARQUI,O_NOME]==db_})}
AFILL(sistema:=ARRAY(nss),{})
LOJ_ATRI()
LOJ_ATR1()
arqconf=direxe+arqgeral+;
        ide_maq+".sys"
IF FILE(arqconf)
 REST FROM (arqconf) ADDI

 #ifdef COM_MOUSE
  IF drvmouse
   drvmouse=(MOUSE()>0)
   MOUSERAT(drvratH,drvratV)
  ENDI
 #else
  drvmouse=.f.
 #endi

ELSE
 drvmarca := "Epson 9 pinos"
 drvprn =1
 drvpadrao="3"
 drvtapg="CHR(27)+'C'+CHR(NNN)"
 drvpcom="CHR(15)"
 drvtcom="CHR(18)"
 drvpc20="CHR(27)+'M'+CHR(15)"
 drvtc20="CHR(27)+'P'"
 drvpeli="CHR(27)+'M'"
 drvteli="CHR(27)+'P'"
 drvpenf="CHR(27)+'E'"
 drvtenf="CHR(27)+'F'"
 drvpexp="CHR(27)+'W'+CHR(1)"
 drvtexp="CHR(27)+'W'+CHR(0)"
 drvpde8="CHR(27)+'0'"
 drvtde8="CHR(27)+'2'"
 drvland=""
 drvport=""
 drvsom=.t.
 drvautohelp=.t.
 drvcorpad="W+/B*"  ; drvcorbox="W+/B"
 drvcormsg="GR+/B"  ; drvcorenf="BG+/B"
 drvcorget="W+/B*"  ; drvcortel="BG+/B*"
 drvcorhlp="B/W*"   ; drvcortna="B+/BG*"
 drvtitpad="GR+/B*" ; drvtitbox="GR+/B"
 drvtitmsg="BG+/B"  ; drvtitenf="W+/B"
 drvtitget="GR+/B*" ; drvtittel="GR+/B*"
 drvtithlp="B+/W*"  ; drvtittna="B/BG*"
 CBC1()
 ALERTA()
 cod_sos=2
 IF !PEGADIR(.t.)
  RESTSCREEN(0,0,MAXROW(),79,v0)
  SETPOS(MAXROW()-1,1)
  RETU
 ENDI
ENDI

LOJ_ATRI()
LOJ_ATR1()

#ifdef COM_TUTOR
 IF acao_mac!="D"
  drvmouse=.f.
 ENDI
#endi

#ifdef COM_PROTECAO
 protdbf={|fg|pt:=fg,;
           tel_p:=SAVESCREEN(0,0,MAXROW(),79),;
           DBOX("Um momento!",,,,NAO_APAGA),;
           AEVAL(sistema,{|sis|;
                           EDBF(sis[O_ARQUI,O_DIR_DBF]+;
                                sis[O_ARQUI,O_NOME],pt);
                         };
           ),;
           RESTSCREEN(0,0,MAXROW(),79,tel_p);
         }

 EVAL(protdbf,.t.)
#endi

FOR i=nss-2 TO nss
 dbf=drvpw+sistema[i,O_ARQUI,O_NOME]
 IF FILE(dbf+".dbf")
  FOR t=1 TO LEN(sistema[i,O_INDIC])
   ntx=drvpw+sistema[i,O_INDIC,t]
   IF !FILE(ntx+EXTENSAO())

    IF EMPTY(SELECT(sistema[i,O_ARQUI,O_NOME]))

     #ifdef COM_REDE
      IF !USEARQ(dbf,.t.,5,1,.f.)

       #ifdef COM_PROTECAO
        EVAL(protdbf,.f.)
       #endi

       RETU
      ENDI
     #else
      USEARQ(dbf,,,,.f.)
     #endi

    ENDI
    chvind=sistema[i,O_CHAVE,t]
    tg_=ALLTRIM(STR(t))
    INDE ON &chvind. TAG (tg_) TO (ntx)
   ENDI
  NEXT
  CLOS ALL
 ENDI
NEXT

arq_prn=drverr+"PRINTERS.DBF"
IF !FILE(arq_prn)
 DBCREATE(arq_prn,{;
                   {"marca" ,"C",15,0},;
                   {"porta" ,"C", 4,0},;
                   {"padrao","C", 1,0},;
                   {"tapg"  ,"C",40,0},;
                   {"pcom"  ,"C",40,0},;
                   {"tcom"  ,"C",40,0},;
                   {"pc20"  ,"C",40,0},;
                   {"tc20"  ,"C",40,0},;
                   {"peli"  ,"C",40,0},;
                   {"teli"  ,"C",40,0},;
                   {"penf"  ,"C",40,0},;
                   {"tenf"  ,"C",40,0},;
                   {"pexp"  ,"C",40,0},;
                   {"texp"  ,"C",40,0},;
                   {"pde8"  ,"C",40,0},;
                   {"tde8"  ,"C",40,0},;
                   {"land"  ,"C",40,0},;
                   {"port"  ,"C",40,0};
                  };
 )

 #ifdef COM_REDE
  USEARQ(arq_prn,.t.,20,1,.f.)
 #else
  USE (arq_prn)
 #endi

 APPE BLAN
 REPL marca  WITH drvmarca,;
      porta  WITH drvporta,;
      padrao WITH drvpadrao,;
      tapg   WITH drvtapg,;
      pcom   WITH drvpcom,;
      tcom   WITH drvtcom,;
      pc20   WITH drvpc20,;
      tc20   WITH drvtc20,;
      peli   WITH drvpeli,;
      teli   WITH drvteli,;
      penf   WITH drvpenf,;
      tenf   WITH drvtenf,;
      pexp   WITH drvpexp,;
      texp   WITH drvtexp,;
      pde8   WITH drvpde8,;
      tde8   WITH drvtde8,;
      land   WITH drvland,;
      port   WITH drvport
 USE
ENDI
MUDAFONTE(drvfonte)
corcampo=drvtittel
SETCOLOR(drvcorpad+","+drvcorget+",,,"+corcampo)
CBC1()
IF ASC(drvdbf)=65.OR.ASC(drvntx)=65
 ALERTA()
 cod_sos=1
 op_a=DBOX("Disco pronto|Cancelar a opera‡„o",,,E_MENU,,"DISCO DE DADOS EM "+LEFT(drvdbf,1))
 IF op_a!=1

  #ifdef COM_PROTECAO
   EVAL(protdbf,.f.)
  #endi

  RESTSCREEN(0,0,MAXROW(),79,v0)
  SETPOS(MAXROW()-1,1)
  RETU
 ENDI
ENDI

IF !PEGA_SENHA()

 #ifdef COM_PROTECAO
  EVAL(protdbf,.f.)
 #endi

 MUDAFONTE(0)
 RESTSCREEN(0,0,MAXROW(),79,v0)
 SETPOS(MAXROW()-1,1)
 RETU
ENDI

IF !CRIADBF()

 #ifdef COM_PROTECAO
  EVAL(protdbf,.f.)
 #endi

 MUDAFONTE(0)
 RESTSCREEN(0,0,MAXROW(),79,v0)
 SETPOS(MAXROW()-1,1)
 RETU
ENDI
SET CONF (drvconf)
CBC1()

LOJ_MENU()

#ifdef COM_PROTECAO
 EVAL(protdbf,.f.)
#endi

#ifdef COM_TUTOR
 IF acao_mac!="D"
  FCLOSE(handle_mac)
  acao_mac="D"
 END IF
#endi

MUDAFONTE(0)
RESTSCREEN(0,0,MAXROW(),79,v0)
SETPOS(MAXROW()-1,1)
RETU

FUNC PEGA_SENHA()       // pega senha de acesso ao sistema
LOCAL ret_val:=.f., v1, t_f4_:=SETKEY(K_F4,{||FIM_PW()})

#ifdef COM_REDE
 IF !USEARQ(sistema[nss-1,O_ARQUI,O_NOME],.f.,20,1)
  RETU .f.
 ENDI
#else
 USEARQ(sistema[nss-1,O_ARQUI,O_NOME])
#endi

#ifdef COM_REDE
 IF !USEARQ(sistema[nss,O_ARQUI,O_NOME],.f.,20,1)
  RETU .f.
 ENDI
#else
 USEARQ(sistema[nss,O_ARQUI,O_NOME])
#endi

ORDSETFOCUS("2")
cod_sos=15
COLORSELECT(COR_GET)
v1=SAVESCREEN(0,0,MAXROW(),79)
DBOX(PADR(" Nome.:",25)+"|"+PADR(" Senha:",25)+"| F4 para finalizar|ESC para recome‡ar",9,25,,NAO_APAGA,"SENHA DE ACESSO")
cp_=1
usuario=SPACE(15)
DO WHIL .t.
 @ 12,36 GET usuario PICT "@!"
 READ
 IF quer_sair
  EXIT
 ENDI
 IF LASTKEY()=K_ESC
  usuario=SPACE(15)
  LOOP
 ENDI
 SETCOLOR(drvcorget)
 @ 13,36 SAY SPAC(6)
 senha=PADR(PWORD(13,36),6)
 SETCOLOR(drvcorbox)
 IF quer_sair
  EXIT
 ENDI
 IF EMPTY(senha)
  @ 13,36 SAY SPAC(6)
  LOOP
 ENDI
 SEEK ENCRIPT(usuario)+senha
 IF FOUND()
  usuario=TRIM(DECRIPT(pw_nome))
  msg_auto="Opera‡„o n„o autorizada, "+usuario
  obs_usuario=TRIM(DECRIPT(TRIM(pw_obs)))
  senhatu=senha
  nivelop=VAL(DECRIPT(pw_nivel))
  M->pw_codigo=DECRIPT(pw_codigo)
  M->pw_grupo =DECRIPT(pw_grupo)
  SELE PWTABELA
  FOR t=1 TO nss-3
   SEEK ENCRIPT(M->pw_grupo)+ENCRIPT(PADR(sistema[t,O_MENU],35))
   IF FOUND()
    exrot[t]=DECRIPT(pw_permis)
   ELSE
    exrot[t]=REPL("*",30)
   ENDI
   IF sistema[t,O_OUTROS,O_NIVEL]>5 .AND.;
      sistema[t,O_OUTROS,O_NIVEL]<9
    sistema[t,O_OUTROS,O_NIVEL]-=5
   END IF
   IF LEN(ALLTRIM(exrot[t]))>=20
    sistema[t,O_OUTROS,O_NIVEL]+=5
   ENDI
  NEXT
  exrot[nss]="VNGA"
  exrot[nss-1]=exrot[nss]+"EDR"
  exrot[nss-2]=exrot[nss]
  IF nivelop>0.AND.nivelop<4
   DBOX("Bom trabalho, "+usuario,13,45,2)
   ret_val=.t.
   RESTSCREEN(0,0,MAXROW(),79,v1)
   EXIT
  ENDI
 ELSE
  IF cp_<2
   cp_++
   ALERTA()
   DBOX("Senha inv lida!",,,1)
   @ 13,36 SAY SPAC(6)
  ELSE
   ALERTA()
   DBOX("Usu rio n„o autorizado!",,,2)

   #ifdef COM_PROTECAO
    EVAL(protdbf,.f.)
   #endi

   RESTSCREEN(0,0,MAXROW(),79,v0)
   SETPOS(MAXROW()-1,1)
   MUDAFONTE(0)
   EXIT
  ENDI
 ENDI
ENDD
SETKEY(K_F4,t_f4_)
CLOSE ALL
SETCOLOR(drvcorpad)
RETU ret_val

PROC FIM_PW()
quer_sair=.t.
KEYB CHR(K_ESC)
RETU

* \\ Final de LOJA.PRG


Enviado: 20 Mai 2005 11:56
por Jorge Adourian
Meu caro colega, você vê que ninguém responde...Estranho ? Não !!!

Ningúem tem paciencia nem tempo para ficar analisando seu imenso trecho de PRG.

Seja mais direto, mostre apenas a parte que interessa, que eu garanto que algúem ajudará.

Enviado: 21 Mai 2005 02:35
por Dudu_XBase
Boa Noite !!
Vendo esse trecho do seu código...vc não notou algum erro ?

Código: Selecionar todos

  FOR i=nss-2 TO nss
   dbf=drvpw+sistema[i,O_ARQUI,O_NOME]
    IF FILE(dbf+".dbf")
     FOR t=1 TO LEN(sistema[i,O_INDIC])
        ntx=drvpw+sistema[i,O_INDIC,t]
        IF !FILE(ntx+EXTENSAO())

        IF EMPTY(SELECT(sistema[i,O_ARQUI,O_NOME]))

     #ifdef COM_REDE
        IF !USEARQ(dbf,.t.,5,1,.f.)

     #ifdef COM_PROTECAO
        EVAL(protdbf,.f.)
       #endi

       RETU
      ENDI
     #else
      USEARQ(dbf,,,,.f.)
     #endi

    ENDI
    chvind=sistema[i,O_CHAVE,t]
    tg_=ALLTRIM(STR(t))
    INDE ON &chvind. TAG (tg_) TO (ntx)
   ENDI
  NEXT
  CLOS ALL
 ENDI
NEXT 

Debugue seu programa....qdo chegar nessa linha...para e avalie seu processo....

IF !FILE(ntx+EXTENSAO())

Qual o valor de ntx+EXTENSAO() ?
Esse arquivo existe ?
Se não existir claro que ele reindexará novamente...certo....