Jump to content
Fivewin Brasil

rafaoasys

Membros
  • Posts

    3
  • Joined

  • Last visited

Reputation Activity

  1. Like
    rafaoasys reacted to oribeiro in RLock() no PostGres com SQLRDD   
    Preciso descobrir como fazer isso usando recursos do banco para não ter que controlar isso via rotina de programação.
    Acredito que a maior vantagem do banco é a possibilidade de se colocar as regras nele e deixar de fazê-las nos códigos.
    Alguém sabe como fazer o RLock() no PostGress ?
    O Luiz Culik disse que é para configurar o timeout nas queries porque o default está desabilitado; como se faz isso?
  2. Like
    rafaoasys reacted to oribeiro in ACBrNFeMonitor, alguem usa, que possa trocar ideias   
    Meu uso é similar ao do Ariston, compatibilizei a minha aplicação com o programa gratuito do SEFAZ e o ACBr usando o mesmo TXT.
    Meus clientes estão satisfeitos.
  3. Like
    rafaoasys reacted to oribeiro in Passar a SQL passo a passo para Novatos..   
    Registrando a minha experiência:
    1º) Intalei o banco Postgres 8.3 no meu servidor Windows Server 2008:
    2º) Baixei o SQLRDD DEMO do xHarbour.com
    3º) Passei a usar as funções nativas do SQLRLL
    Até aqui eu criei o banco usando o PgAdmin3 (não consegui criá-lo por dentro da aplicação). Entretanto, todas as tabelas e chaves do banco foram criadas normalmente pela aplicação na rotina de organização dos arquivos. O próximo passo agora é testar todas as funções da aplicação e fazer os ajustes necessários para que tudo funcione com o Banco assim como já rodavam com DBF.

    4º) Depois de estabilizado, vou usar o SR_SETFILTER para evitar SKIP/LOOP
    5º) Passar a usar SELECT no lugar de WHILE, DBSEEK, etc
    6º) Inlcuir as TRIGGERS e STORED POCEDURES no banco
    7º) Liberar o banco para acesso através da Internet e iniciar o desenvolvimento de algumas aplicações Web usando WebDev.
  4. Like
    rafaoasys reacted to kapiaba in Impressão - Tamanho da Folha no padrão da impressora   
    Mais documentação:
    http://forums.fivetechsupport.com/viewtopic.php?t=12647
    abs.
  5. Like
    rafaoasys reacted to kapiaba in xBrowse ToExcel (problema na formatação numérica)   
    Oscar, sinceramente, não entendi a resposta, se bem que não uso nada para excel, mas que me parece que não está correto, me parece. No xBrowse mostra a formatação corretamente, mas na hora que vai para o Excel, vai como se ele pegasse diretamente do banco de dados, estranho, mui estraño...
    http://forums.fivetechsupport.com/viewtopic.php?f=6&t=29499
    Se conseguires uma solução, eu gostaria de ver. Pela primeira vez, fiquei "rendido". kkkkkkkkkkkkkkk
    Abs.
  6. Like
    rafaoasys reacted to kapiaba in Impressão - Tamanho da Folha no padrão da impressora   
    FUNCTION FOLHA_PAPEL_A4()

    // Para Checar o Tipo de Papel Que Esta Na Impressora - Correto A4
    oPrinter = TPrinter():New( 'Meu Documento' , .F., .F., NIL, .F. )

    aPaper = PrnGetPaper( oPrinter )

    IF .NOT. aPaper[3] = 'A4'

    MsgInfo( OemToAnsi( "ATEN€ÇO USUµRIO: " )+CRLF+;
    OemToAnsi( "O PROGRAMA DETECTOU QUE O TIPO " )+CRLF+;
    OemToAnsi( "DE PAPEL QUE FOI DEFINIDO NA IMPRESSORA, " )+CRLF+;
    OemToAnsi( "ESTµ INCORRETO. POR FAVOR ENTRE EM: " )+CRLF+;
    OemToAnsi( "<BotÆo> Iniciar: " )+CRLF+;
    OemToAnsi( "No Windows 7 <Click> Em: " )+CRLF+;
    OemToAnsi( "Dispositivos e Impressoras. " )+CRLF+;
    OemToAnsi( "No Windows XP <Click> Em: " )+CRLF+;
    OemToAnsi( "Impressoras e Aparelhos de Fax. " )+CRLF+;
    OemToAnsi( "ENTRE NAS PROPRIEDADES DA IMPRESSORA E " )+CRLF+;
    OemToAnsi( "TROQUE O TIPO DE PAPEL PARA O FORMATO A4." )+CRLF+;
    OemToAnsi( "O DOCUMENTO DE IMPRESSÇO DEVE SER SEMPRE " )+CRLF+;
    OemToAnsi( "IMPRESSO NESTE FORMATO DE PAPEL: A4. " )+CRLF+;
    OemToAnsi( "TECLE <ENTER> PARA CONTINUAR... AIAIUIUI." ), ;
    OemToAnsi( "Favor Trocar o Tipo de Papel Para A4. " ) )

    ENDIF

    RETURN( .T. )
    //----------------------------------------------------

    FUNCTION PrnGetPaper( oPrn )

    LOCAL aPoint := PrnGetSize( oPrn:hDc ), aRecmm := {}, nW := 0
    LOCAL nH := 0, wx := 0

    LOCAL aPapers:={{"DMPAPER_LETTER " , 1 , "Letter " , {216,279} },;
    {"DMPAPER_LETTERSMALL " , 2 , "Letter Small " , {216,279} },;
    {"DMPAPER_TABLOID " , 3 , "Tabloid " , {280,432} },;
    {"DMPAPER_LEDGER " , 4 , "Ledger " , {432,280} },;
    {"DMPAPER_LEGAL " , 5 , "Legal " , {216,356} },;
    {"DMPAPER_STATEMENT " , 6 , "Statement " , {140,216} },;
    {"DMPAPER_EXECUTIVE " , 7 , "Executive " , {184,257} },;
    {"DMPAPER_A3 " , 8 , "A3 " , {297,420} },;
    {"DMPAPER_A4 " , 9 , "A4 " , {210,297} },;
    {"DMPAPER_A4SMALL " , 10 , "A4 Small " , {210,297} },;
    {"DMPAPER_A5 " , 11 , "A5 " , {148,210} },;
    {"DMPAPER_B4 " , 12 , "B4 " , {250,354} },;
    {"DMPAPER_B5 " , 13 , "B5 " , {182,257} },;
    {"DMPAPER_FOLIO " , 14 , "Folio " , {216,330} },;
    {"DMPAPER_QUARTO " , 15 , "Quarto " , {215,275} },;
    {"DMPAPER_10X14 " , 16 , "10x14 in " , {254,356} },;
    {"DMPAPER_11X17 " , 17 , "11x17 in " , {280,432} },;
    {"DMPAPER_NOTE " , 18 , "Note " , {216,279} },;
    {"DMPAPER_ENV_9 " , 19 , "Envelope #9 " , {098,225} },;
    {"DMPAPER_ENV_10 " , 20 , "Envelope #10 " , {105,241} },;
    {"DMPAPER_ENV_11 " , 21 , "Envelope #11 " , {114,264} },;
    {"DMPAPER_ENV_12 " , 22 , "Envelope #12 " , {109,279} },;
    {"DMPAPER_ENV_14 " , 23 , "Envelope #14 " , {127,292} },;
    {"DMPAPER_ENV_DL " , 27 , "Envelope DL " , {110,220} },;
    {"DMPAPER_ENV_C5 " , 28 , "Envelope C5 " , {162,229} },;
    {"DMPAPER_ENV_C3 " , 29 , "Envelope C3 " , {324,458} },;
    {"DMPAPER_ENV_C4 " , 30 , "Envelope C4 " , {229,324} },;
    {"DMPAPER_ENV_C6 " , 31 , "Envelope C6 " , {114,162} },;
    {"DMPAPER_ENV_C65 " , 32 , "Envelope C65 " , {114,229} },;
    {"DMPAPER_ENV_B4 " , 33 , "Envelope B4 " , {250,353} },;
    {"DMPAPER_ENV_B5 " , 34 , "Envelope B5 " , {176,250} },;
    {"DMPAPER_ENV_B6 " , 35 , "Envelope B6 " , {176,125} },;
    {"DMPAPER_ENV_ITALY " , 36 , "Envelope " , {110,230} },;
    {"DMPAPER_ENV_MONARCH " , 37 , "Envelope Monarch " , {098,191} },;
    {"DMPAPER_ENV_PERSONAL " , 38 , "6 3/4 Envelope " , {092,165} },;
    {"DMPAPER_FANFOLD_US " , 39 , "US Std Fanfold " , {378,279} },;
    {"DMPAPER_FANFOLD_STD_GERMAN" , 40 , "German Std Fanfold " , {216,305} },;
    {"DMPAPER_FANFOLD_LGL_GERMAN" , 41 , "German Legal Fanfold" , {216,330} } }

    aRecmm = oPrn:Pix2Mmtr(aPoint[1], aPoint[2])

    nW = ROUND(aRecmm[1],0)
    nH = ROUND(aRecmm[2],0)

    for wx=1 to len(aPapers)
    if aPapers[wx,4,1] = nW .AND. aPapers[wx,4,2] = nH
    return {aPapers[wx,1],aPapers[wx,2],aPapers[wx,3]}
    endif
    next

    return {"",0,""}


  7. Like
    rafaoasys reacted to oribeiro in Passar a SQL passo a passo para Novatos..   
    Pessoal,
    Criei coragem e vou iniciar a troca do DBF para PostGres.
    Pretendo seguir os seguintes passos:
    1º) Intalar o banco no meu servidor Windows Server 2008:
    2º) Começar usando o SQLRDD release november-2009 (05/12/2010)
    3º) Usar as funções nativas do SQLRLL
    4º) Depois de estabilizado, passar a usar o SR_SETFILTER para evitar SKIP/LOOP
    5º) Passar a usar SELECT no lugar de WHILE, DBSEEK, etc
    6º) Inlcuir as TRIGGERS e STORED POCEDURES no banco
    7º) Liberar o banco para acesso através da Internet e iniciar o desenvolvimento de algumas aplicações Web usando WebDev.
    Vou precisar muito da ajuda dos colegas e vou deixar registrado nesse espaço toda a experiência para que outros se beneficiem.
    Passo 1: Instalar o banco
    - Para começar, qual é a versão do Postgres que eu devo instalar para rodar com o SQLRDD Nov/2009. No site, a última é a versão (postgresql-9.3.5-3-windows), mas eu li no site do xHarbour.com que o SQLRDD suporta o PostGres na versão 9.0, encontrei no site essa instalação (postgresql-9.0.18-2-windows) - É essa que vocês estão utilizando com o SQLRDD?
    - Vocês tem alguma sugestão de respostas que eu devo dar ao instalador no momento da instalação?
    - Qual ferramenta devo usar para administração desse banco?
    Aguardo, obrigado.
  8. Like
    rafaoasys reacted to netsys in Erro na instalação do Java   
    Obrigado Kapiaba e RafaOasys
    Aqui acontece exatamente o que consta nos 2 links que o Kapiaba enviou.
    Também só dá o problema no Windows 7 - 32, no 64 vai bem.
    Todo caso, consegui reinstalar a versão 7.71 e deu certo.
    obrigado novamente.
    abs
    Alberto - SP
  9. Like
    rafaoasys reacted to kapiaba in Erro quando a impressora não existe   
    http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=7736&p=46054&hilit=PRINTER_STATUS_NOT_AVAILABLE#p46054
  10. Like
    rafaoasys reacted to kapiaba in Erro quando a impressora não existe   
    Veja se ajuda:
    http://forums.fivetechsupport.com/viewtopic.php?f=3&t=11418&p=56252&hilit=PRINTER_STATUS_NOT_AVAILABLE#p56252
    abs
  11. Like
    rafaoasys reacted to kapiaba in Erro quando a impressora não existe   
    Controle as impressoras...


    #define PRINTER_STATUS_OK 0
    #define PRINTER_STATUS_PAUSED 1
    #define PRINTER_STATUS_ERROR 2
    #define PRINTER_STATUS_PENDING_DELETION 4
    #define PRINTER_STATUS_PAPER_JAM 8
    #define PRINTER_STATUS_PAPER_OUT 16
    #define PRINTER_STATUS_MANUAL_FEED 32
    #define PRINTER_STATUS_PAPER_PROBLEM 64
    #define PRINTER_STATUS_OFFLINE 128
    #define PRINTER_STATUS_IO_ACTIVE 256
    #define PRINTER_STATUS_BUSY 512
    #define PRINTER_STATUS_PRINTING 1024
    #define PRINTER_STATUS_OUTPUT_BIN_FULL 2048
    #define PRINTER_STATUS_NOT_AVAILABLE 4096
    #define PRINTER_STATUS_WAITING 8192
    #define PRINTER_STATUS_PROCESSING 16384
    #define PRINTER_STATUS_INITIALIZING 32768
    #define PRINTER_STATUS_WARMING_UP 65536
    #define PRINTER_STATUS_TONER_LOW 131072
    #define PRINTER_STATUS_NO_TONER 262144
    #define PRINTER_STATUS_PAGE_PUNT 524288
    #define PRINTER_STATUS_USER_INTERVENTION 1048576
    #define PRINTER_STATUS_OUT_OF_MEMORY 2097152
    #define PRINTER_STATUS_DOOR_OPEN 4194304
    #define PRINTER_STATUS_SERVER_UNKNOWN 8388608
    #define PRINTER_STATUS_POWER_SAVE 16777216

    function Main()

    local nStatus := PrnStatus( "LPT1:" )

    MsgInfo( nStatus )

    return nil


  12. Like
    rafaoasys reacted to oribeiro in Envio de eMail com TSMTP   
    João,
    Agradeço pelo seu interesse em ajudar.
    Eu também uso dessa forma, o TSMTP é uma classe opcional que eu usava quando o Schema do Windows não funcionava. Normalmente quando o usuário informava senha errada ou nem informava a senha.
    Se ninguém tiver ela atualizada para as versões mais recentes do FiveWin eu vou desativá-la. Apenas coloquei aqui para, quem sabe, encontrar alguém que também a utiliza.
    Um abraço,
  13. Like
    rafaoasys reacted to kapiaba in Exemplos de Programas em Fivewin   
    Está em Alemão, mas perfeitamente compreensivel.
    http://pflegeplus.com/fivewin
    abs,
  14. Like
    rafaoasys reacted to kapiaba in Livros de Clipper - Doação.   
    http://www.pctoledo.com.br/forum/viewtopic.php?f=1&t=15554
  15. Like
    rafaoasys reacted to oribeiro in Substituto para cGetFile por motivo de segurança   
    Vamos lá, para inibir o acesso dos usuários ao banco de dados do sistema, os passos que sigo são:
    1º) Uso "Cliente de Terminal Server" com abertura do sistema no login e logoff ao sair do sistema. Também, desabilito o acesso ao "Gerenciador de Tarefas" no servidor de TS.

    2º) Troquei o cGetDir32() pelo comando: cGetDir("Selecione a UNIDADE e a PASTA dos dados.",,,"Selecione o local e pressione o botão <OK>", 0x00000008) // OFN_NOCHANGEDIR

    3º) Troquei o PrinterSetup() pelo comando: GetPrintDC()

    4º) Troquei o cGetFile() pela função: oaGetFile() abaixo:
    ********************************************************************************************* Function oaGetFile( cMask, cTitle, nDefaultMask, cInitDir, lSave ) ********************************************************************************************* Local aFiles := aGetFiles( cMask, cTitle, nDefaultMask, cInitDir ) Local i,cFile:= "" if Len(aFiles)>0 // Retorna apenas um arquivo selecionado if AT(" ",aFiles[1])>0 cFile := Alltrim(Left(aFiles[1], AT(" ",aFiles[1]))) aFiles[1] := Alltrim(Subst( aFiles[1], AT(" ",aFiles[1]), Len(aFiles[1]))) cFile := cFile + Alltrim(Left(aFiles[1], AT(" ",aFiles[1]))) else cFile := aFiles[1] endif endif Return( cFile ) ********************************************************************************************* Function aGetFiles( cMask, cTitle, nDefaultMask, cInitDir, lSave ) ********************************************************************************************* #define OFN_PATHMUSTEXIST 0x00000800 #define OFN_NOCHANGEDIR 0x00000008 #define OFN_ALLOWMULTISELECT 0x00000200 // permite a seleção de vários arquivos em tela simplificada (não abre a tela de seleção do Windows) #define OFN_LONGNAMES 0x00200000 // force long names for 3.x modules #define OFN_HIDEREADONLY 0x00000004 // Oculta a caixa de seleção Somente leitura. #define OFN_NONETWORKBUTTON 0x20000 // Desabilita o botão [ REDE ] da Dlg Local cSelect, nAt, aFiles := {} Local nFlags := nOr( OFN_PATHMUSTEXIST, OFN_NOCHANGEDIR, OFN_ALLOWMULTISELECT, OFN_LONGNAMES, OFN_HIDEREADONLY, OFN_NONETWORKBUTTON ) Default cMask := "Todos (*.*)|*.*|" Default cTitle := "Selecione o arquivo" Default nDefaultMask := 1 Default lSave := .F. // Sintaxe := cGetFile( cMask, cTitle, nDefaultMask, cInitDir, lSave, lLongNames, nFlags ) cSelect := cGetFile( cMask, cTitle, nDefaultMask, cInitDir, lSave, .T., nFlags ) cSelect := Left( cSelect, At( Chr( 0 ) + Chr( 0 ), cSelect ) - 1 ) if ! Empty( cSelect ) cSelect := StrTran( cSelect, Chr( 0 ), "," ) aFiles := hb_aTokens( cSelect, "," ) if Len( aFiles ) > 1 for nAt := 2 TO Len( aFiles ) aFiles[ nAt ] := aFiles[ 1 ] + "\" + aFiles[ nAt ] next nAt ADel( aFiles, 1 ) ASize( aFiles, Len( aFiles ) - 1 ) endif endif Return( aFiles )
  16. Like
    rafaoasys reacted to kleyber in Passar a SQL passo a passo para Novatos..   
    Oscar,
    Para usar bancos SQL é necessário estudar SQL e como o SGBD controla o banco pra você. Estamos acostumados a fazer com que nossos sistemas gerenciem os DBFs e isso com bancos SQL não ocorre. O pensamento em relação a banco de dados muda drasticamente, até mesmo porque DBF não é banco de dados e sim repositório de dados. Isso se aprende quando estudamos a fundo bancos SQL. Muitas vezes tentamos usar o SQL com linguagem xbase e isso não tira o melhor que o banco SQL oferece. Estude bem SQL antes de começar a tua migração. Existem vários textos na net mostrando como se usa bancos SQL. Não é complicado, mas é trabalhoso. Só que no final o resultado é compensador.
    Quanto a migração, eu faria como o Eduardo Motta citou, indo por partes, mas sempre tendo o foco de usar ao máximo o que o SQL tem a oferecer.
    Minha opinião.
  17. Like
    rafaoasys reacted to miragerr in Passar a SQL passo a passo para Novatos..   
    Ola amigos
    Oscar realmente existem varias formas e varios SGDB, voce devera optar por aquele que você melhor se identificar, no caso de uso em NUVEM, EU "particularmente" recomendaria o POSTGRES, mais tem o MariaDB o qual este substitui o Mysql em velocidade com folga e com os mesmos comandos e DLL do Mysql, isso caso voce queira migrar de Mysql para MariaDB. Exite a SQLRDD que te dá todo este suporte de migração sem voce ter que refazer todo o teu codigo, apenas convertendo de DBF para SQL, exceto que voce tera que se conectar no SGDB de sua preferencia.
    Eu mesmo quando converti meus DBFs para Mysql que foi minha opção inicial, fiquei usando os comandos xBASE por um bom tempo, o qual ainda uso até hoje, exceto para relatorios, pois acabou os DO WHILE !EOF e varias condições dentro do DO WHILE.
    Uma pequena amostra de como uso por exemplo para fazer um somatorio de NFe por CST e CFOP.
    Select a.arcodigo AS COD_ITEM, a.arqtdent AS QTD, b.arunidad AS UNID, SUM( COALESCE( a.arvtotal, a.arvrunit * a.arqtdent ) ) AS VL_ITEM, sum( a.arvrdesc ) AS VL_DESC, COALESCE( d.arcstopr, a.arcodcst ) AS CST_ICMS, a.arcfop AS CFOP, d.arcodopr AS COD_NAT, SUM( ROUND( IF( a.arvricms IS NOT NULL,a.arvrbase_icms, 0 ), 2 ) ) AS VL_BC_ICMS, a.arpericm AS ALIQ_ICMS, SUM( ROUND( COALESCE( a.arvricms, 0 ), 2 ) ) AS VL_ICMS, SUM( ROUND( COALESCE( a.arvrbs_icm_st, 0 ), 2 ) ) AS VL_BC_ICMS_ST, 0 AS ALIQ_ST, SUM( ROUND( COALESCE( a.arvricms_st, 0 ), 2 ) ) AS VL_ICMS_ST, ROUND( IF( COALESCE( d.arcstopr, a.arcodcst ) = '20', SUM( a.arvrunit * a.arqtdent ) - SUM(arvrbase_icms), 0 ), 2 ) AS VL_RED_BC, IF( a.arcst_pis = '0.', '', a.arcst_pis ) AS CST_PIS, SUM( ROUND( COALESCE( a.arvbcpis, 0 ), 2 ) ) AS VL_BC_PIS, a.arperpis AS ALIQ_PIS, SUM( ROUND( COALESCE( a.arvalpis, 0 ), 2 ) ) AS VL_PIS, IF( a.arcst_cof = '0.', '', a.arcst_cof ) AS CST_COF, SUM( ROUND( COALESCE( a.arvbccof, 0 ), 2 ) ) AS VL_BC_COF, a.arpercof AS ALIQ_COF, SUM( ROUND( COALESCE( a.arvalcof, 0 ), 2 ) ) AS VL_COF, a.arperipi AS ALIQ_IPI, SUM( ROUND( COALESCE( a.arvripei, 0 ), 2 ) ) AS VR_IPI FROM ent2prod AS a LEFT JOIN pg02 c ON a.arcodfor = c.arcodfor AND c.sr_deleted != 'T' LEFT JOIN estoque b ON a.arcodigo = b.arcodigo LEFT JOIN natopera d ON a.arcfop = d.arnroopr WHERE a.arnrnota = '0000139362' AND a.arcodfor = '0039' AND a.ardtentr = str_to_date( '20140731', '%Y%m%d' ) AND a.sr_deleted != 'T' GROUP BY 6, 7, a.arpericm com este codigo o SGDB me devolve o resultado prontamente e não preciso ficar fazendo Sub-condiçoes dentro do DO WHILE.
    Qualquer coisa estamos aqui para SOMAR e MULTIPLICAR, nada de DIVIDIR ou DIMINUIR.
×
×
  • Create New...