1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Travando Tabela Multiusuários

Discussão em 'Progress 4GL' iniciado por DFResmer, Setembro 12, 2011.

  1. DFResmer

    DFResmer Membro Participativo

    Olá Galera,
    Qual a melhor forma de resolver o problema de tabelas que ficam travando entre usuários? Quando tenho 2 usuários usando a mesma tabela ao mesmo tempo, algumas tabelas travam... estou usando em alguns casos quando mando gravar em alguma tabela o release tabela.
    Existe alguma forma de colocar algum comando na configuração da tabela para que sempre que grave libere-a em seguida?

    Att,

    Diogo
  2. DFResmer

    DFResmer Membro Participativo

    Outra coisa pessoal que nunca tinha me deparado, quando acontece de travar as tabelas, aparece uma mensagem de erro com o nome do usuário e tabela que está sendo usada, em seguida quando o usuário clica em cancelar, ele cai fora do sistema e os laçamentos feitos pelo usuário anteriormente desaparecem todos.

    Att,

    Diogo
  3. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    Isso acontece em programas específicos ou programas padrão Datasul?
  4. DFResmer

    DFResmer Membro Participativo

    São em programas específicos desenvovidos por outro programador que estou desde o início.

    Att,

    Diogo
  5. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    Cara no programa deve estar dando algum FOR EACH ou FIND sem a clausula NO-LOCK... ou pode vericar na query se ela existir se o NO-LOCK está nela tambem.... Qualquer coisa, posta os programas aqui para podermos lhe ajudar!!!!
  6. DFResmer

    DFResmer Membro Participativo

    Caramba, já fiz de tudo e ainda continua travando a tabela temimp.
    Coloquei no-lock em todas open query e for each, quando teve em alguns caso um assign em seguida coloquei um find last tabela no-lock no-erro, abaixo segue todo programa.

    Código:
    &ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r12 GUI
    &ANALYZE-RESUME
    /* Connected Databases 
              compro           PROGRESS
    */
    &Scoped-define WINDOW-NAME W-Win
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS W-Win 
    /*------------------------------------------------------------------------
    
      File: 
    
      Description: from cntnrwin.w - ADM SmartWindow Template
    
      Input Parameters:
          <none>
    
      Output Parameters:
          <none>
    
      History: 
              
    ------------------------------------------------------------------------*/
    /*          This .W file was created with the Progress UIB.             */
    /*----------------------------------------------------------------------*/
    
    /* Create an unnamed pool to store all the widgets created 
         by this procedure. This is a good default which assures
         that this procedure's triggers and internal procedures 
         will execute in this procedure's storage, and that proper
         cleanup will occur on deletion of the procedure. */
    
    CREATE WIDGET-POOL.
    
    /* ***************************  Definitions  ************************** */
    
    /* Parameters Definitions ---                                           */
         DEF VAR i-dtaini AS DATE.
         DEF VAR i-dtafin AS DATE.
         DEF VAR i-mes    AS CHAR.
         DEF VAR i-dia    AS INT.
         DEF VAR i-listar AS CHAR FORM 'X(110)'.
         DEF VAR i-ind AS INT.
         DEF VAR i-tot AS INT.
         
         
         
         /* excel */
       DEF VAR excelappl AS COM-HANDLE NO-UNDO. 
       DEF VAR ChWorkSheet AS COM-HANDLE NO-UNDO. 
       DEF VAR i-linha AS INTEGER NO-UNDO. 
       DEF var c-modelo AS CHAR NO-UNDO. 
       def var m-cont as int no-undo. 
    /*  fim excel */
    
    /* Local Variable Definitions ---                                       */
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK 
    
    /* ********************  Preprocessor Definitions  ******************** */
    
    &Scoped-define PROCEDURE-TYPE SmartWindow
    
    &Scoped-define ADM-CONTAINER WINDOW
    
    /* Name of first Frame and/or Browse and/or first Query                 */
    &Scoped-define FRAME-NAME fr-001
    &Scoped-define BROWSE-NAME br-001
    
    /* Internal Tables (found by Frame, Query & Browse Queries)             */
    &Scoped-define INTERNAL-TABLES tempim
    
    /* Definitions for BROWSE br-001                                        */
    &Scoped-define FIELDS-IN-QUERY-br-001 tempim.codigo tempim.codemp ~
    tempim.dias[1] tempim.dias[2] tempim.dias[3] tempim.dias[4] tempim.dias[5] ~
    tempim.dias[6] tempim.dias[7] tempim.dias[8] tempim.dias[9] tempim.dias[10] ~
    tempim.dias[11] tempim.dias[12] tempim.dias[13] tempim.dias[14] ~
    tempim.dias[15] tempim.dias[16] tempim.dias[17] tempim.dias[18] ~
    tempim.dias[19] tempim.dias[20] tempim.dias[21] tempim.dias[22] ~
    tempim.dias[23] tempim.dias[24] tempim.dias[25] tempim.dias[26] ~
    tempim.dias[27] tempim.dias[28] tempim.dias[29] tempim.dias[30] ~
    tempim.dias[31] 
    &Scoped-define ENABLED-FIELDS-IN-QUERY-br-001 
    &Scoped-define FIELD-PAIRS-IN-QUERY-br-001
    &Scoped-define OPEN-QUERY-br-001 OPEN QUERY br-001 FOR EACH tempim NO-LOCK.
    &Scoped-define TABLES-IN-QUERY-br-001 tempim
    &Scoped-define FIRST-TABLE-IN-QUERY-br-001 tempim
    
    
    /* Definitions for FRAME fr-001                                         */
    &Scoped-define OPEN-BROWSERS-IN-QUERY-fr-001 ~
        ~{&OPEN-QUERY-br-001}
    
    /* Standard List Definitions                                            */
    &Scoped-Define ENABLED-OBJECTS RECT-1 fi-ut bt-tras bt-frente fi-mes fi-ano ~
    fi-tipo bt-executa br-001 RECT-2 fi-nomusu fi-totras fi-codigo bt-imprime ~
    bt-sair fi-nomut 
    &Scoped-Define DISPLAYED-OBJECTS fi-ut fi-mes fi-ano fi-tipo fi-nomusu ~
    fi-totras fi-codigo fi-nomut 
    
    /* Custom List Definitions                                              */
    /* List-1,List-2,List-3,List-4,List-5,List-6                            */
    
    /* _UIB-PREPROCESSOR-BLOCK-END */
    &ANALYZE-RESUME
    
    
    
    /* ***********************  Control Definitions  ********************** */
    
    /* Define the widget handle for the window                              */
    DEFINE VAR W-Win AS WIDGET-HANDLE NO-UNDO.
    
    /* Menu Definitions                                                     */
    DEFINE SUB-MENU m_Arquivo 
           MENU-ITEM m_Sair         LABEL "Sair"          .
    
    DEFINE MENU MENU-BAR-W-Win MENUBAR
           SUB-MENU  m_Arquivo      LABEL "Arquivo"       
           MENU-ITEM m_Sobre        LABEL "Sobre"         .
    
    
    /* Definitions of the field level widgets                               */
    DEFINE BUTTON bt-executa 
         IMAGE-UP FILE "C:/Compro/Botões/Novos\executar":U
         LABEL "Executar" 
         SIZE 15 BY 1.14.
    
    DEFINE BUTTON bt-frente 
         LABEL ">" 
         SIZE 5 BY 1.
    
    DEFINE BUTTON bt-imprime 
         LABEL "Imprimir" 
         SIZE 21 BY 1.1.
    
    DEFINE BUTTON bt-sair 
         IMAGE-UP FILE "C:/Compro/Botões/Novos\sair":U
         LABEL "Sair" 
         SIZE 15 BY 1.14.
    
    DEFINE BUTTON bt-tras 
         LABEL "<" 
         SIZE 5 BY 1.
    
    DEFINE VARIABLE fi-mes AS CHARACTER FORMAT "X(20)":U 
         LABEL "Mes" 
         VIEW-AS COMBO-BOX INNER-LINES 12
         LIST-ITEMS "Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro" 
         SIZE 23 BY 1
         BGCOLOR 15  NO-UNDO.
    
    DEFINE VARIABLE fi-ano AS INTEGER FORMAT "->,>>>,>>9":U INITIAL 0 
         LABEL "Ano" 
         VIEW-AS FILL-IN 
         SIZE 15 BY 1.1
         BGCOLOR 15  NO-UNDO.
    
    DEFINE VARIABLE fi-codigo AS CHARACTER FORMAT "X(8)":U 
         LABEL "Veículo Selecionado" 
         VIEW-AS FILL-IN 
         SIZE 15 BY 1
         FONT 38 NO-UNDO.
    
    DEFINE VARIABLE fi-nomusu AS CHARACTER FORMAT "X(256)":U 
         LABEL "Usuário" 
         VIEW-AS FILL-IN 
         SIZE 22 BY 1 NO-UNDO.
    
    DEFINE VARIABLE fi-nomut AS CHARACTER FORMAT "X(256)":U 
          VIEW-AS TEXT 
         SIZE 43 BY 1.1
         BGCOLOR 8  NO-UNDO.
    
    DEFINE VARIABLE fi-totras AS INTEGER FORMAT "->,>>>,>>9":U INITIAL 0 
         LABEL "Total Veículos Rastreados" 
         VIEW-AS FILL-IN 
         SIZE 10 BY 1 NO-UNDO.
    
    DEFINE VARIABLE fi-ut AS INTEGER FORMAT "->,>>>,>>9":U INITIAL 0 
         LABEL "UT" 
         VIEW-AS FILL-IN 
         SIZE 7 BY 1.1
         BGCOLOR 15  NO-UNDO.
    
    DEFINE VARIABLE fi-tipo AS INTEGER INITIAL 1 
         VIEW-AS RADIO-SET HORIZONTAL
         RADIO-BUTTONS 
              "Atualizações", 1,
    "Importações", 2
         SIZE 38 BY .95 NO-UNDO.
    
    DEFINE RECTANGLE RECT-1
         EDGE-PIXELS 2 GRAPHIC-EDGE  
         SIZE 242 BY 1.67.
    
    DEFINE RECTANGLE RECT-2
         EDGE-PIXELS 2 GRAPHIC-EDGE  
         SIZE 242 BY 1.67.
    
    /* Query definitions                                                    */
    &ANALYZE-SUSPEND
    DEFINE QUERY br-001 FOR 
          tempim SCROLLING.
    &ANALYZE-RESUME
    
    /* Browse definitions                                                   */
    DEFINE BROWSE br-001
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS br-001 W-Win _STRUCTURED
      QUERY br-001 DISPLAY
          tempim.codigo COLUMN-LABEL "Codigo Veículos" FORMAT "X(15)"
          tempim.codemp FORMAT ">>>>9"
          tempim.dias[1] COLUMN-LABEL "01" FORMAT "X(4)"
          tempim.dias[2] COLUMN-LABEL "02" FORMAT "X(4)"
          tempim.dias[3] COLUMN-LABEL "03" FORMAT "X(4)"
          tempim.dias[4] COLUMN-LABEL "04" FORMAT "X(4)"
          tempim.dias[5] COLUMN-LABEL "05" FORMAT "X(4)"
          tempim.dias[6] COLUMN-LABEL "06" FORMAT "X(4)"
          tempim.dias[7] COLUMN-LABEL "07" FORMAT "X(4)"
          tempim.dias[8] COLUMN-LABEL "08" FORMAT "X(4)"
          tempim.dias[9] COLUMN-LABEL "09" FORMAT "X(4)"
          tempim.dias[10] COLUMN-LABEL "10" FORMAT "X(4)"
          tempim.dias[11] COLUMN-LABEL "11" FORMAT "X(4)"
          tempim.dias[12] COLUMN-LABEL "12" FORMAT "X(4)"
          tempim.dias[13] COLUMN-LABEL "13" FORMAT "X(4)"
          tempim.dias[14] COLUMN-LABEL "14" FORMAT "X(4)"
          tempim.dias[15] COLUMN-LABEL "15" FORMAT "X(4)"
          tempim.dias[16] COLUMN-LABEL "16" FORMAT "X(4)"
          tempim.dias[17] COLUMN-LABEL "17" FORMAT "X(4)"
          tempim.dias[18] COLUMN-LABEL "18" FORMAT "X(4)"
          tempim.dias[19] COLUMN-LABEL "19" FORMAT "X(4)"
          tempim.dias[20] COLUMN-LABEL "20" FORMAT "X(4)"
          tempim.dias[21] COLUMN-LABEL "21" FORMAT "X(4)"
          tempim.dias[22] COLUMN-LABEL "22" FORMAT "X(4)"
          tempim.dias[23] COLUMN-LABEL "23" FORMAT "X(4)"
          tempim.dias[24] COLUMN-LABEL "24" FORMAT "X(4)"
          tempim.dias[25] COLUMN-LABEL "25" FORMAT "X(4)"
          tempim.dias[26] COLUMN-LABEL "26" FORMAT "X(4)"
          tempim.dias[27] COLUMN-LABEL "27" FORMAT "X(4)"
          tempim.dias[28] COLUMN-LABEL "28" FORMAT "X(4)"
          tempim.dias[29] COLUMN-LABEL "29" FORMAT "X(4)"
          tempim.dias[30] COLUMN-LABEL "30" FORMAT "X(4)"
          tempim.dias[31] COLUMN-LABEL "31" FORMAT "X(4)"
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
        WITH NO-ROW-MARKERS SEPARATORS SIZE 240 BY 28.81
             BGCOLOR 15 FONT 6.
    
    
    /* ************************  Frame Definitions  *********************** */
    
    DEFINE FRAME fr-001
         fi-ut AT ROW 1.48 COL 9 COLON-ALIGNED
         bt-tras AT ROW 1.48 COL 61
         bt-frente AT ROW 1.48 COL 66
         fi-mes AT ROW 1.48 COL 81 COLON-ALIGNED
         fi-ano AT ROW 1.48 COL 115 COLON-ALIGNED
         fi-tipo AT ROW 1.48 COL 134 NO-LABEL
         bt-executa AT ROW 1.48 COL 176
         br-001 AT ROW 3.14 COL 3
         fi-nomusu AT ROW 32.19 COL 13 COLON-ALIGNED
         fi-totras AT ROW 32.19 COL 70 COLON-ALIGNED
         fi-codigo AT ROW 32.19 COL 106 COLON-ALIGNED
         bt-imprime AT ROW 32.19 COL 125
         bt-sair AT ROW 32.19 COL 227
         fi-nomut AT ROW 1.48 COL 16 COLON-ALIGNED NO-LABEL
         RECT-1 AT ROW 1.24 COL 3
         RECT-2 AT ROW 31.95 COL 3
        WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY 
             SIDE-LABELS NO-UNDERLINE THREE-D 
             AT COL 1 ROW 1
             SIZE 247.6 BY 33.91
             BGCOLOR 17 FONT 11.
    
    
    /* *********************** Procedure Settings ************************ */
    
    &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
    /* Settings for THIS-PROCEDURE
       Type: SmartWindow
       Allow: Basic,Browse,DB-Fields,Query,Smart,Window
     */
    &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
    
    /* *************************  Create Window  ************************** */
    
    &ANALYZE-SUSPEND _CREATE-WINDOW
    IF SESSION:DISPLAY-TYPE = "GUI":U THEN
      CREATE WINDOW W-Win ASSIGN
             HIDDEN             = YES
             TITLE              = "Mapa Controle Veículos Rastreados - p008"
             COLUMN             = 2
             ROW                = 1.14
             HEIGHT             = 33.1
             WIDTH              = 246
             MAX-HEIGHT         = 50
             MAX-WIDTH          = 320
             VIRTUAL-HEIGHT     = 50
             VIRTUAL-WIDTH      = 320
             RESIZE             = no
             SCROLL-BARS        = no
             STATUS-AREA        = yes
             BGCOLOR            = ?
             FGCOLOR            = ?
             THREE-D            = yes
             MESSAGE-AREA       = no
             SENSITIVE          = yes.
    ELSE {&WINDOW-NAME} = CURRENT-WINDOW.
    
    ASSIGN {&WINDOW-NAME}:MENUBAR    = MENU MENU-BAR-W-Win:HANDLE.
    /* END WINDOW DEFINITION                                                */
    &ANALYZE-RESUME
    
    
    /* ***************  Runtime Attributes and UIB Settings  ************** */
    
    &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
    /* SETTINGS FOR WINDOW W-Win
      VISIBLE,,RUN-PERSISTENT                                               */
    /* SETTINGS FOR FRAME fr-001
       NOT-VISIBLE                                                          */
    /* BROWSE-TAB br-001 bt-executa fr-001 */
    IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(W-Win)
    THEN W-Win:HIDDEN = yes.
    
    /* _RUN-TIME-ATTRIBUTES-END */
    &ANALYZE-RESUME
    
    
    /* Setting information for Queries and Browse Widgets fields            */
    
    &ANALYZE-SUSPEND _QUERY-BLOCK BROWSE br-001
    /* Query rebuild information for BROWSE br-001
         _TblList          = "compro.tempim"
         _FldNameList[1]   > compro.tempim.codigo
    "tempim.codigo" "Codigo Veículos" "X(15)" "character" ? ? ? ? ? ? no ?
         _FldNameList[2]   > compro.tempim.codemp
    "tempim.codemp" ? ">>>>9" "integer" ? ? ? ? ? ? no ?
         _FldNameList[3]   > compro.tempim.dias[1]
    "tempim.dias[1]" "01" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[4]   > compro.tempim.dias[2]
    "tempim.dias[2]" "02" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[5]   > compro.tempim.dias[3]
    "tempim.dias[3]" "03" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[6]   > compro.tempim.dias[4]
    "tempim.dias[4]" "04" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[7]   > compro.tempim.dias[5]
    "tempim.dias[5]" "05" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[8]   > compro.tempim.dias[6]
    "tempim.dias[6]" "06" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[9]   > compro.tempim.dias[7]
    "tempim.dias[7]" "07" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[10]   > compro.tempim.dias[8]
    "tempim.dias[8]" "08" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[11]   > compro.tempim.dias[9]
    "tempim.dias[9]" "09" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[12]   > compro.tempim.dias[10]
    "tempim.dias[10]" "10" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[13]   > compro.tempim.dias[11]
    "tempim.dias[11]" "11" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[14]   > compro.tempim.dias[12]
    "tempim.dias[12]" "12" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[15]   > compro.tempim.dias[13]
    "tempim.dias[13]" "13" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[16]   > compro.tempim.dias[14]
    "tempim.dias[14]" "14" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[17]   > compro.tempim.dias[15]
    "tempim.dias[15]" "15" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[18]   > compro.tempim.dias[16]
    "tempim.dias[16]" "16" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[19]   > compro.tempim.dias[17]
    "tempim.dias[17]" "17" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[20]   > compro.tempim.dias[18]
    "tempim.dias[18]" "18" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[21]   > compro.tempim.dias[19]
    "tempim.dias[19]" "19" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[22]   > compro.tempim.dias[20]
    "tempim.dias[20]" "20" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[23]   > compro.tempim.dias[21]
    "tempim.dias[21]" "21" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[24]   > compro.tempim.dias[22]
    "tempim.dias[22]" "22" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[25]   > compro.tempim.dias[23]
    "tempim.dias[23]" "23" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[26]   > compro.tempim.dias[24]
    "tempim.dias[24]" "24" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[27]   > compro.tempim.dias[25]
    "tempim.dias[25]" "25" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[28]   > compro.tempim.dias[26]
    "tempim.dias[26]" "26" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[29]   > compro.tempim.dias[27]
    "tempim.dias[27]" "27" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[30]   > compro.tempim.dias[28]
    "tempim.dias[28]" "28" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[31]   > compro.tempim.dias[29]
    "tempim.dias[29]" "29" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[32]   > compro.tempim.dias[30]
    "tempim.dias[30]" "30" "X(4)" "character" ? ? ? ? ? ? no ?
         _FldNameList[33]   > compro.tempim.dias[31]
    "tempim.dias[31]" "31" "X(4)" "character" ? ? ? ? ? ? no ?
         _Query            is OPENED
    */  /* BROWSE br-001 */
    &ANALYZE-RESUME
    
     
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB W-Win 
    /* ************************* Included-Libraries *********************** */
    
    {src/adm/method/containr.i}
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    
    
    /* ************************  Control Triggers  ************************ */
    
    &Scoped-define SELF-NAME W-Win
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL W-Win W-Win
    ON END-ERROR OF W-Win /* Mapa Controle Veículos Rastreados - p008 */
    OR ENDKEY OF {&WINDOW-NAME} ANYWHERE DO:
      /* This case occurs when the user presses the "Esc" key.
         In a persistently run window, just ignore this.  If we did not, the
         application would exit. */
      IF THIS-PROCEDURE:PERSISTENT THEN RETURN NO-APPLY.
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL W-Win W-Win
    ON WINDOW-CLOSE OF W-Win /* Mapa Controle Veículos Rastreados - p008 */
    DO:
      /* This ADM code must be left here in order for the SmartWindow
         and its descendents to terminate properly on exit. */
      APPLY "CLOSE":U TO THIS-PROCEDURE.
      RETURN NO-APPLY.
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &Scoped-define BROWSE-NAME br-001
    &Scoped-define SELF-NAME br-001
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br-001 W-Win
    ON MOUSE-SELECT-CLICK OF br-001 IN FRAME fr-001
    DO:
      fi-codigo = TEMPIM.codigo.
      DISPLAY fi-codigo WITH FRAME fr-001.
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br-001 W-Win
    ON ROW-DISPLAY OF br-001 IN FRAME fr-001
    DO:
    
       {G:\desenv\frotas\cor_imp.i}.
           
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &Scoped-define SELF-NAME bt-executa
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL bt-executa W-Win
    ON CHOOSE OF bt-executa IN FRAME fr-001 /* Executar */
    DO:
        RUN display.
        RELEASE TEMIMP.
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &Scoped-define SELF-NAME bt-frente
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL bt-frente W-Win
    ON CHOOSE OF bt-frente IN FRAME fr-001 /* > */
    DO:
      FOR EACH TABUTS WHERE TABUTS.codut > INPUT FRAME fr-001 fi-ut BY TABUTS.codut desc.
         fi-ut = TABUTS.codut.
         fi-nomut = TABUTS.nomut.
      end.
         DISPLAY fi-ut fi-nomut WITH FRAME fr-001.
      
     IF INPUT FRAME fr-001 fi-ut <> 0 THEN DO:
       OPEN QUERY br-001
       FOR EACH TEMPIM WHERE TEMPIM.mes = INPUT FRAME fr-001 fi-mes AND
                             TEMPIM.ano = INPUT FRAME fr-001 fi-ano AND
                             TEMPIM.codemp = INPUT FRAME fr-001 fi-ut AND
                             TEMPIM.nomusu = INPUT FRAME fr-001 fi-nomusu NO-LOCK
                          BY TEMPIM.codemp. 
      END.                   
    
     IF INPUT FRAME fr-001 fi-ut = 0 THEN DO:
       OPEN QUERY br-001
       FOR EACH TEMPIM WHERE TEMPIM.mes = INPUT FRAME fr-001 fi-mes AND
                             TEMPIM.ano = INPUT FRAME fr-001 fi-ano AND
                             TEMPIM.nomusu = INPUT FRAME fr-001 fi-nomusu NO-LOCK
                          BY TEMPIM.codemp. 
      END.  
      
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &Scoped-define SELF-NAME bt-imprime
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL bt-imprime W-Win
    ON CHOOSE OF bt-imprime IN FRAME fr-001 /* Imprimir */
    DO:
      RUN excel.
    
    
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &Scoped-define SELF-NAME bt-sair
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL bt-sair W-Win
    ON CHOOSE OF bt-sair IN FRAME fr-001 /* Sair */
    DO:
      APPLY 'CLOSE' TO THIS-PROCEDURE.
      RETURN NO-APPLY.
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &Scoped-define SELF-NAME bt-tras
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL bt-tras W-Win
    ON CHOOSE OF bt-tras IN FRAME fr-001 /* < */
    DO:
      FOR EACH TABUTS WHERE TABUTS.codut < INPUT FRAME fr-001 fi-ut BY TABUTS.codut.
         fi-ut = TABUTS.codut.
         fi-nomut = TABUTS.nomut.     
      end.
         DISPLAY fi-ut fi-nomut WITH FRAME fr-001.  
         
     IF INPUT FRAME fr-001 fi-ut <> 0 THEN DO:
       OPEN QUERY br-001
       FOR EACH TEMPIM WHERE TEMPIM.mes = INPUT FRAME fr-001 fi-mes AND
                             TEMPIM.ano = INPUT FRAME fr-001 fi-ano AND
                             TEMPIM.codemp = INPUT FRAME fr-001 fi-ut AND
                             TEMPIM.nomusu = INPUT FRAME fr-001 fi-nomusu NO-LOCK
                          BY TEMPIM.codemp. 
      END.                   
    
     IF INPUT FRAME fr-001 fi-ut = 0 THEN DO:
       OPEN QUERY br-001
       FOR EACH TEMPIM WHERE TEMPIM.mes = INPUT FRAME fr-001 fi-mes AND
                             TEMPIM.ano = INPUT FRAME fr-001 fi-ano AND
                             TEMPIM.nomusu = INPUT FRAME fr-001 fi-nomusu NO-LOCK
                          BY TEMPIM.codemp. 
      END.     
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &Scoped-define SELF-NAME fi-ano
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL fi-ano W-Win
    ON RETURN OF fi-ano IN FRAME fr-001 /* Ano */
    DO:
      APPLY 'ENTRY' TO bt-executa.
      RETURN NO-APPLY.
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &Scoped-define SELF-NAME fi-mes
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL fi-mes W-Win
    ON VALUE-CHANGED OF fi-mes IN FRAME fr-001 /* Mes */
    DO:
      APPLY 'ENTRY' TO fi-ano.
      RETURN NO-APPLY.
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &Scoped-define SELF-NAME fi-ut
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL fi-ut W-Win
    ON ENTRY OF fi-ut IN FRAME fr-001 /* UT */
    DO:
      
        INPUT FROM C:\COMPRO\TEMP\USUARIO.DAT.
    repeat:
       IMPORT UNFORMATTED fi-nomusu NO-ERROR.
    end.
    
      DISPLAY fi-nomusu WITH FRAME fr-001.
     
      RUN mes.
    
       OPEN QUERY br-001
       FOR EACH TEMPIM WHERE TEMPIM.mes = INPUT FRAME fr-001 fi-mes AND
                             TEMPIM.ano = 1990 AND
                             TEMPIM.codemp = INPUT FRAME fr-001 fi-ut AND
                             TEMPIM.nomusu = INPUT FRAME fr-001 fi-nomusu NO-LOCK
                          BY TEMPIM.codemp. 
    
    
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL fi-ut W-Win
    ON RETURN OF fi-ut IN FRAME fr-001 /* UT */
    DO:
    
     IF INPUT FRAME fr-001 fi-ut <> 0 THEN DO:
       OPEN QUERY br-001
       FOR EACH TEMPIM WHERE TEMPIM.mes = INPUT FRAME fr-001 fi-mes AND
                             TEMPIM.ano = INPUT FRAME fr-001 fi-ano AND
                             TEMPIM.codemp = INPUT FRAME fr-001 fi-ut AND
                             TEMPIM.nomusu = INPUT FRAME fr-001 fi-nomusu NO-LOCK
                          BY TEMPIM.codemp. 
      END.                   
    
     IF INPUT FRAME fr-001 fi-ut = 0 THEN DO:
       OPEN QUERY br-001
       FOR EACH TEMPIM WHERE TEMPIM.mes = INPUT FRAME fr-001 fi-mes AND
                             TEMPIM.ano = INPUT FRAME fr-001 fi-ano AND
                             TEMPIM.nomusu = INPUT FRAME fr-001 fi-nomusu NO-LOCK
                          BY TEMPIM.codemp. 
      END.                   
    
       FIND TABUTS WHERE TABUTS.codut = INPUT FRAME fr-001 fi-ut NO-LOCK NO-ERROR.
           IF AVAILABLE TABUTS THEN
              fi-nomut = TABUTS.nomut.
           
           IF NOT AVAILABLE TABUTS THEN
              fi-nomut = 'UT Não Existe'.
              
          DISPLAY fi-nomut WITH FRAME fr-001.   
          
      
      APPLY 'ENTRY' TO fi-mes.
      RETURN NO-APPLY.
        
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &Scoped-define SELF-NAME m_Sair
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL m_Sair W-Win
    ON CHOOSE OF MENU-ITEM m_Sair /* Sair */
    DO:
        APPLY 'CLOSE' TO THIS-PROCEDURE.
      RETURN NO-APPLY.
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &Scoped-define SELF-NAME m_Sobre
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL m_Sobre W-Win
    ON CHOOSE OF MENU-ITEM m_Sobre /* Sobre */
    DO:
      MESSAGE 'MAPA DE IMPORTAÇÕES' SKIP(1)
              'ULTIMA ATUALIZAÇÃO 13/09/2011 08:30'.
              
    END.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &UNDEFINE SELF-NAME
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK W-Win 
    
    
    /* ***************************  Main Block  *************************** */
    
    procedure WinExec external "kernel32.dll": 
    define input parameter programname as character. 
    define input parameter presentation as short. 
    end proced.
    
    /* Include custom  Main Block code for SmartWindows. */
    {src/adm/template/windowmn.i}
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    /* **********************  Internal Procedures  *********************** */
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects W-Win _ADM-CREATE-OBJECTS
    PROCEDURE adm-create-objects :
    /*------------------------------------------------------------------------------
      Purpose:     Create handles for all SmartObjects used in this procedure.
                   After SmartObjects are initialized, then SmartLinks are added.
      Parameters:  <none>
    ------------------------------------------------------------------------------*/
    
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-row-available W-Win _ADM-ROW-AVAILABLE
    PROCEDURE adm-row-available :
    /*------------------------------------------------------------------------------
      Purpose:     Dispatched to this procedure when the Record-
                   Source has a new row available.  This procedure
                   tries to get the new row (or foriegn keys) from
                   the Record-Source and process it.
      Parameters:  <none>
    ------------------------------------------------------------------------------*/
    
      /* Define variables needed by this internal procedure.             */
      {src/adm/template/row-head.i}
    
      /* Process the newly available records (i.e. display fields,
         open queries, and/or pass records on to any RECORD-TARGETS).    */
      {src/adm/template/row-end.i}
    
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI W-Win _DEFAULT-DISABLE
    PROCEDURE disable_UI :
    /*------------------------------------------------------------------------------
      Purpose:     DISABLE the User Interface
      Parameters:  <none>
      Notes:       Here we clean-up the user-interface by deleting
                   dynamic widgets we have created and/or hide 
                   frames.  This procedure is usually called when
                   we are ready to "clean-up" after running.
    ------------------------------------------------------------------------------*/
      /* Delete the WINDOW we created */
      IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(W-Win)
      THEN DELETE WIDGET W-Win.
      IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE display W-Win 
    PROCEDURE display :
    /*------------------------------------------------------------------------------
      Purpose:     
      Parameters:  <none>
      Notes:       
    ------------------------------------------------------------------------------*/
       fi-totras = 0.
    
       FOR EACH TEMPIM WHERE TEMPIM.nomusu = INPUT FRAME fr-001 fi-nomusu and
                             TEMPIM.ano    = INPUT FRAME fr-001 fi-ano AND
                             TEMPIM.mes    = INPUT FRAME fr-001 fi-mes.
           DELETE TEMPIM.
       END.
       FIND LAST TEMPIM NO-LOCK NO-ERROR.
    
       FOR EACH TABVEI WHERE TABVEI.ativo = YES and
                             TABVEI.rastreado = YES no-lock.
               FIND TEMPIM WHERE TEMPIM.codigo = TABVEI.codigo AND
                                 TEMPIM.mes    = INPUT FRAME fr-001 fi-mes AND
                                 TEMPIM.ano    = INPUT FRAME fr-001 fi-ano AND
                                 TEMPIM.nomusu = INPUT FRAME fr-001 fi-nomusu NO-ERROR.
                     IF NOT AVAILABLE TEMPIM THEN DO:
                        CREATE TEMPIM.
                           ASSIGN TEMPIM.codigo = TABVEI.codigo
                                  TEMPIM.mes    = INPUT FRAME fr-001 fi-mes
                                  TEMPIM.ano    = INPUT FRAME fr-001 fi-ano
                                  TEMPIM.nomusu = INPUT FRAME fr-001 fi-nomusu
                                  TEMPIM.codemp = TABVEI.empresa.
                     END.                                      
             fi-totras = fi-totras + 1.
       END.
       
       FIND LAST Tempim NO-LOCK NO-ERROR.
       RUN periodo.   
    
    
       FOR EACH TABCAL WHERE TABCAL.dtaemi >= i-dtaini AND
                             TABCAL.dtaemi <= i-dtafin NO-LOCK BY tabcal.dtaemi.
           i-dia = INT(SUBSTRING(STRING(TABCAL.dtaemi, '99/99/9999'),1,2)).                  
           FIND TEMPIM WHERE TEMPIM.codigo  = TABCAL.codigo AND
                             TEMPIM.mes     = INPUT FRAME fr-001 fi-mes AND
                             TEMPIM.ano     = INPUT FRAME fr-001 fi-ano AND
                             TEMPIM.nomusu  = INPUT FRAME fr-001 fi-nomusu NO-ERROR.                  
                  IF AVAILABLE TEMPIM THEN DO:
                     IF INPUT FRAME fr-001 fi-tipo = 1 THEN 
                      ASSIGN TEMPIM.dias[i-dia] = TABCAL.calibri.
    
                     IF INPUT FRAME fr-001 fi-tipo = 2 THEN 
                      ASSIGN TEMPIM.dias[i-dia] = TABCAL.impo.
                      
                  END.           
                             
       END.
       
     FIND LAST tempim NO-LOCK NO-ERROR.
    
     IF INPUT FRAME fr-001 fi-ut = 0 THEN DO:
       OPEN QUERY br-001
       FOR EACH TEMPIM WHERE TEMPIM.mes = INPUT FRAME fr-001 fi-mes AND
                             TEMPIM.ano = INPUT FRAME fr-001 fi-ano AND
                             TEMPIM.nomusu = INPUT FRAME fr-001 fi-nomusu NO-LOCK
                          BY TEMPIM.codemp. 
      END. 
      
     IF INPUT FRAME fr-001 fi-ut <> 0 THEN DO:
       OPEN QUERY br-001
       FOR EACH TEMPIM WHERE TEMPIM.mes = INPUT FRAME fr-001 fi-mes AND
                             TEMPIM.ano = INPUT FRAME fr-001 fi-ano AND
                             TEMPIM.codemp = INPUT FRAME fr-001 fi-ut AND
                             TEMPIM.nomusu = INPUT FRAME fr-001 fi-nomusu NO-LOCK
                          BY TEMPIM.codemp. 
     END.             
     
       FIND LAST tempim NO-LOCK NO-ERROR.
     DISPLAY fi-totras WITH FRAME fr-001.  
     
         
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI W-Win _DEFAULT-ENABLE
    PROCEDURE enable_UI :
    /*------------------------------------------------------------------------------
      Purpose:     ENABLE the User Interface
      Parameters:  <none>
      Notes:       Here we display/view/enable the widgets in the
                   user-interface.  In addition, OPEN all queries
                   associated with each FRAME and BROWSE.
                   These statements here are based on the "Other 
                   Settings" section of the widget Property Sheets.
    ------------------------------------------------------------------------------*/
      DISPLAY fi-ut fi-mes fi-ano fi-tipo fi-nomusu fi-totras fi-codigo fi-nomut 
          WITH FRAME fr-001 IN WINDOW W-Win.
      ENABLE RECT-1 fi-ut bt-tras bt-frente fi-mes fi-ano fi-tipo bt-executa br-001 
             RECT-2 fi-nomusu fi-totras fi-codigo bt-imprime bt-sair fi-nomut 
          WITH FRAME fr-001 IN WINDOW W-Win.
      {&OPEN-BROWSERS-IN-QUERY-fr-001}
      VIEW W-Win.
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE excel W-Win 
    PROCEDURE excel :
    /*------------------------------------------------------------------------------
      Purpose:     
      Parameters:  <none>
      Notes:       
    ------------------------------------------------------------------------------*/
      i-tot = 3.
    
     /***********limpa memória da tabela******************/
     
      IF INPUT FRAME fr-001 fi-ut <> 0 THEN DO:
       OPEN QUERY br-001
       FOR EACH TEMPIM WHERE TEMPIM.mes = INPUT FRAME fr-001 fi-mes AND
                             TEMPIM.ano = INPUT FRAME fr-001 fi-ano AND
                             TEMPIM.codemp = INPUT FRAME fr-001 fi-ut AND
                             TEMPIM.nomusu = INPUT FRAME fr-001 fi-nomusu NO-LOCK. 
      END.                   
    
     IF INPUT FRAME fr-001 fi-ut = 0 THEN DO:
       OPEN QUERY br-001
       FOR EACH TEMPIM WHERE TEMPIM.mes = INPUT FRAME fr-001 fi-mes AND
                             TEMPIM.ano = INPUT FRAME fr-001 fi-ano AND
                             TEMPIM.nomusu = INPUT FRAME fr-001 fi-nomusu NO-LOCK. 
      END.  
      /******************************************************/
    
    
    FILE-INFO:FILE-NAME = "excel ome-modelo.xlt". 
    c-modelo = FILE-INFO:FULL-PATHNAME. 
    
    i-linha = 1. 
    
    CREATE "Excel.Application" excelappl. 
    ASSIGN ChWorkSheet = excelappl:Workbooks:ADD(c-modelo). /* Mostra a planilha Excel na tela */ 
    
      /***LINHA 01*********/
         excelappl:range("A" + STRING(i-linha)):VALUE = 'CONTROLE DE IMPORTAÇÕES CDE'.
         excelappl:range("A1:J1"):SELECT. /*mesclar*/            
         excelappl:SELECTION:merge. /*mesclar*/
         excelappl:range("A1"):FONT:BOLD  = TRUE.  /* negrito */
    
         excelappl:range("K" + STRING(i-linha)):VALUE = 'MES: ' + 
                                                        STRING(INPUT FRAME fr-001 fi-mes, 'X(12)') + 
                                                        ' ANO: ' +
                                                        STRING(INPUT FRAME fr-001 fi-ano, 'Z,ZZ9').
                                                        
         excelappl:range("K1:AG1"):SELECT. /*mesclar*/            
         excelappl:SELECTION:merge. /*mesclar*/
         excelappl:range("K1"):FONT:BOLD  = TRUE.  /* negrito */
         excelappl:Rows("1:1"):RowHeight = 30.  /* 1 linha */
         excelappl:range("A1:AG1"):interior:colorindex = 15. /* 10 é o código da cor. */   
         i-linha = i-linha + 1. 
    
         excelappl:range("C" + STRING(i-linha)):VALUE = 'DIAS'.
         excelappl:range("C2:AG2"):SELECT. /*mesclar*/            
         excelappl:SELECTION:merge. /*mesclar*/
         excelappl:range("C2"):FONT:BOLD  = TRUE.  /* negrito */
         i-linha = i-linha + 1. 
         excelappl:range("A3:AG3"):FONT:BOLD  = TRUE.  /* negrito */
         
      /*******FIM LINHA 1***************/
    
    
          excelappl:range("A" + STRING(i-linha)):VALUE = 'VEÍCULO'.
          excelappl:range("B" + STRING(i-linha)):VALUE = 'UT'.
          excelappl:range("C" + STRING(i-linha)):VALUE = 1.
          excelappl:range("D" + STRING(i-linha)):VALUE = 2.
          excelappl:range("E" + STRING(i-linha)):VALUE = 3.
          excelappl:range("F" + STRING(i-linha)):VALUE = 4.
          excelappl:range("G" + STRING(i-linha)):VALUE = 5.
          excelappl:range("H" + STRING(i-linha)):VALUE = 6.
          excelappl:range("I" + STRING(i-linha)):VALUE = 7.
          excelappl:range("J" + STRING(i-linha)):VALUE = 8.
          excelappl:range("K" + STRING(i-linha)):VALUE = 9.
          excelappl:range("L" + STRING(i-linha)):VALUE = 10.
          excelappl:range("M" + STRING(i-linha)):VALUE = 11.
          excelappl:range("N" + STRING(i-linha)):VALUE = 12.
          excelappl:range("O" + STRING(i-linha)):VALUE = 13.
          excelappl:range("P" + STRING(i-linha)):VALUE = 14.
          excelappl:range("Q" + STRING(i-linha)):VALUE = 15.
          excelappl:range("R" + STRING(i-linha)):VALUE = 16.
          excelappl:range("S" + STRING(i-linha)):VALUE = 17.
          excelappl:range("T" + STRING(i-linha)):VALUE = 18.
          excelappl:range("U" + STRING(i-linha)):VALUE = 19.
          excelappl:range("V" + STRING(i-linha)):VALUE = 20.
          excelappl:range("W" + STRING(i-linha)):VALUE = 21.
          excelappl:range("X" + STRING(i-linha)):VALUE = 22.
          excelappl:range("Y" + STRING(i-linha)):VALUE = 23.
          excelappl:range("Z" + STRING(i-linha)):VALUE = 24.
          excelappl:range("AA" + STRING(i-linha)):VALUE = 25.
          excelappl:range("AB" + STRING(i-linha)):VALUE = 26.
          excelappl:range("AC" + STRING(i-linha)):VALUE = 27.
          excelappl:range("AD" + STRING(i-linha)):VALUE = 28.
          excelappl:range("AE" + STRING(i-linha)):VALUE = 29.
          excelappl:range("AF" + STRING(i-linha)):VALUE = 30.
          excelappl:range("AG" + STRING(i-linha)):VALUE = 31.
          excelappl:range("A2:AG2"):FONT:BOLD  = TRUE.  /* negrito */      
          i-linha = i-linha + 1.
    
    
     IF INPUT FRAME fr-001 fi-ut <> 0 THEN DO:
       FOR EACH TEMPIM WHERE TEMPIM.mes = INPUT FRAME fr-001 fi-mes AND
                             TEMPIM.ano = INPUT FRAME fr-001 fi-ano AND
                             TEMPIM.codemp = INPUT FRAME fr-001 fi-ut AND
                             TEMPIM.nomusu = INPUT FRAME fr-001 fi-nomusu NO-LOCK
                          BY TEMPIM.codemp. 
          RUN imprime_linha.                     
       END.         
     END.   
    
     IF INPUT FRAME fr-001 fi-ut = 0 THEN DO:
        FOR EACH TEMPIM WHERE TEMPIM.mes = INPUT FRAME fr-001 fi-mes AND
                              TEMPIM.ano = INPUT FRAME fr-001 fi-ano AND
                              TEMPIM.nomusu = INPUT FRAME fr-001 fi-nomusu NO-LOCK
                              BY TEMPIM.codemp. 
           RUN imprime_linha.                  
        END.                  
      END.  
    
    
     i-ind = 3.
     DO i-ind = 1 to i-tot.
       excelappl:range("A" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("B" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("C" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("D" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("E" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("F" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("G" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("H" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("I" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("J" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("K" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("L" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("M" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("N" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("O" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("P" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("Q" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("R" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("S" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("T" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("U" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("V" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("W" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("X" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("Y" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("Z" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("AA" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("AB" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("AC" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("AD" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("AE" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("AF" + STRING(i-ind)):borderaround(1,,48).
       excelappl:range("AG" + STRING(i-ind)):borderaround(1,,48).
       
     END.
     
     excelappl:range("A" + STRING(i-linha)):VALUE = 'M = NÃO IMPORTADO, LANÇAR CDE MANUAL NO SISTEMA GLOBAL / 1, 2 OU 3 = IMPORTADO TURNO 1, 2 OU 3 (VERIFICAR)'.  
     excelappl:range("A" + STRING(i-linha) + ":AG" + STRING(i-linha)):SELECT. /*mesclar*/            
     excelappl:SELECTION:merge. /*mesclar*/ 
     excelappl:range("A" + STRING(i-linha) + ":AG" + STRING(i-linha)):borderaround(1,,48).
    
     excelappl:range("C2:AG2"):HorizontalAlignment = 3. /*alinhamento coluna*/
     excelappl:range("A3:A300"):HorizontalAlignment = 2. /*alinhamento coluna*/
     
     
      excelappl:range("A2:A3"):SELECT. /*mesclar*/            
      excelappl:SELECTION:merge. /*mesclar*/
    
      excelappl:range("B2:B3"):SELECT. /*mesclar*/            
      excelappl:SELECTION:merge. /*mesclar*/ 
    
     /*TAMANHO DA COLUNA*/
      excelappl:COLUMNS("A:A"):ColumnWidth = 11.43. /* 1 coluna */
      excelappl:COLUMNS("B:B"):ColumnWidth = 4.43. /* 1 coluna */
      excelappl:COLUMNS("C:AG"):ColumnWidth = 2.29. /* 1 coluna */
    
     excelappl:ActiveWindow:DisplayGridlines = False.  /*linha de grade*/
    
    /* excelappl:ActiveWorkbook:PrintOut (,,m-numvias,,,,YES). /* Imprime todas as planilhas da PASTA */ */ 
    /* excelappl:ActiveWindow:Close(NO). /* Fecha a planilha sem exibir pergunta de SALVAR */ */ 
    
    excelappl:Range("A1"):select. 
    excelappl:Visible = yes. /* Mostra a planilha Excel na tela */ 
    RELEASE OBJECT excelappl. /* Destroi objeto criado liberando a mem¢ria */ 
    RELEASE OBJECT ChWorkSheet. /* Destroi objeto criado liberando a mem¢ria */
      
    
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE imprime_linha W-Win 
    PROCEDURE imprime_linha :
    /*------------------------------------------------------------------------------
      Purpose:     
      Parameters:  <none>
      Notes:       
    ------------------------------------------------------------------------------*/
          excelappl:range("A" + STRING(i-linha)):VALUE = TEMPIM.codigo.
          excelappl:range("B" + STRING(i-linha)):VALUE = TEMPIM.codemp.
          excelappl:range("C" + STRING(i-linha)):VALUE = TEMPIM.dias[01].
          IF TEMPIM.dias[01] = ' M' THEN excelappl:range("C" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("D" + STRING(i-linha)):VALUE = TEMPIM.dias[02].
          IF TEMPIM.dias[02] = ' M' THEN excelappl:range("D" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("E" + STRING(i-linha)):VALUE = TEMPIM.dias[03].
          IF TEMPIM.dias[03] = ' M' THEN excelappl:range("E" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("F" + STRING(i-linha)):VALUE = TEMPIM.dias[04].
          IF TEMPIM.dias[04] = ' M' THEN excelappl:range("F" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("G" + STRING(i-linha)):VALUE = TEMPIM.dias[05].
          IF TEMPIM.dias[05] = ' M' THEN excelappl:range("G" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("H" + STRING(i-linha)):VALUE = TEMPIM.dias[06].
          IF TEMPIM.dias[06] = ' M' THEN excelappl:range("H" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("I" + STRING(i-linha)):VALUE = TEMPIM.dias[07].
          IF TEMPIM.dias[07] = ' M' THEN excelappl:range("I" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("J" + STRING(i-linha)):VALUE = TEMPIM.dias[08].
          IF TEMPIM.dias[08] = ' M' THEN excelappl:range("J" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("K" + STRING(i-linha)):VALUE = TEMPIM.dias[09].
          IF TEMPIM.dias[09] = ' M' THEN excelappl:range("K" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("L" + STRING(i-linha)):VALUE = TEMPIM.dias[10].
          IF TEMPIM.dias[10] = ' M' THEN excelappl:range("L" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("M" + STRING(i-linha)):VALUE = TEMPIM.dias[11].
          IF TEMPIM.dias[11] = ' M' THEN excelappl:range("M" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("N" + STRING(i-linha)):VALUE = TEMPIM.dias[12].
          IF TEMPIM.dias[12] = ' M' THEN excelappl:range("N" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("O" + STRING(i-linha)):VALUE = TEMPIM.dias[13].
          IF TEMPIM.dias[13] = ' M' THEN excelappl:range("O" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("P" + STRING(i-linha)):VALUE = TEMPIM.dias[14].
          IF TEMPIM.dias[14] = ' M' THEN excelappl:range("P" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("Q" + STRING(i-linha)):VALUE = TEMPIM.dias[15].
          IF TEMPIM.dias[15] = ' M' THEN excelappl:range("Q" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("R" + STRING(i-linha)):VALUE = TEMPIM.dias[16].
          IF TEMPIM.dias[16] = ' M' THEN excelappl:range("R" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("S" + STRING(i-linha)):VALUE = TEMPIM.dias[17].
          IF TEMPIM.dias[17] = ' M' THEN excelappl:range("S" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("T" + STRING(i-linha)):VALUE = TEMPIM.dias[18].
          IF TEMPIM.dias[18] = ' M' THEN excelappl:range("T" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("U" + STRING(i-linha)):VALUE = TEMPIM.dias[19].
          IF TEMPIM.dias[19] = ' M' THEN excelappl:range("U" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("V" + STRING(i-linha)):VALUE = TEMPIM.dias[20].
          IF TEMPIM.dias[20] = ' M' THEN excelappl:range("V" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("W" + STRING(i-linha)):VALUE = TEMPIM.dias[21].
          IF TEMPIM.dias[21] = ' M' THEN excelappl:range("W" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("X" + STRING(i-linha)):VALUE = TEMPIM.dias[22].
          IF TEMPIM.dias[22] = ' M' THEN excelappl:range("X" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("Y" + STRING(i-linha)):VALUE = TEMPIM.dias[23].
          IF TEMPIM.dias[23] = ' M' THEN excelappl:range("Y" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("Z" + STRING(i-linha)):VALUE = TEMPIM.dias[24].
          IF TEMPIM.dias[24] = ' M' THEN excelappl:range("Z" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("AA" + STRING(i-linha)):VALUE = TEMPIM.dias[25].
          IF TEMPIM.dias[25] = ' M' THEN excelappl:range("AA" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("AB" + STRING(i-linha)):VALUE = TEMPIM.dias[26].
          IF TEMPIM.dias[26] = ' M' THEN excelappl:range("AB" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("AC" + STRING(i-linha)):VALUE = TEMPIM.dias[27].
          IF TEMPIM.dias[27] = ' M' THEN excelappl:range("AC" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("AD" + STRING(i-linha)):VALUE = TEMPIM.dias[28].
          IF TEMPIM.dias[28] = ' M' THEN excelappl:range("AD" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("AE" + STRING(i-linha)):VALUE = TEMPIM.dias[29].
          IF TEMPIM.dias[29] = ' M' THEN excelappl:range("AE" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("AF" + STRING(i-linha)):VALUE = TEMPIM.dias[30].
          IF TEMPIM.dias[30] = ' M' THEN excelappl:range("AF" + STRING(i-linha)):interior:colorindex = 09. 
          excelappl:range("AG" + STRING(i-linha)):VALUE = TEMPIM.dias[31].
          IF TEMPIM.dias[31] = ' M' THEN excelappl:range("AG" + STRING(i-linha)):interior:colorindex = 09. 
          i-linha = i-linha + 1.
          i-tot   = i-tot + 1.
    
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE local-exit W-Win 
    PROCEDURE local-exit :
    /* -----------------------------------------------------------
      Purpose:  Starts an "exit" by APPLYing CLOSE event, which starts "destroy".
      Parameters:  <none>
      Notes:    If activated, should APPLY CLOSE, *not* dispatch adm-exit.   
    -------------------------------------------------------------*/
       APPLY "CLOSE":U TO THIS-PROCEDURE.
       
       RETURN.
           
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE mes W-Win 
    PROCEDURE mes :
    /*------------------------------------------------------------------------------
      Purpose:     
      Parameters:  <none>
      Notes:       
    ------------------------------------------------------------------------------*/
        IF SUBSTRING(STRING(TODAY, '99/99/9999'),4,2) = '01' THEN
           fi-mes = 'Janeiro'.
    
        IF SUBSTRING(STRING(TODAY, '99/99/9999'),4,2) = '02' THEN
           fi-mes = 'fevereiro'.
    
        IF SUBSTRING(STRING(TODAY, '99/99/9999'),4,2) = '03' THEN
           fi-mes = 'Março'.
    
        IF SUBSTRING(STRING(TODAY, '99/99/9999'),4,2) = '04' THEN
           fi-mes = 'Abril'.
    
        IF SUBSTRING(STRING(TODAY, '99/99/9999'),4,2) = '05' THEN
           fi-mes = 'Maio'.
    
        IF SUBSTRING(STRING(TODAY, '99/99/9999'),4,2) = '06' THEN
           fi-mes = 'Junho'.
    
        IF SUBSTRING(STRING(TODAY, '99/99/9999'),4,2) = '07' THEN
           fi-mes = 'julho'.
    
        IF SUBSTRING(STRING(TODAY, '99/99/9999'),4,2) = '08' THEN
           fi-mes = 'Agosto'.
    
        IF SUBSTRING(STRING(TODAY, '99/99/9999'),4,2) = '09' THEN
           fi-mes = 'Setembro'.
    
        IF SUBSTRING(STRING(TODAY, '99/99/9999'),4,2) = '10' THEN
           fi-mes = 'Outubro'.
    
        IF SUBSTRING(STRING(TODAY, '99/99/9999'),4,2) = '11' THEN
           fi-mes = 'Novembro'.
    
        IF SUBSTRING(STRING(TODAY, '99/99/9999'),4,2) = '12' THEN
           fi-mes = 'Dezembro'.
    
         fi-ano = int(SUBSTRING(STRING(TODAY, '99/99/9999'),7,4)).
      
         DISPLAY fi-mes fi-ano WITH FRAME fr-001.
         
          
           
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE periodo W-Win 
    PROCEDURE periodo :
    /*------------------------------------------------------------------------------
      Purpose:     
      Parameters:  <none>
      Notes:       
    ------------------------------------------------------------------------------*/
       IF INPUT FRAME fr-001 fi-mes = 'Janeiro' THEN 
           i-mes = '01'.
    
       IF INPUT FRAME fr-001 fi-mes = 'Fevereiro' THEN 
           i-mes = '02'.
    
    
       IF INPUT FRAME fr-001 fi-mes = 'Março' THEN 
           i-mes = '03'.
    
       IF INPUT FRAME fr-001 fi-mes = 'Abril' THEN 
           i-mes = '04'.
    
       IF INPUT FRAME fr-001 fi-mes = 'Maio' THEN 
           i-mes = '05'.
    
       IF INPUT FRAME fr-001 fi-mes = 'junho' THEN 
           i-mes = '06'.
    
       IF INPUT FRAME fr-001 fi-mes = 'Julho' THEN 
           i-mes = '07'.
    
       IF INPUT FRAME fr-001 fi-mes = 'Agosto' THEN 
           i-mes = '08'.
    
       IF INPUT FRAME fr-001 fi-mes = 'Setembro' THEN 
           i-mes = '09'.
    
       IF INPUT FRAME fr-001 fi-mes = 'Outubro' THEN 
           i-mes = '10'.
    
       IF INPUT FRAME fr-001 fi-mes = 'Novembro' THEN 
           i-mes = '11'.
    
       IF INPUT FRAME fr-001 fi-mes = 'Dezembro' THEN 
           i-mes = '12'.
        
        
       i-dtaini = DATE('01/' + 
                       STRING(i-mes, 'X(02)') + '/' +
                       STRING(INPUT FRAME fr-001 fi-ano, '9999')).
                  
       i-dtafin = i-dtaini + 31.           
    
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-records W-Win _ADM-SEND-RECORDS
    PROCEDURE send-records :
    /*------------------------------------------------------------------------------
      Purpose:     Send record ROWID's for all tables used by
                   this file.
      Parameters:  see template/snd-head.i
    ------------------------------------------------------------------------------*/
    
      /* Define variables needed by this internal procedure.               */
      {src/adm/template/snd-head.i}
    
      /* For each requested table, put it's ROWID in the output list.      */
      {src/adm/template/snd-list.i "tempim"}
    
      /* Deal with any unexpected table requests before closing.           */
      {src/adm/template/snd-end.i}
    
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE state-changed W-Win 
    PROCEDURE state-changed :
    /* -----------------------------------------------------------
      Purpose:     
      Parameters:  <none>
      Notes:       
    -------------------------------------------------------------*/
      DEFINE INPUT PARAMETER p-issuer-hdl AS HANDLE NO-UNDO.
      DEFINE INPUT PARAMETER p-state AS CHARACTER NO-UNDO.
    END PROCEDURE.
    
    /* _UIB-CODE-BLOCK-END */
    &ANALYZE-RESUME
    
    
    

Compartilhe esta Página