Jump to content
Fivewin Brasil

rubensma

Membros
  • Posts

    455
  • Joined

  • Last visited

  • Days Won

    7

Posts posted by rubensma

  1. Citar

    Rubens boa tarde, tudo bem?

    Farei melhor, vou postar os videos que me ajudaram a entender o GIT e a passar a utiliza-lo. Mas antes é importante separar as coisas:

    VSCODE - É um editor de fonte

    GIT - Controle de versionamento de fontes

    GITHUB - Site na internet onde vc armazena o repositorio GIT (funciona como se fosse um backup na nuvem dos seus fontes, com todo controle de historio de alterações dele)

    Então primeiro você deve passar a utilizar o VSCODE, esquece GIT neste primeiro momento. Passa a editar seus fontes pelo VSCODE, posteriormente configure para que a compilação seja por ele e depois de ter se adaptado ao VSCODE, inclusive compilando por ele aí comece a pensar no GIT.

    Entao seguindo a ordem:

    VSCODE - Neste site tem tudo que vc precisa pra passar a usar o VSCODE. Se tiver problema com ingles mande o google fazer a tradução que da pra entender tranquilamente.

    https://harbour.wiki/index.asp?page=PublicArticles&mode=show&id=190401174818&sig=6893630672

     

    Sobre o GIT e GITHUB veja essa playlist que foi a mehor que vi sobre o assunto:

    Boa noite

    Obrigado Emotta por compartilhar

     

  2. Boa tarde.

    Estava procurando também outra IDE para os projetos, vou sair da xDev que é fantástica como disse, muita gratidão mesmo ao Vailton.

    Grato por compartilhar os links, vou ver o que consigo. Quem tiver algumas dicas, por favor postar aqui.

    Abraços

  3. Boa tarde.

    Resgatei esse tópico antigo somente para registrar que hoje tive esse erro E0032 porque no projeto novo que criei, que copiei de outro programa tinha um arquivo xxx.c que estava sendo direcionado a uma pasta \obj que não exestia.

    Foi só criar a pasta que voltou ao normal.

    Procurei pelo erro e só achei esse tópico. Fica a dica ai.

    Obrigado

  4. Olá, boa tarde.

    Uso dessa forma para importar planilhas xls, e vai muito bem sem muita demora, se quiser tentar tem dois modelos ai

    #include "fivewin.ch"
    #include "Fileio.ch"
    #include "Inkey.ch"
    #define SW_NORMAL   1
    #define SW_RESTORE  9


    //--------------------------------------------------------------------
    // Importar a planilha do excel - cadastro de funcionários
    function importacad()

    cMod := "ARQUIVOS DE APOIO"
    cSer := "Entrada no módulo de importação dos cadastros de funcionários"
    registra( cMod , cSer )

    MsgMeter( {|oMeter,oText|LerXLScadastro(1,oMeter,oText)}," ", "Importando arquivo do Excel" )

    return nil

    **************************************************************************
    * Montagem de arquivos de apoio - importação do cadastro direto do excel *
    **************************************************************************
    Function LerXLScadastro(vTot,oMeter,oText)
    Local vEsc := .f.  // teste se foi teclado esc
    if !msgNoYes("Será importado do Excel o arquivo cadastro de funcionários!"+;
                 chr(13)+chr(13)+"Deseja continuar?","..: Atenção :..")
       Return nil 
    Endif
    cArq1 := cGetFile32("cadast*.X*","Escolha o arquivo a importar")
    If !File(cArq1) .or. ! "cadastro" $ cArq1
       msginfo("Arquivo inválido ou não disponível."+chr(13)+;
                "Verifique o nome do arquivo !","Informação")
       Return nil 
    Endif   
    oExcel:=TOleAuto():New("Excel.Application")
    oBook := oExcel:Workbooks:Open(cArq1)
    oHoja := oExcel:Get( "ActiveSheet" )
    nTotRowCount := oHoja:UsedRange:Rows:Count()  // TOTAL DE LINHAS DO ARQUIVO
    dbSelectArea( "cad" )    // zerar o arquivo base
    cad->( dbzap() )         // arquivo foi aberto com uso exclusivo 
    oMeter:nTotal := nTotRowCount - 2  // descontar o cabeçalho 
    nCount := 0
    FOR Q = 3 TO nTotRowCount   // começa na linha 
         cad->( dbAppend() )
        cad->( rlock() )
        cad->filial    := iif(oHoja:Cells( Q, 1 ):Value == nil,"",oHoja:Cells( Q, 1 ):Value)
        cad->matricula := iif(oHoja:Cells( Q, 2 ):Value == nil,0,oHoja:Cells( Q, 2 ):Value)
        cad->nome      := iif(oHoja:Cells( Q, 3 ):Value == nil,"",oHoja:Cells( Q, 3 ):Value)
        cad->datadm    := iif(oHoja:Cells( Q, 4 ):Value == nil,ctod("  /  /  "),oHoja:Cells( Q, 4 ):Value) //oHoja:Cells( Q,  4 ):Value
        cad->situacao  := iif(oHoja:Cells( Q, 5 ):Value == nil,"",oHoja:Cells( Q, 5 ):Value)
        cad->ccusto    := iif(oHoja:Cells( Q, 6 ):Value == nil,"",oHoja:Cells( Q, 6 ):Value)
        cad->tipo      := iif(oHoja:Cells( Q, 7 ):Value == nil,"",oHoja:Cells( Q, 7 ):Value)
        cad->gerencia  := iif(oHoja:Cells( Q, 8 ):Value == nil,"",oHoja:Cells( Q, 8 ):Value)
        cad->area      := iif(oHoja:Cells( Q, 9 ):Value == nil,"",oHoja:Cells( Q, 9 ):Value)
        cad->(Dbunlock() )   
         oMeter:Set(++nCount)
         oText:SetText("Importando cadastro de funcionários!"+chr(13)+;
                         "Processando Registro : "+str(nCount,6)+"/"+str(oMeter:nTotal,6) )            
        if lastkey() = 27
           vEsc := .t.
           exit
        endif
    NEXT
    oExcel:WorkBooks:Close()
    oExcel:Application:Quit()
    RELEASE oHoja
    RELEASE oExcel
    if vEsc  
       msginfo("Importação interrompida pelo usuário")
    else    
       msginfo("Arquivo importado com sucesso!")
    endif   
    cad->( dbGoTop() )
    browse()
    Return nil

    Outro, com campos numéricos


    ***************************************************************************
    * Montagem de arquivos de apoio - importação da tabela de código do excel *
    ***************************************************************************
    Function LerXLStabela(vTot,oMeter,oText)
    Local vEsc := .f.  // teste se foi teclado esc
    if ! msgNoYes("Será importado do Excel o arquivo tabela de códigos!"+;
                 chr(13)+chr(13)+"Deseja continuar?","..: Atenção :..")
       Return nil 
    Endif
    cArq2 := cGetFile32("Tabela de códigos|Tabe*.XL*|","Escolha o arquivo a importar")
    If ! File(cArq2) .or. ! "Tabela" $ cArq2
       msginfo("Arquivo inválido ou não disponível."+chr(13)+;
                "Tente novamente !","Informação")
       Return nil 
    Endif   
    oExcel:=TOleAuto():New("Excel.Application")
    oBook := oExcel:Workbooks:Open(cArq2)
    oHoja := oExcel:Get( "ActiveSheet" )
    nTotRowCount := oHoja:UsedRange:Rows:Count()  // TOTAL DE LINHAS DO ARQUIVO
    dbSelectArea( "tab" )    // zerar o arquivo base
    tab->( dbzap() )         // arquivo foi aberto com uso exclusivo 
    oMeter:nTotal := nTotRowCount - 1  // descontar o cabeçalho 
    *::: Formato de Columnas
    //oHoja:Columns( 22 ):Set("NumberFormat","@") // formatar a coluna para texto
    //oHoja:Columns( 23 ):Set("NumberFormat","@") // formatar a coluna para texto
    nCount := 0
    FOR Q = 2 TO nTotRowCount   // começa na linha 
         tab->( dbAppend() )
        tab->( rlock() )
        tab->cod  := iif(oHoja:Cells( Q, 1 ):Value == nil, 0,oHoja:Cells( Q,  1 ):Value)
        tab->desc := iif(oHoja:Cells( Q, 2 ):Value == nil,"",oHoja:Cells( Q,  2 ):Value)
        tab->in   := iif(oHoja:Cells( Q, 3 ):Value == nil,"",oHoja:Cells( Q,  3 ):Value)
        tab->ir   := iif(oHoja:Cells( Q, 4 ):Value == nil,"",oHoja:Cells( Q,  4 ):Value) 
        tab->fg   := iif(oHoja:Cells( Q, 5 ):Value == nil,"",oHoja:Cells( Q,  5 ):Value) 
        tab->br   := iif(oHoja:Cells( Q, 6 ):Value == nil,"",oHoja:Cells( Q,  6 ):Value)
        tab->de   := iif(oHoja:Cells( Q, 7 ):Value == nil,"",oHoja:Cells( Q,  7 ):Value) 
        tab->lq   := iif(oHoja:Cells( Q, 8 ):Value == nil,"",oHoja:Cells( Q,  8 ):Value) 
        tab->es   := iif(oHoja:Cells( Q, 9 ):Value == nil,"",oHoja:Cells( Q,  9 ):Value)
        tab->dp   := iif(oHoja:Cells( Q,10 ):Value == nil,"",oHoja:Cells( Q, 10 ):Value)
        tab->ra   := iif(oHoja:Cells( Q,11 ):Value == nil, 0,oHoja:Cells( Q, 11 ):Value)
        tab->un   := iif(oHoja:Cells( Q,12 ):Value == nil,"",oHoja:Cells( Q, 12 ):Value)
        tab->di   := iif(oHoja:Cells( Q,13 ):Value == nil,"",oHoja:Cells( Q, 13 ):Value)
        tab->vig  := iif(oHoja:Cells( Q,14 ):Value == nil,"",oHoja:Cells( Q, 14 ):Value)
        tab->un1  := iif(oHoja:Cells( Q,15 ):Value == nil,"",oHoja:Cells( Q, 15 ):Value)
        tab->un2  := iif(oHoja:Cells( Q,16 ):Value == nil,"",oHoja:Cells( Q, 16 ):Value)
        tab->fx   := iif(oHoja:Cells( Q,17 ):Value == nil,"",oHoja:Cells( Q, 17 ):Value) 
        tab->val_ := iif(oHoja:Cells( Q,18 ):Value == nil,"",oHoja:Cells( Q, 18 ):Value) 
        tab->dup  := iif(oHoja:Cells( Q,19 ):Value == nil,"",oHoja:Cells( Q, 19 ):Value)
        tab->rend := iif(oHoja:Cells( Q,20 ):Value == nil, 0,oHoja:Cells( Q, 20 ):Value)
        tab->t1   := iif(oHoja:Cells( Q,21 ):Value == nil, 0,oHoja:Cells( Q, 21 ):Value)
        tab->cont := iif(oHoja:Cells( Q,22 ):Value == nil, 0,oHoja:Cells( Q, 22 ):Value)
        tab->t2   := iif(oHoja:Cells( Q,23 ):Value == nil, 0,oHoja:Cells( Q, 23 ):Value)
        if ValType( oHoja:Cells( Q,24 ):Value ) = "N"  // se for campo numérico
           tab->deb  := iif(oHoja:Cells( Q,24 ):Value == nil,0,str(oHoja:Cells( Q, 24 ):Value))
        else
            tab->deb  := iif(oHoja:Cells( Q,24 ):Value == nil,"",oHoja:Cells( Q, 24 ):Value)
        endif
         if ValType( oHoja:Cells( Q,25 ):Value ) = "N"  // se for campo numérico   
           tab->cre  := iif(oHoja:Cells( Q,25 ):Value == nil,0,str(oHoja:Cells( Q, 25 ):Value))
        else   
           tab->cre  := iif(oHoja:Cells( Q,25 ):Value == nil,"",oHoja:Cells( Q, 25 ):Value)
        endif   
        tab->dg   := iif(oHoja:Cells( Q,26 ):Value == nil, 0,oHoja:Cells( Q, 26 ):Value)
        tab->(Dbunlock() )   
         oMeter:Set(++nCount)
         oText:SetText("Importando tabela de códigos!"+chr(13)+;
                         "Processando Registro : "+str(nCount,6)+"/"+str(oMeter:nTotal,6) )            
        if lastkey() = 27
           vEsc := .t.
           exit
        endif
    NEXT

    oExcel:WorkBooks:Close()
    oExcel:Application:Quit()
    RELEASE oHoja
    RELEASE oExcel
    if vEsc  
       msginfo("Importação interrompida pelo usuário")
    else    
       msginfo("Arquivo importado com sucesso!")
    endif   
    tab->( dbGoTop() )
    //browse()
    Return nil

     

     

  5. Bom-dia!

    Simplesmente parou de funcionar enviar dados para o Excel no mesmo Windows 10 que estava funcionando, acho que depois de uma atualização

    Segue parte do PRG e Log de erro

     

    function gerarlote(vTot,oMeter,oText,nOption,numlote)
    LOCAL oExcel, oHoja

    dbSelectArea( "con" )             // seleciona arquivo contábil

    con->( dbGoTop() )

    vNomenum := "Lote_"+"&numlote."+".txt"    // usando macro precisa por ponto

    if nOption = 2                    // foi selecionado arquivo texto
       copy to &vNomenum delimited    // separado por virgula
       WinExec("Notepad &vNomenum",1) // 1 = diretorio corrente
       return nil
    endif
       
    nRow := 1                         // reinicia a linha da planilha
    nCount := 0                       // Zerar o total do meter
    oExcel := TOleAuto():New( "Excel.Application" )      <======== AQUI O ERRO
    oExcel:WorkBooks:Add()
    oHoja := oExcel:Get( "ActiveSheet" )
    *::: Seleciona a guia BOLETINS para preenchimento
    //oExcel:Sheets("Planilha1"):Name := "Boletins"   // nomear a 1ª guia
    //oExcel:Sheets("Boletins"):Select()          // selecionar a guia nomeada
    oMeter:cCaption := "Lote dos Boletins"
    oHoja := oExcel:Get( "ActiveSheet" )

    FOR nCol := 1 TO FCOUNT()  // percorrer todas as colunas
        oHoja:Cells( nRow, nCol ):Value := FieldName( nCol )
    //      linhadegrade(oHoja,nRow,nCol) 
    NEXT

     

    Error.log

    Application
    ===========
       Path and name: C:\Boletim\boletim.EXE (32 bits)
       Size: 4,255,744 bytes
       Compiler version: xHarbour 1.2.3 Intl. (SimpLex) (Build 20180715)
       FiveWin  version: FWH 18.05
       C compiler version: Borland/Embarcadero C++ 7.3 (32-bit)
       Windows version: 6.2, Build 9200 

       Time from start: 0 hours 2 mins 45 secs 
       Error occurred at: 02/02/2020, 22:31:06
       Error description: Error TOleAuto/65535  : TOLEAUTO:NEW
       Args:
         [   1] = C   Excel.Application

    Stack Calls
    ===========
       Called from:  => THROW( 0 )
       Called from: source\rtl\win32ole.prg => TOLEAUTO:NEW( 0 )
       Called from: C:\Boletim\excel_bol.prg => GERARLOTE( 584 )
       Called from: C:\Boletim\excel_bol.prg => (b)ENVIA_BOLETIM( 556 )
       Called from: C:\Boletim\excel_bol.prg => (b)MSGMETER( 216 )
       Called from: .\source\classes\DIALOG.PRG => (b)TDIALOG:TDIALOG( 94 )
       Called from:  => TDIALOG:DISPLAY( 0 )
       Called from: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT( 1037 )
       Called from:  => DIALOGBOXINDIRECT( 0 )
       Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 287 )
       Called from: C:\Boletim\excel_bol.prg => MSGMETER( 219 )
       Called from: C:\Boletim\excel_bol.prg => ENVIA_BOLETIM( 556 )
       Called from: C:\Boletim\excel_bol.prg => (b)MONTARLOTE( 285 )
       Called from: .\source\classes\BUTTON.PRG => TBUTTON:CLICK( 179 )
       Called from: .\source\classes\CONTROL.PRG => TBUTTON:HANDLEEVENT( 1686 )
       Called from: .\source\classes\WINDOW.PRG => _FWH( 3451 )
       Called from:  => SENDMESSAGE( 0 )
       Called from: .\source\classes\DIALOG.PRG => TDIALOG:COMMAND( 409 )
       Called from:  => TWINDOW:HANDLEEVENT( 0 )
       Called from: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT( 1050 )
       Called from:  => DIALOGBOX( 0 )
       Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 287 )
       Called from: C:\Boletim\excel_bol.prg => MONTARLOTE( 290 )
       Called from: C:\Boletim\BOLETIM.PRG => (b)MAIN( 186 )
       Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 693 )
       Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 970 )
       Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1722 )
       Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 1953 )
       Called from: .\source\classes\WINDOW.PRG => _FWH( 3451 )
       Called from:  => WINRUN( 0 )
       Called from: .\source\classes\WINDOW.PRG => TWINDOW:ACTIVATE( 1052 )
       Called from: C:\Boletim\BOLETIM.PRG => MAIN( 267 )

    System
    ======
       CPU type: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz 2195 Mhz
       Hardware memory: 8095 megs

       Free System resources: 90 %
            GDI    resources: 90 %
            User   resources: 90 %

       Windows total applications running: 6
          1 ,                                                                                                     
          2 , C:\Boletim\boletim.EXE                                                                              
          3 , C:\WINDOWS\System32\shcore.dll                                                                      
          4 , C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.17763.914_none_4d607d8 
          5 DDE Server Window, C:\WINDOWS\System32\OLE32.DLL                                                                       
          6 G, C:\WINDOWS\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.17763.914_none_7e4b706e762fa5c 

    Variables in use
    ================
       Procedure     Type   Value
       ==========================
       THROW
         Param   1:    O    Class: ERROR
         Local   1:    U    
         Local   2:    U    
       TOLEAUTO:NEW
         Param   1:    C    "Excel.Application"
         Local   1:    U    
         Local   2:    U    
         Local   3:    O    Class: TOLEAUTO
         Local   4:    O    Class: ERROR
         Local   5:    C    "C"
       GERARLOTE
         Param   1:    N    1
         Param   2:    O    Class: TMETER
         Param   3:    O    Class: TSAY
         Param   4:    N    1
         Param   5:    C    "      "
         Local   1:    U    
         Local   2:    U    
       (b)ENVIA_BOLETIM
         Param   1:    O    Class: TMETER
         Param   2:    O    Class: TSAY
         Param   3:    O    Class: TDIALOG
         Param   4:    L    .F.
         Param   5:    O    Class: TBUTTON
       (b)MSGMETER
         Param   1:    U    
       (b)TDIALOG:TDIALOG
         Param   1:    O    Class: TDIALOG
       TDIALOG:DISPLAY
       TDIALOG:HANDLEEVENT
         Param   1:    N    15
         Param   2:    N    0
         Param   3:    N    0
         Local   1:    O    Class: TDIALOG
       DIALOGBOXINDIRECT
         Param   1:    N    4194304
         Param   2:    C    "€ È€     &ÿ·ÿŸ E     E x p o r t a n d o   o   a r q u i v o   c o n t a b i l      P     , v S T A T I C              P     # —  w T M E T E R         P    > 4 !  x B U T T O N   & C a n c e l a     "
         Param   3:    N    855676
         Param   4:    O    Class: TDIALOG
       TDIALOG:ACTIVATE
         Param   1:    U    
         Param   2:    U    
         Param   3:    U    
         Param   4:    L    .T.
         Param   5:    B    {|| ... }
         Param   6:    L    .T.
         Param   7:    U    
         Param   8:    U    
         Param   9:    U    
         Param  10:    U    
         Param  11:    U    
         Local   1:    O    Class: TDIALOG
         Local   2:    N    855676
         Local   3:    U    
         Local   4:    U    
         Local   5:    U    
         Local   6:    O    Class: TDIALOG
       MSGMETER
         Param   1:    B    {|| ... }
         Param   2:    C    " "
         Param   3:    C    "Exportando o arquivo contabil"
         Local   1:    O    Class: TDIALOG
         Local   2:    O    Class: TMETER
         Local   3:    O    Class: TSAY
         Local   4:    O    Class: TBUTTON
         Local   5:    O    Class: TFONT
         Local   6:    L    .F.
         Local   7:    L    .F.
         Local   8:    N    0
       ENVIA_BOLETIM
       (b)MONTARLOTE
         Param   1:    O    Class: TBUTTON
       TBUTTON:CLICK
         Local   1:    O    Class: TBUTTON
       TBUTTON:HANDLEEVENT
         Param   1:    N    2048
         Param   2:    N    0
         Param   3:    N    0
         Local   1:    O    Class: TBUTTON
         Local   2:    U    
       _FWH
         Param   1:    N    0
         Param   2:    N    2048
         Param   3:    N    0
         Param   4:    N    0
         Param   5:    N    28
         Local   1:    O    Class: TBUTTON
       SENDMESSAGE
         Param   1:    N    3736930
         Param   2:    N    2048
         Param   3:    N    0
         Param   4:    N    0
       TDIALOG:COMMAND
         Param   1:    N    302
         Param   2:    N    3736930
         Local   1:    O    Class: TDIALOG
         Local   2:    O    Class: TBUTTON
         Local   3:    N    0
         Local   4:    N    302
         Local   5:    N    3736930
         Local   6:    U    
       TWINDOW:HANDLEEVENT
         Param   1:    N    273
         Param   2:    N    302
         Param   3:    N    3736930
       TDIALOG:HANDLEEVENT
         Param   1:    N    273
         Param   2:    N    302
         Param   3:    N    3736930
         Local   1:    O    Class: TDIALOG
       DIALOGBOX
         Param   1:    N    4194304
         Param   2:    C    "montalote"
         Param   3:    N    5244362
         Param   4:    O    Class: TDIALOG
       TDIALOG:ACTIVATE
         Param   1:    U    
         Param   2:    U    
         Param   3:    U    
         Param   4:    L    .T.
         Param   5:    U    
         Param   6:    L    .T.
         Param   7:    U    
         Param   8:    U    
         Param   9:    U    
         Param  10:    U    
         Param  11:    U    
         Local   1:    O    Class: TDIALOG
         Local   2:    N    5244362
         Local   3:    U    
         Local   4:    U    
         Local   5:    U    
         Local   6:    O    Class: TDIALOG
       MONTARLOTE
         Local   1:    O    Class: TDIALOG
         Local   2:    U    
         Local   3:    O    Class: TBUTTON
         Local   4:    U    
         Local   5:    U    
         Local   6:    U    
         Local   7:    U    
         Local   8:    U    
         Local   9:    U    
       (b)MAIN
         Param   1:    O    Class: TBTNBMP
       TBTNBMP:CLICK
         Local   1:    O    Class: TBTNBMP
       TBTNBMP:LBUTTONUP
         Param   1:    N    36
         Param   2:    N    37
         Param   3:    O    Class: TBTNBMP
         Local   1:    U    
         Local   2:    L    .T.
         Local   3:    N    0
       TCONTROL:HANDLEEVENT
         Param   1:    N    514
         Param   2:    N    0
         Param   3:    N    2359333
         Local   1:    O    Class: TBTNBMP
         Local   2:    U    
       TBTNBMP:HANDLEEVENT
         Param   1:    N    514
         Param   2:    N    0
         Param   3:    N    2359333
         Local   1:    O    Class: TBTNBMP
       _FWH
         Param   1:    N    2359333
         Param   2:    N    514
         Param   3:    N    0
         Param   4:    N    2359333
         Param   5:    N    7
         Local   1:    O    Class: TBTNBMP
       WINRUN
         Param   1:    N    5244362
       TWINDOW:ACTIVATE
         Param   1:    C    "MAXIMIZED"
         Param   2:    U    
         Param   3:    U    
         Param   4:    U    
         Param   5:    U    
         Param   6:    U    
         Param   7:    U    
         Param   8:    B    {|| ... }
         Param   9:    U    
         Param  10:    U    
         Param  11:    U    
         Param  12:    U    
         Param  13:    U    
         Param  14:    U    
         Param  15:    U    
         Param  16:    U    
         Param  17:    U    
         Param  18:    U    
         Param  19:    U    
         Param  20:    L    .F.
         Local   1:    O    Class: TWINDOW
         Local   2:    U    
         Local   3:    U    
       MAIN

    Linked RDDs
    ===========
       DBF
       DBFFPT
       DBFBLOB
       DBFCDX
       DBFNTX

    DataBases in use
    ================

      1:    SENHAS                             RddName: DBFCDX
         ==============================
         RecNo    RecCount    BOF   EOF
              1            7      .F.   .F.

         Indexes in use                        TagName
            => upper(senhas->usuari)              USUARI

         Relations in use

      2:    SIS                                RddName: DBFCDX
         ==============================
         RecNo    RecCount    BOF   EOF
           2808         2808      .F.   .F.

         Indexes in use                        TagName

         Relations in use

      3:    DIA                                RddName: DBFCDX
         ==============================
         RecNo    RecCount    BOF   EOF
              1            0      .T.   .T.

         Indexes in use                        TagName

         Relations in use

      4:    NUM                                RddName: DBFCDX
         ==============================
         RecNo    RecCount    BOF   EOF
              1         1194      .F.   .F.

         Indexes in use                        TagName

         Relations in use

      5:    LTS                                RddName: DBFCDX
         ==============================
         RecNo    RecCount    BOF   EOF
            186          186      .F.   .F.

         Indexes in use                        TagName

         Relations in use

      6:    FUN                                RddName: DBFCDX
         ==============================
         RecNo    RecCount    BOF   EOF
            580         1998      .F.   .F.

         Indexes in use                        TagName
            => fun->matricula                     FUN

         Relations in use

      7:    CAD                                RddName: DBFCDX
         ==============================
         RecNo    RecCount    BOF   EOF
              1         1996      .F.   .F.

         Indexes in use                        TagName
            => cad->matricula                     CAD

         Relations in use

      8:    TAB                                RddName: DBFCDX
         ==============================
         RecNo    RecCount    BOF   EOF
              1          763      .F.   .F.

         Indexes in use                        TagName
            => tab->cod                           TAB

         Relations in use

      9:    ERR                                RddName: DBFCDX
         ==============================
         RecNo    RecCount    BOF   EOF
              1            0      .T.   .T.

         Indexes in use                        TagName

         Relations in use

     10:    BIN                                RddName: DBFCDX
         ==============================
         RecNo    RecCount    BOF   EOF
           3319         3318      .F.   .T.

         Indexes in use                        TagName

         Relations in use

     11:    LHO                                RddName: DBFCDX
         ==============================
         RecNo    RecCount    BOF   EOF
              1           16      .F.   .F.

         Indexes in use                        TagName

         Relations in use

     12: => CON                                RddName: DBFCDX
         ==============================
         RecNo    RecCount    BOF   EOF
              1            8      .F.   .F.

         Indexes in use                        TagName
            => con->histor                        HISTOR

         Relations in use

     13:    PAR                                RddName: DBFCDX
         ==============================
         RecNo    RecCount    BOF   EOF
              1            0      .T.   .T.

         Indexes in use                        TagName

         Relations in use

     14:    IND                                RddName: DBFCDX
         ==============================
         RecNo    RecCount    BOF   EOF
              1            5      .F.   .F.

         Indexes in use                        TagName

         Relations in use

     15:    MEM                                RddName: DBFCDX
         ==============================
         RecNo    RecCount    BOF   EOF
              1            1      .F.   .F.

         Indexes in use                        TagName

         Relations in use

     16:    CACF                               RddName: DBFCDX
         ==============================
         RecNo    RecCount    BOF   EOF
              1            9      .F.   .F.

         Indexes in use                        TagName

         Relations in use

    Classes in use:
    ===============
         1 ERROR
         2 HASHENTRY
         3 HBCLASS
         4 HBOBJECT
         5 TINI
         6 TFONT
         7 TWINDOW
         8 TCONTROL
         9 TICON
        10 TBRUSH
        11 TMENU
        12 TREG32
        13 TMENUITEM
        14 TBAR
        15 TRECT
        16 TBTNBMP
        17 TMSGBAR
        18 TMSGITEM
        19 TTIMER
        20 TBITMAP
        21 TDIALOG
        22 TGET
        23 GET
        24 TCLIPGET
        25 TBUTTON
        26 TWBROWSE
        27 TSCROLLBAR
        28 TRADMENU
        29 TRADIO
        30 TCHECKBOX
        31 TSAY
        32 TMETER
        33 TOLEAUTO
        34 TSTRUCT

    Memory Analysis
    ===============
          1200 Static variables

       Dynamic memory consume:
          Actual  Value:          0 bytes
          Highest Value:          0 bytes

     

  6.  

    oExcel := TOleAuto():New( "Excel.Application" )
    oExcel:Workbooks:Open(cXlsArquivo)
    oFolha := oExcel:Get( "ActiveSheet" )
    nTotRow:= oFolha:UsedRange:Rows:Count()

    FOR n := 6 TO nTotRow

       dDATA := oExcel:Cells(n,2):Value
       ? dDATA
       ? VALTYPE(dDATA)
     

    Nesse seu exemplo, não seria:

    dDATA := oFolha:oExcel:Cells(n,2):Value

  7. Ola,

    Veja se ajuda, faço assim

     

          FOR nCol := 1 TO FCOUNT()
              if ValType( FieldGet( nCol ) ) = "D"  // se for campo data converte p/string
                 oHoja:Cells( nRow, nCol ):Value := dtoc(FieldGet( nCol ))
              else 
                 if ValType( FieldGet( nCol ) ) = "N"  // se for campo numérico
                    oHoja:Cells( nRow, 7    ):NumberFormat = "###.##0,00" // FORMATAR numerico  
                 else   
                    oHoja:Cells( nRow, nCol ):NumberFormat = "@" // FORMATAR TEXTO  
                 endif   
                 oHoja:Cells( nRow, nCol ):Value := FieldGet( nCol )   // OUTRO FORMATO
             endif  
          NEXT
     

  8. Quer uma solução bem arcaica, fiz pra quebrar o galho e ainda está lá. Coloquei botões falsos  no meio, sem nada, dá até vergonha de postar isso, mas

        DEFINE BUTTON oBtn3 FILE "source.BMP" OF oBar ;
            ACTION imprimir()                          ; // relboletim.prg
            TOOLTIP "Imprimir os boletins."            ;
            MESSAGE oemtoansi("Imprimir os boletins gravados") ;
            GROUP ;
            NOBORDER

        DEFINE BUTTON oBtn11 FILE "" OF oBar ;
            ACTION nil ; //calend()                     ;
            TOOLTIP ""                    ;
            MESSAGE ""              ;
            NOBORDER

        DEFINE BUTTON oBtn12 FILE "" OF oBar ;
            ACTION nil ; //calend()                     ;
            TOOLTIP ""                    ;
            MESSAGE ""              ;
            NOBORDER

        DEFINE BUTTON oBtn4 FILE "exit.bmp" OF oBar ;
            ACTION msgYesNo("Deseja sair do programa ?","Informacao", sair(oWnd) , oWnd:End(.t.) ) ; //oWnd:End(.t.)
            TOOLTIP "Finalizar" ;
            MESSAGE "Finalizar o aplicativo"  ;
            NOBORDER

  9. O Google liberou um novo conjunto de recursos de detecção de objetos inteligentes para a comunidade de código aberto como parte do desenvolvimento contínuo de sua estrutura TensorFlow.

    A API de Detecção de Objeto TensorFlow fornece aos cientistas de dados e aos desenvolvedores acesso à mesma tecnologia que o Google usa para seus próprios sistemas, como o Nest Cam, itens similares na Pesquisa de imagens e identificação de número de rua no Street View. O sistema que o Google lançou ganhou o desafio de detecção de objetos da Microsoft Common Objects in Context (COCO) no ano passado, superando outras 23 equipes.

    A primeira versão de código aberto do Google inclui um conjunto de modelos treináveis que são criados para detecção de objetos. Também estão incluídos um conjunto de parâmetros para os modelos que foram treinados no conjunto de dados do COCO, de modo que é possível que os usuários comecem com a API sem tomar o tempo para treinar os modelos. Um notebook incluído da Jupyter encaminhará os usuários interessados para testar as novas capacidades.

    Para aqueles desenvolvedores e cientistas de dados que querem treinar seus próprios modelos, o Google incluiu scripts para fazê-lo localmente, bem como no conjunto de serviços de nuvem da empresa.

    A intenção do Google é trazer as ferramentas de Inteligência Artificial para as massas e pode ajudar a acelerar a criação de sistemas inteligentes mais avançados, permitindo que outros cientistas de dados e desenvolvedores se desenvolvam no topo do trabalho existente da Google.

    Esses recursos também podem ajudar a dar ao TensorFlow uma vantagem quando se trata de compartilhar entre pessoas que usam diferentes estruturas de aprendizagem de máquinas . O Google não é o único: a Microsoft oferece o seu Cognitive Toolkit , enquanto a Amazon está apoiando o Apache MXNet e o Facebook derrubou o Caffe2 e PyTorch.

    Um dos principais benefícios desta versão é que o Google lançou um sistema de detecção de objetos que pode ser executado em dispositivos móveis como parte deste projeto. Baseia-se nos modelos de reconhecimento de imagens do MobileNets que o gigante tecnológico abriu anteriormente.

    Fonte: https://venturebeat.com/2017/06/16/google-open-sources-object-detection-tech-that-powers-nest-cam-image-search-and-street-view/

  10. Sim Jorge, com certeza daria erro, também não sei acho que modifiquei no tópico, mas agora está assim e funcionando,

     

    // definição do número do boletim e registro no arquivo
    dbSelectArea( "num" )      // registro dos numeros dos boletins
    num->( dbGoBottom() )      // capturar o ultimo boletim registrado
    nNumbol := num->numero + 1 // proxino numero
    cSay1 := strzero(nNumbol,4)+str(year(date()),4)  // nro. sequencial dos boletins
    num->( dbAppend() )
    num->( rLock() )
    num->data    := date()
    num->hora    := time()
    num->numero  := val(substr(cSay1,1,4))   // guarda o numero gerado
    num->tipo    := STR(nRad,1)              // boletim de inclusao ou exclusão
    num->status  := "L"                      // boletim gerado pelo programa
    num->usuario := cUsuario                 // usuario que logou
    num->( dbUnlock() )

    // captura o numero inicial e final dos boletins para impressão
    do case
       case w = 1
            boleini := cValToChar(nNumbol) //strzero(nNumbol,4)
            boleano := year(date())
       case w = 3
            bolefim := cValToChar(nNumbol) //strzero(nNumbol,4)
            boleano := year(date())
    endcase        
     

    Bem observado, tá ligado heim

    Abraços

  11. Boa noite,

    Valeu o cValToChar() resolveu.

    Toda vida usei o STR() para mudar de numero para caracter, mas nesse não deu, depois vou tentar descobrir o que houve.

    Obrigado pelas respostas parceiros.

    // captura o numero inicial e final dos boletins para impressão
    do case
       case w = 1
            boleini := cValToChar(nNumbol) //str(nNumbol)
            boleano := year(date())
       case w = 3
            bolefim := cValToChar(nNumbol) //str(nNumbol)
            boleano := year(date()) 
    endcase        

     

  12. O "W" é um FOR w = 1 to 3 NEXT que está sendo executado.

    O que eu quero é passar uma variável que é numerica para caracter, mas o STR() não está fazendo isso, ela continua numérica

    boleini := str(cNumbol) // passar para caracter  

    cNumbol é numérica e boleini continua numérica na linha seguinte

  13. Boa-tarde

    // definição do número do boletim e registro no arquivo
    dbSelectArea( "num" )      // registro dos numeros dos boletins
    num->( dbGoBottom() )      // capturar o ultimo boletim registrado
    cNumbol := num->numero + 1 // proxino numero    <---------- aqui é numerérica
    cSay1 := strzero(val(cNumbol),4)+str(year(date()),4)  // nro. sequencial dos boletins
    num->( dbAppend() )
    num->( rLock() )
    num->data    := date()
    num->hora    := time()
    num->numero  := val(substr(cSay1,1,4))   // guarda o numero gerado
    num->tipo    := STR(nRad,1)              // boletim de inclusao ou exclusão
    num->status  := "L"                      // boletim gerado pelo programa
    num->usuario := cUsuario                 // usuario que logou
    num->( dbUnlock() )

    // captura o numero inicial e final dos boletins para impressão
    do case
       case w = 1
            boleini := str(cNumbol) // passar para caracter
            boleano := year(date())
       case w = 3
            bolefim := str(cNumbol)
            boleano := year(date())
    endcase
       ? type(boleini),boleini,bolefim

    Estou passando a variável "boleini" para caracter porém continua numérica e o type() diz "N". Elas são publicas

    Alguém saberia dizer o que acontece

     

     

×
×
  • Create New...