Página 1 de 1

Mensagem de erro no CDX

Enviado: 14 Nov 2016 11:57
por AutomoSistema
Bom dia a Todos do Forum, estou tendo um problema no que encontra-se anexado na imagem, se alguém pude me ajudar fico agradecido

Mensagem de erro no CDX

Enviado: 14 Nov 2016 12:15
por Kapiaba

Código: Selecionar todos

#Include "FiveWin.Ch"
#Include "Directry.ch"
#Include "Ord.Ch" 

FUNCTION ReIndPack( lPack, lIndCep, oMostraIndCep, olPack, oMeter1, ;
                           oMeter2, oMeter3 )

    FIELD RAZ_MATRIC, DEST_NOME, END,     MATRICULA, MESANO,    CODIGO,     ;
          DESCRICAO,  MARCA,     EMPRESA, NOME_FUNC, NOME_CLI,  PEDIDO,     ;
          MESA,       VENDEDOR,  CODUF,   CIDADE,    COD_SECAO, AGE_CODIGO, ;
          AGE_GRUPO,  CGCCLI,    VENCI,   NNF,       COMP,      OBS1
    FIELD CAIXA,      DAT,       HORA,    OPER,      CODIBGE,   CGC,        ;
          EDICAO
 
    LOCAL I        := 0, Del_Indice
    LOCAL cFileMov := ""
    LOCAL cMsg  := "ATENÇÃO USUÁRIO: -> CHAME O SUPERVISOR IMEDIATAMENTE!!!" ;
                                                                     + CRLF +;
                                                                     + CRLF +;
                   "ERRO! ERRO! ERRO! ERRO! ERRO! ERRO! ERRO! ERRO! ERRO!  " ;
                                                                     + CRLF +;
                                                                     + CRLF +;
                   "ERRO FATAL DE REDE! TOME TODO O CUIDADO POSSIVEL!      " ;
                                                                     + CRLF +;
                   "IMPOSSIVEL CONTINUAR UTILIZANDO OS BANCOS DE DADOS!    " ;
                                                                     + CRLF +;
                   "VOCÊ PRECISA TIRAR TODOS OS USUÁRIOS DA REDE, AGORA!   " ;
                                                                     + CRLF +;
                   "TENTE REINDEXAR OS BANCOS SOMENTE PELO SERVIDOR!       " ;
                                                                     + CRLF +;
                   "CASO NÃO CONSIGA REINDEXAR OS BANCOS, SAIA DO PROGRAMA " ;
                                                                     + CRLF +;
                   "DESLIGUE OU REINICIE O SERVIDOR, E DEPOIS, VOCÊ PODERÁ " ;
                                                                     + CRLF +;
                   "REINDEXAR OS BANCOS DE DADOS.        ATENÇÃO MÁXIMA!!! " ;
                                                                     + CRLF +;
                   "VOU DESLIGAR ESTE PROGRAMA, AVISE A TODOS OS OUTROS    " ;
                                                                     + CRLF +;
                   "USUÁRIOS, PARA SAIREM IMEDIATAMENTE DA REDE. PERIGO!!! " ;
                                                                     + CRLF +;
                   "                                                       "

    MEMVAR oAceitar, oCancelar

    PUBLIC XFANTASIA, XNOMEEMP, XDA, XVERSAO, XTIPOEMP, XARQPED, LDESLIGAINDEX

    EXTERNAL DESCEND

    // Desliga Botoes e CheckBox's
    oAceitar:Disable()
    oAceitar:Refresh()
    oCancelar:Disable()
    oCancelar:Refresh()
    olPack:Disable()
    olPack:Refresh()
    oMostraIndCep:Disable()
    oMostraIndCep:Refresh()

    //-> Apaga os temporarios
    AEVAL(DIRECTORY( "TEMP*.*"      ),{ |aFILE| FERASE(aFILE[F_NAME]) } )

    /*
    AEVAL(DIRECTORY( "IBGE.cdx" ),{ |aFILE| FERASE(aFILE[F_NAME]) } )
    */

    //-> Primeira Vez, nao o tem .cdx
    IF .NOT. FILE( "CADCEP.CDX" )
       lIndCep := .T.
    ENDIF

    //-> Ideia original By Kleyber Derick - DESTRUA OS INDICES.CDX
    DEL_INDICE := DIRECTORY( "*.CDX" )

    IF lIndCep = .F.

       IF FILE( "CADCEP.CDX" )
          AEVAL(DIRECTORY( "CADCEP.COP" ),{ |aFILE| FERASE(aFILE[F_NAME]) } )
          COPYFILE( "CADCEP.CDX", "CADCEP.COP", .F. )
       ENDIF

    ENDIF

    FOR I = 1 TO LEN( Del_Indice )
       FERASE( DEL_INDICE[I][1] )
    NEXT I

    IF lIndCep = .F.

       IF FILE( "CADCEP.COP" )
          COPYFILE( "CADCEP.COP", "CADCEP.CDX", .F. )
          AEVAL(DIRECTORY( "CADCEP.COP" ),{ |aFILE| FERASE(aFILE[F_NAME]) } )
       ENDIF

    ENDIF

    // PARA VERIFICAR SE A REDE TRAVOU OS BANCOS DE DADOS... ABORTAR.
    // CASO O FERASE NÇO CONSIGA DELETAR,  PORQUE A REDE ESTA TRAVADA!
    IF  FILE( "CADETIQ.cdx"  ) .OR.                                          ;
        FILE( "CADFORNE.cdx" ) .OR.                                          ;
        FILE( "ANIMAIS.cdx"  ) .OR.                                          ;
        FILE( "VEICULOS.cdx" ) .OR.                                          ;
        FILE( "VENDEDOR.cdx" ) .OR.                                          ;
        FILE( XARQPED+".cdx" )

        MsgStop( cMsg, "Problemas Na Rede ou no Computador, Cuidado!" )

        DBCLOSEALL()
        RELEASE ALL
        SYSREFRESH()
        __QUIT()

    ENDIF

    //-> INDEXACAO DO PRIMEIRO METER - AREA DOS CLIENTES

    //-> AGENDA TELEFONICA
    IF NetUse( "AGENDTEL", .F. )

        IF lPack = .T.

            MsgRun( "Apagando Registros Excluidos...", ;
                    "Por Favor, Espere!"             , ;
                    { || __DbPack() } )

        ENDIF

        oMeter1:nTotal = RecCount()

        //oMeter1:cText   := OemToAnsi( "Indexando AGENDA, Por CODIGO: "  )
        //oMeter1:nClrBar := CLR_HBLUE

        INDEX ON VAL(AGE_CODIGO)              TAG CODIGO TO   AGENDTEL    ;
              FOR !DELETED()                                              ;
              EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() ) ;
              EVERY 10

        //oMeter1:cText   := OemToAnsi( "Indexando AGENDA, Por NOME: "  )
        //oMeter1:nClrBar := CLR_HBLUE

        INDEX ON Field->AGE_NOME              TAG NOME TO   AGENDTEL      ;
              FOR !DELETED()                                              ;
              EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() ) ;
              EVERY 10

        //oMeter1:cText   := OemToAnsi( "Indexando AGENDA, Por APELIDO: "  )
        //oMeter1:nClrBar := CLR_HBLUE

        INDEX ON Field->AGE_APELID            TAG APELIDO TO   AGENDTEL   ;
              FOR !DELETED()                                              ;
              EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() ) ;
              EVERY 10

        //oMeter1:cText   := OemToAnsi( "Indexando AGENDA, Por GRUPO: "  )
        //oMeter1:nClrBar := CLR_HBLUE

        INDEX ON VAL(AGE_GRUPO)               TAG GRUPO  TO   AGENDTEL    ;
              FOR !DELETED()                                              ;
              EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() ) ;
              EVERY 10

        DbCloseAll()

    ENDIF

    //-> GRUPOS DA AGENDA TELEFONICA
    IF NetUse( "AGENDGRP", .F. )

        IF lPack = .T.

            MsgRun( "Apagando Registros Excluidos...", ;
                    "Por Favor, Espere!"             , ;
                    { || __DbPack() } )

        ENDIF

        oMeter1:nTotal = RecCount()

        //oMeter1:cText   := OemToAnsi( "Indexando AGENDAGRP, Por CODIGO: "  )
        //oMeter1:nClrBar := CLR_HBLUE

        INDEX ON Field->GTE_CODIGO            TAG CODIGO TO   AGENDGRP    ;
              FOR !DELETED()                                              ;
              EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() ) ;
              EVERY 10


        //oMeter1:cText   := OemToAnsi( "Indexando AGENDAGRP, Por NOME: "  )
        //oMeter1:nClrBar := CLR_HBLUE

        INDEX ON Field->GTE_NOME              TAG NOME TO   AGENDGRP      ;
              FOR !DELETED()                                              ;
              EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() ) ;
              EVERY 10

        DbCloseAll()

    ENDIF

    //-> CADASTRO DE CONVENIOS
    IF NetUse( "CONVENIO", .F. )

        IF lPack = .T.

            MsgRun( "Apagando Registros Excluidos...", ;
                    "Por Favor, Espere!"             , ;
                    { || __DbPack() } )

        ENDIF

        oMeter1:nTotal = RecCount()

        //oMeter1:cText   := OemToAnsi( "Indexando CONVENIO, Por CODIGO: "  )
        //oMeter1:nClrBar := CLR_HBLUE

        INDEX ON VAL(Field->CODIGO) TAG CODIGO TO CONVENIO                ;
              FOR !DELETED()                                              ;
              EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() ) ;
              EVERY 10

        //oMeter1:cText   := OemToAnsi( "Indexando CONVENIO, Por NOME: "  )
        //oMeter1:nClrBar := CLR_HBLUE

        INDEX ON Field->NOME        TAG NOME   TO CONVENIO                ;
              FOR !DELETED()                                              ;
              EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() ) ;
              EVERY 10

        DbCloseAll()

    ENDIF

    //-> CADASTRO DE CONVENIADOS
    IF NetUse( "CONVENIA", .F. )

       IF lPack = .T.

           MsgRun( "Apagando Registros Excluidos...", ;
                   "Por Favor, Espere!"             , ;
                   { || __DbPack() } )

       ENDIF

       oMeter1:nTotal = RecCount()

       INDEX ON VAL(Field->CODIGO) TAG CODIGO    TO CONVENIA             ;
             FOR !DELETED()                                              ;
             EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() ) ;
             EVERY 10

       INDEX ON Field->NOME        TAG NOME      TO CONVENIA             ;
             FOR !DELETED()                                              ;
             EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() ) ;
             EVERY 10

       DbCloseAll()

    ENDIF

    //-> CADASTRO DE TIPOS DA LOCADORA
    IF NetUse( "TIPOLOCA", .F. )

       IF lPack = .T.

          MsgRun( "Apagando Registros Excluidos...", ;
                  "Por Favor, Espere!"             , ;
                  { || __DbPack() } )

       ENDIF

       oMeter1:nTotal = RecCount()

       //oMeter1:cText   := OemToAnsi( "Indexando TIPO, Por CODIGO: "  )
       //oMeter1:nClrBar := CLR_HBLUE

       INDEX ON VAL(Field->TIP_CODIGO) TAG CODIGO TO TIPOLOCA             ;
             FOR !DELETED()                                               ;
             EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() )  ;
             EVERY 10

       //oMeter1:cText   := OemToAnsi( "Indexando TIPO, Por DESCRIۂO: "  )
       //oMeter1:nClrBar := CLR_HBLUE

       INDEX ON Field->TIP_DESCRI TAG DESCRI TO TIPOLOCA                  ;
             FOR !DELETED()                                               ;
             EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() )  ;
             EVERY 10

       DbCloseAll()

    ENDIF

    IF NetUse( "SETORES", .F. )

       IF lPack = .T.

          MsgRun( "Apagando Registros Excluidos...", ;
                  "Por Favor, Espere!"             , ;
                  { || __DbPack() } )

       ENDIF

       oMeter1:nTotal = RecCount()

       //oMeter1:cText   := OemToAnsi( "Indexando SETORES, Por CODIGO: "  )
       //oMeter1:nClrBar := CLR_HBLUE

       INDEX ON VAL(Field->SET_CODIGO) TAG SET_CODIGO TO SETORES         ;
             FOR !DELETED()                                              ;
             EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() ) ;
             EVERY 10

       //oMeter1:cText   := OemToAnsi( "Indexando SETORES, Por DESCRIۂO: "  )
       //oMeter1:nClrBar := CLR_HBLUE

       INDEX ON Field->SET_DESCRI TAG SET_DESCRI TO SETORES              ;
             FOR !DELETED()                                              ;
             EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() ) ;
             EVERY 10

       DbCloseAll()

    ENDIF

    // CADASTRO DAS RETIRADA - SANGRIA DO CAIXA
    IF NetUse( "SANGRIA", .F. )

       IF lPack = .T.

          MsgRun( "Apagando Registros Excluidos...", ;
                  "Por Favor, Espere!"             , ;
                  { || __DbPack() } )
        
       ENDIF

       oMeter1:nTotal = RecCount()

       //oMeter1:cText   := OemToAnsi( "Indexando SANGRIA, Por HORA: "  )
       //oMeter1:nClrBar := CLR_HRED

       INDEX ON STR(CAIXA,2,0)+DTOC(DAT)+HORA TAG CAIXA     TO SANGRIA       ;
             FOR !DELETED()                                                  ;
             EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() )     ;
             EVERY 10

       //oMeter1:cText   := OemToAnsi( "Indexando SANGRIA, Por OPERADOR: "  )
       //oMeter1:nClrBar := CLR_CYAN

       INDEX ON LEFT(OPER,2)+DTOC(DAT)+HORA   TAG OPERADOR  TO SANGRIA       ;
             FOR !DELETED()                                                  ;
             EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() )     ;
             EVERY 10

       //oMeter1:cText   := OemToAnsi( "Indexando SANGRIA, Por CAIXA: "  )
       //oMeter1:nClrBar := CLR_HBLUE

       INDEX ON STR(CAIXA,3)+OPER+DTOC(DAT)   TAG NCAIXA    TO SANGRIA       ;
             FOR !DELETED()                                                  ;
             EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() )     ;
             EVERY 10

       DbCloseAll()

    ENDIF

    lDesligaIndex := .T.
    lSaida := .T.

RETURN NIL

//OrdSkipUnique() // Ver o M¢dulo DBFCDX.PRG  (Manual) Esta no \Fivewin

/*
CRIACAO DE INDICES CDX

Em principio existem 3 Fun‡äes para construir Indices:
OrdConSet(), OrdCriate() e DbCriateIndex(), Porem nao se recomenda Trabalhar
directamente com elas.
Pelo contrario, Usaremos INDEX ON ( que no fundo se transforma em Fun‡äes por
Meio do pre-processador - /P ) por sua claridade e flexibilidade.

Analizemos Abaixo:

INDEX ON   ;
    TAG TO ;
    FOR    ;
    WHILE  ;
    NEXT | RECORD | REST | ALL ;
    UNIQUE ;
    ASCENDING | DESCENDING ;
    EVAL EVERY ;
    USECURRENT ;
    ADDITIVE ;
    CUSTOM ;
    NOOPTIMIZE

Maiores detalhes, no meu manual DBFCDX.PRG em Meu diretorio principal
*/