Jump to content
Fivewin Brasil

oribeiro

Membros
  • Posts

    1,291
  • Joined

  • Last visited

  • Days Won

    35

Everything posted by oribeiro

  1. Notel que a classe REPORT.PRG tem um METHOD ToExcel() e o PRINTER.PRG não tem. Pelo visto ainda não implementaram essa função na classe PRINTER.PRG.
  2. João, No exemplo citado no link eles criam uma função que exporta para o excel o conteúdo de uma matriz mas não faz a exportação do excel dos dados que estão no relatório como ele faz automaticamente com o REPORT.PRG. O exemplo que eles usam é esse: #include "fivewin.ch" //----------------------------------------------------------------------------// function Main() local oPrn, oFont, n, nRow local aData := { ; { "One", "Two", "Three" }, ; { "Four", "Five", "Six" }, ; { "Seven", "Eight", "Nine" }, ; { "Ten", "Eleven", "Twelve" } } PRINT oPrn PREVIEW DEFINE FONT oFont NAME "ARIAL" SIZE 0,-15 OF oPrn oPrn:bToExcel := { || ToExcel( aData ) } PAGE n := 1 nRow := 1000 do while n <= Len( aData ) @ nRow, 1000 PRINT TO oPrn TEXT aData[ n, 1 ] FONT oFont @ nRow, 2000 PRINT TO oPrn TEXT aData[ n, 2 ] FONT oFont @ nRow, 3000 PRINT TO oPrn TEXT aData[ n, 3 ] FONT oFont nRow += 200 n++ enddo ENDPAGE ENDPRINT RELEASE FONT oFont return nil //----------------------------------------------------------------------------// static function ToExcel( aData ) local oExcel := ExcelObj() local oBook := oExcel:WorkBooks:Add() local oSheet := oBook:ActiveSheet local oRange, n oExcel:ScreenUpdating := .f. oRange := oSheet:Range( oSheet:Columns( 1 ), oSheet:Columns( 3 ) ) for n := 1 to Len( aData ) oRange:Rows( n ):Value := aData[ n ] next oExcel:ScreenUpdating := .t. oExcel:Visible := .t. ShowWindow( oExcel:hWnd, 3 ) return nil //----------------------------------------------------------------------------//
  3. Bom dia João, Sim. Quando eu visualizo um relatório feito com PRINTER.PRG no RPreview.prg ele não me dá a opção de exportar para o Excel como ele faz com os relatórios gerados com o REPORT.PRG.
  4. Pessoal, Com o comando "REPORT oRpt" funciona muito bem a exportação para o EXCEL. Alguém já descobriu um modo do RPreview exportar para o Excel os relatórios gerados com o comando "PRINT oPrn" ?
  5. Não está dando certo. O código que sempre usei é esse: ********************************************* Function BuscaNCM( cNumNCM, cDesNCM ) // Pega a Descrição da NCM na Internet // ********************************************* Local oPg, i Default cDesNCM := "OUTROS" cNumNCM := Alltrim(StrNum(cNumNCM,.F.)) cBuf := "" if isinternet() if !empty(cNumNCM) oPg:=CreateObject("Microsoft.XMLHTTP") //oPg:Open("GET","http://www4.receita.fazenda.gov.br/simulador/PesquisarNCM.jsp?codigo="+left(cNumNCM,4),.F.) //Exemplo: http://www4.receita.fazenda.gov.br/simulador/PesquisarNCM.jsp?codigo=732599&codigoCapitulo=73&codigoPosicao=7325&codigoSubPosicao1=73259&codigoSubPosicao2=732599# oPg:Open("GET","http://www4.receita.fazenda.gov.br/simulador/PesquisarNCM2.jsp?codigo="+left(cNumNCM,6)+; "&codigoCapitulo="+left(cNumNCM,2)+; "&codigoPosicao="+left(cNumNCM,4)+; "&codigoSubPosicao1="+left(cNumNCM,5)+; "&codigoSubPosicao2="+left(cNumNCM,6)+; "&button=Exibir+NCMs",.F.) ErroNET:=.f. Try oPg:Send() catch oError ErroNET:=.T. End Try if !ErroNET cBuf := oPg:responseBody end end end if !Empty(cBuf) xPOS1 := at('<div id="listaNCM">',cBUF) xPOS2 := at('</div>',cBUF) cBUF := subs(cBUF,xPOS1,xPOS2-xPOS1) xPOSN := at(cNumNCM,cBUF) if xPOSN # 0 cBUF := right(cBUF,len(cBUF)-(xPOSN+21)) for i=1 to Len(cBuf) if Subst(cBuf,i,1)$" -" Loop endif cBuf:=Subst(cBuf,i,Len(cBuf)) Exit next xPOSF := at('</a> </font>',cBUF) cDesNCM := left(cBUF,xPOSF-1) end end cDesNCM := iif(Empty(cDesNCM), "OUTROS", cDesNCM) Return( cDesNCM )
  6. Esse link parou de funcionar: http://www4.receita.fazenda.gov.br/simulador/PesquisarNCM.jsp Tel alguma alternativa para buscar a descrição do NCM?
  7. Pessoal, Desenvolvi uma função para criar um Browse com gráfico. ********************************************************************************************* Function xBrwChart(cTitu, aHead, aData) // BROWSE COM GRÁFICO (Oscar 16/08/2019) ********************************************************************************************* // Exemplo: // cTitu := "Demonstratico de Compras x Vendas nos últimos 6 meses." // aHead := {"Descrição", "Jan/19", "Fev/19", "Mar/19", "Abr/19", "Mai/19", "Jun/19"} // aData := {{"Compras" , 100 , 200 , 300 , 50 , 100 , 400 },; // {"Vendas" , 0 , 100 , 500 , 150 , 100 , 400 }} // xBrwChart(cTitu, aHead, aData) Local oDlg, oBrw, oFont, i, aChart:={} Default cTitu := "Título" Default aHead := {} // Cabeçalho Default aData := {} // Dados DEFINE FONT oFont NAME "Segoe UI" SIZE 0,-16 DEFINE DIALOG oDlg SIZE 1200,580 PIXEL TRUEPIXEL FONT oFont TITLE cTitu TRANSPARENT STYLE nOr( WS_CAPTION, WS_THICKFRAME, WS_SYSMENU, WS_MAXIMIZEBOX ) @ 75,20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg DATASOURCE aData AUTOCOLS HEADERS aHead CELL LINES FOOTERS NOBORDER FASTEDIT For i=2 To Len(aHead) AAdd(aChart, aHead[i]) // Separa os valores para o gráfico a partir da segunda coluna oBrw:aCols[ i ]:cEditPicture := '@E 999,999,999.99' // Formata os valores do gráfico com duas casas decimais Next WITH OBJECT oBrw:AddCol() // Adiciona uma coluna com o gráfico :cHeader := "CHART" :aChartCols := aChart :nWidth := 190 END oBrw:bClrStd := {|| {CLR_BLACK, iif(oBrw:Keyno()%2=0, CLR_WHITE, RGB(236,236,236)) } } // Cores nas linhas (Par/Impar) ou (oBrw:cAlias)->(RecN())%2=0 oBrw:nRowHeight := 50 oBrw:CreateFromCode() @ 21, 20 BTNBMP PROMPT { || If( oBrw:Chart:cChartType == "LINE", "&Gráfico de Barras", "&Gráfico de Linhas" ) } ; SIZE 130,30 PIXEL OF oDlg FLAT ; ACTION ( oBrw:Chart:cChartType := If( oBrw:Chart:cChartType == "LINE", "BAR", "LINE" ), oBrw:Refresh(), oBrw:SetFocus() ) @ 21,160 BTNBMP PROMPT "&Imprimir" ; SIZE 130,30 PIXEL OF oDlg FLAT ; WHEN oBrw:oRightCol == nil ACTION oBrw:Report() @ 21,300 BTNBMP PROMPT "&Fechar" ; SIZE 130,30 PIXEL OF oDlg FLAT ; ACTION oDlg:End() Cancel oDlg:bResized := {||(oBrw:nHeight:=oDlg:nHeight()-85,oBrw:nWidth:=oDlg:nWidth()-55,oBrw:Resize())} // Redimensiona o Browse conforme o tamanho do Dialog ACTIVATE DIALOG oDlg CENTERED RELEASE FONT oFont Return nil
  8. oribeiro

    whatsapp

    É isso que faltava! Muitos clientes estão perguntando se é possível enviar mensagem por dentro do sistema.
  9. Muito bom o codeblock para calcular o Meter. Obrigado.
  10. Muito obrigado pela dica. Vou implementá-la.
  11. Pessoal, Eu passei o site da ReceitaWS está retornando CNPJ desatualizado e demorando muito em alguns casos. Alguém conseguiu trazer os dados cadastrais para dentro do sistema direto do site da secretaria da fazenda?
  12. Estou a disposição. Você conferiu com o Rafael se as atualizações serão simultâneas as do monitor no site do ACBr?
  13. Eu uso o ACBr Monitor faz muito tempo e gosto muito dele, se a DLL ou LIB tiver todos os recursos do monitor e as atualizações simultâneas as do monitor eu migrarei. Confirme, por favor, com o RAFAEL sobre as atualizações.
  14. Eu tenho interesse. Como faço para começar?
  15. Como faço para selecionar um certificado digital e trazer para o sistema o nome e a senha dele?
  16. Procurei encontrar quais são as implementações que houveram no 740 em comparação com o 730 mas não achei.
  17. Alguém já tentou fazer um download automático por esse site? https://lite.arquivei.com.br/?utm_source=google&utm_medium=cpc&utm_campaign=_LS_Arquivei-Lite_Institucional&utm_term=%2Barquivei %2Blite&gclid=EAIaIQobChMIie_c8e6f4gIVlguRCh1RGwNkEAAYASAAEgJ_4fD_BwE
  18. Que legal! Estão encontrando um caminho. Eu achei que estava tudo perdido com essa alteração do portal nacional. Vou testar esse código e ver o que consigo com ele. Obrigado.
  19. Meus amigos. Era tão bom poder baixar os arquivos XML por dentro do sistema. Mas infelizmente o portal nacional fecho as portas. Se alguém descobrir um modo de burlar isso, por favor, nos avise. Obrigado.
  20. Por favor, assim que possível, poste a rotina inteira, com o DLG que você criou. Aqui não está funcionando.
  21. Resolvi! Era uma função que eu tinha incluído no final do ano passado na windows principal que criava as teclas de atalho que estava interferindo no oLbx:nKeyDown. Obrigado.
  22. Percebi hoje esse mesmo problema na minha aplicação, o bKeyDown parou de funcionar para as teclas de função. Eu alterei alguma coisa dentro do meu sistema que o oLbx:bKeyDown parou de funcionar com as teclas de função e eu não sei o que foi. Funciona com INSERT, DELETE, ENTER, etc. mas com F1..F12 não funciona mais.
  23. Obrigado pelas dicas. Tentei dessa forma também, mas ele não copia os arquivos para a área de transferência (CTRL+C) Eu preciso que os arquivos vão para a área de transferência para que o usuário copie com (CTRL+V) para alguma pasta do seu disco local; isso porque ele está acessando o servidor através do Web RDP Guacamole onde o disco local não é compartilhado no servidor. Então, uma rotina dentro do sistema que copie os arquivos de uma pasta para outra não funcionará porque a pasta destino não está disponível no servidor, mas somente na máquina local. Alguém já conseguiu copiar arquivos de um diretório para a área de transferência? aFiles := xGetFiles("Todos (*.*)|*.*|", "Selecione o arquivo(x)", 1, "", .F. ) // oClp:=TClipboard():New() // oClp:Clear() define ClipBoard oClp of objetodasuajanela_ou_dialog for i=1 to len(aFiles) oClp:SetText( aFiles[1] ) next
  24. oribeiro

    HashCSRT

    Valdir, Cheguei no resultado com a ajuda do João. // CRIAR HashCSRT // wCSRT := "G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO" wChave := "41180678393592000146558900000006041028190697" codigo := wCSRT + wChave codigo1 := hb_sha1(codigo, .T.) codigo2 := HB_Base64encode(codigo1, Len(codigo1)) Msginfo( codigo1+chr(13)+chr(13)+"Modelo: aWv6LeEM4X6u4+qBI2OYZ8grigw="+chr(13)+chr(13)+"Gerado: "+codigo2, "HB_base64encode() -> Tamanho: "+str(len(codigo2)) )
×
×
  • Create New...