-
Posts
1,291 -
Joined
-
Last visited
-
Days Won
35
Everything posted by oribeiro
-
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.
-
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 //----------------------------------------------------------------------------//
-
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.
-
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" ?
-
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 )
-
Esse link parou de funcionar: http://www4.receita.fazenda.gov.br/simulador/PesquisarNCM.jsp Tel alguma alternativa para buscar a descrição do NCM?
-
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
-
É isso que faltava! Muitos clientes estão perguntando se é possível enviar mensagem por dentro do sistema.
-
Muito bom o codeblock para calcular o Meter. Obrigado.
-
Muito obrigado pela dica. Vou implementá-la.
-
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?
-
Estou a disposição. Você conferiu com o Rafael se as atualizações serão simultâneas as do monitor no site do ACBr?
-
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.
-
Eu tenho interesse. Como faço para começar?
-
Não. Uso o ACBr
-
Como faço para selecionar um certificado digital e trazer para o sistema o nome e a senha dele?
-
Diferença entre Embarcadero 32-bit BCC 7.30 e Borland 32-bit BCC 5.8.2
oribeiro replied to Jmsilva's topic in Programação
Procurei encontrar quais são as implementações que houveram no 740 em comparação com o 730 mas não achei. -
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
-
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.
-
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.
-
Por favor, assim que possível, poste a rotina inteira, com o DLG que você criou. Aqui não está funcionando.
-
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.
-
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.
-
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
-
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)) )