Jump to content
Fivewin Brasil

Ale SB

Membros
  • Posts

    1,653
  • Joined

  • Last visited

  • Days Won

    6

Ale SB last won the day on July 3 2015

Ale SB had the most liked content!

Contact Methods

  • MSN
    aleseribeli@hotmail.com
  • Skype
    ale.seribeli

Profile Information

  • Gender
    Male
  • Location
    Campo Grande / MS

Recent Profile Visitors

1,068 profile views

Ale SB's Achievements

  1. Blz galera, To na area de novo ... se alguem precisar de uma força eh soh chamar... o Skype tenho usado poko .. mais WhatsApp ... email: aleseribeli@hotmail.com Skype: ale.seribeli WhatsApp: 67-9147-3920 @braçao ai Galera....
  2. Blz Galera.... Poderiam indicar-me um Host confiável(bom) e com preços acessíveis(barato). Eh coisa simples q eu kero...pelo menos no minimo: 5 Ct de eMail's 10 Gb de espaço 2 bancos Mysql Ja vi muita gente ( no Google) recomendando o HostGater...mas, tb vi algumas reclamaçoes.( acredito q todos tem reclamaçoes). @braços Ale
  3. Blz Kapi... Como te passei ontem eh isso aki...ele exporta direto sem abrir a Cx d Exportaçao. Se o Logo nao esta exportando verifique o caminho. oFrPrn:SetProperty("PDFExport","FileName", "teste.pdf") //--> Cria o nome e caminha do Pdf. oFrPrn:SetProperty("PDFExport","ShowDialog", .f.) //--> (.f.) Nao abre a Cx de Dialog de Exportaçao. oFrPrn:SetProperty("PDFExport","OpenAfterExport", .f. ) //--> (.f.) Nao abre o Pdf direto. oFrPrn:PrepareReport() //--> Cria o Relatorio. oFrPrn:DoExport("PDFExport") //--> exporta como PDF. @braços Ale
  4. Bom... vou dar um pitaco tb... A nossa realidade eh diferente de alguns anos atrás, acredito que muita gente espera os topicos para decidir ( como o Marca ja disse acima )....mas eu lhes pergunto ! O que tem de novo para ser apresentado ? Há algo realmente interessante que valha o investimento para participar de um congresso desse porte. Há +- 5 ou 6 anos tinhamos a SqlLib ( muitos ainda nao haviam migrado para SQL, diferente de hoje ), tivemos xDev (uma plataforma bem interessante e desenvolvida pelo Vaiton, ja com seu nome consagrado aqui no forum...eh claro que valia a pena ver ela), tivemos a integraçao do ECF com Fw ( como o Alex apresentou, acho que mais de uma vez ), a FastReport ( debuiada pelo Evandro e que nos deu a honra de apresentar em detalhes. ) e sem falar que era uma epoca ainda do FW com telas mais simples e tivemos a vLib do Vagner dando um visual mais moderno para a Ferramenta. Entao, o que temos Hoje ? Seria mais facil falar de [x]Harbour do que FW, onde, nao podemos esquecer que Fw eh apenas uma Lib Visual, muita gente espera dela novidades como a de uma Linguagem..algo revolucionario ( Web, Tablets, Celulares , Palms )...isso nao vai acontecer! Pode ate ser apresentado uma faisca para esses equipamentos, mas, sabemos que [x]hb+Fw nao eh um linguagem desenvolvida para esta finalidade e mesmo com muita gente se esforçando para conseguir isso, como rodar em Android, estamos "Anos Luz" atrasados em comparaçao com linguagens preparadas para rodar neste OS. Sem desmerecer quem assume a organizar o Congresso( que nao eh uma tarefa facil )....mas...tb nao pode cobrar presença, pressionar ( como a Cacau fez ), sem nos dar algo que realmente seja motivador. Para finalizar, sobram duas alternativas; Fazer o Congresso, com novidades, topicos interessantes e com pouca enfase aqui no forum; ou promover o Encontro, onde muita gente vai para se distrair fazer amizades e assistir algumas palestra de temas rotineiros. Ps1.: Mantenho minha opniao e experiencia, nos encontros que participei, aprendi mais e fiz otimas amizades/parcerias, fora de algumas palestras batendo papo ou no Happy hour do que dentro de uma sala olhando para Slides. Ps2.: Concordo com o Marcelao (Marca), estamos mais fracos e perdendo muita gente boa. @braços Ale
  5. Galera mudança de planos; vou Comercializar a Classe Sim. Mais detalhes eh soh entrar em contato. @braços Ale
  6. Cara eh boa sim, .... nao vou te falar q ela seja merecedora do Premio Nobel, mas, tem muita coisa nela que eu sempre quis ter de forma automatica no sistema e no desenvolvimento. Cara a classe nao cormecializo nao, somente o suporte...pq algumas coisas sao personalizadas para minhas necessidades. Para vc usar ai, talvez precise de alguns ajustes para sua necessidade e compatibilidade de suas ferramentas, coisa simples, mas sempre necessarias ate para ganhar tempo. qq coisa entra em contato: Skype: ale.seribeli ( nao fico conectado o dia Todo) email: aleseribeli@hotmail.com ( verifico os emails diariamente ) WhatsApp : 67-9147-3920 (24 horas p/dia, quando a Claro ta com boa vontade de sinal.) @braçao Ale
  7. Ah e no caso dos browses/listbox, eu trabalhava com array, mudei tudo para temp( nos testes descobri q eh mais rapido) Abro o banco filtro se precisar e carrego tudo para o temp, fecho o banco e pronto...pode dar pau no terminal pode esquecer aberto o Browse o seu banco ta fechado e guardado. *****--- CARREGA TEMP ********************************************************** oDbfClie := ::oDbfClie if !oDbfClie:dbOpen() return .f. endif aEstru := (oDbfClie:cAlias)->( dbStruct() ) oDbfClie:dbClose() //--> Temporario //dbCreate( cFile, aStruct, cRDD, lKeepOpen, cAlias, cDelimArg, cCodePage, nConnection ) dbCreate( "mem:tCadaCli", aEstru, "DBFCDX", .T., "tCadaCli" ) Inde On Upper(sb_TiraAcento(tCadaCli->Nome_Cli)) Tag "Nome_Cli" Inde On Upper(sb_TiraAcento(tCadaCli->FantaCli)) Tag "FantaCli" Inde On tCadaCli->Fone1Cli Tag "Fone1Cli" Inde On tCadaCli->Fone2Cli Tag "Fone2Cli" Inde On tCadaCli->Fone3Cli Tag "Fone3Cli" dbSelectArea("tCadaCli") ::FiltroTab(1) tCadaCli->( dbSetOrder(1) ) //--> Nome tCadaCli->( dbGoTop() ) aFiltro := { "Todos Ativos", "Venda Liberada","Venda Travada", "Excluidos", "Todos" } //----------------------------------------------------------------------------// METHOD FiltroTab(oCbx_nAt) CLASS TCliente_sb local cTagOrd, cScope1, cScope2 local lFiltro := .t. local nOrd local oDbfClie, oAds oDbfClie := ::oDbfClie if !oDbfClie:dbOpen() return endif oDbfClie:SetIndex() //--> aFiltro := { "Todos Ativos", "Venda Liberada","Venda Travada", "Excluidos", "Todos" } if oCbx_nAt == 1 //--> Todos Clientes que nao sejam Excluidos. lFiltro := .f. nOrd := 9 cScope1 := "A" cScope2 := "A" elseif oCbx_nAt == 2 //--> Todos Clientes Vendas Liberadas que nao sejam Excluidos. nOrd := 8 // (.F.) Vendas Nao Travadas. cScope1 := .F. cScope2 := .F. elseif oCbx_nAt == 3 nOrd := 8 cScope1 := .T. cScope2 := .T. elseif oCbx_nAt == 4 lFiltro := .f. nOrd := 9 cScope1 := "E" cScope2 := "E" elseif oCbx_nAt == 5 //--> Todos lFiltro := .f. nOrd := 9 cScope1 := "A" cScope2 := "E" endif oDbfClie:SetOrder(nOrd) cTagOrd := oDbfClie:cTag dbSelectArea("tCadaCli") tCadaCli->( dbzap() ) oDbfClie:SelectArea() oDbfClie:dbGoTop() #ifdef __SB_ADSCDX__ oAds := TxAds_sb():New() if lFiltro oAds:xScopeFilter( cTagOrd, cScope1, cScope2,"Clientes->Flag_Cli == 'A'" ) else oAds:xScopeIndex(cTagOrd, cScope1, cScope2 ) endif oAds := nil #else #endif do while !oDbfClie:Eof() tCadaCli->( dbAppend() ) for x := 1 to ( oDbfClie:cAlias )->( FCOUNT() ) //oDbfCola:ordKeyCount() tCadaCli->( FieldPut(x, (oDbfClie:cAlias)->(FieldGet(x)) ) ) next oDbfClie:dbSkip() enddo oDbfClie:dbClose() dbSelectArea("tCadaCli") dbSetindex("tCadaCli") tCadaCli->( dbSetOrder(1) ) //--> Nome tCadaCli->( dbGoTop() ) return
  8. Blz Oscar, Bom na questao da Alteraçao vai depender do modulo, qualquer registro que eu tenha q travar eu defino no prg, se eu quero travar ele soh no momento da gravaçao dos dados ou quando abre o registro na tela( que eu acho inviável este ultimo caso). Se vc travar quando abrir o registro o usuario pode ir la tomar um cafezinho e por certo ninguem vai poder alterar nada. Entao prefiro travar na hora de salvar, a classe eh rapida entao mesmo q os dois ou mais estejam alterando o mesmo registro, nao da problema ja testei alterando dois registros apertando o botao de salvar ao mesmo tempo, foi de boa...oq manda neste caso e a maquina, a mais rapida faz a alteraçao 1º. O objetivo da classe e dar agilidade nos processos de gravaçao, 1º eu verifico quais os dados que foram alterados e depois mando gravar, com isso vc ja ganha muito tempo, assim, se tornando um processo rapido. Se vc tem um registro com 50 campos e o cara altera soh 01 campo, a classe identifica e grava soh a alteraçao de um campo ( mais rapido do que gravar os 50 neh), sem falar q pode acontecer de outro usuario estar alterando tb 1 campo, mas diferente, vc nao interfere na informaçao. Agora os dois estar alterando ao mesmo tempo, o mesmo campo eh dificil de acontecer, mas, pode acontecer ai vc tem q ter uma funçao para estes casos, por exemplo de uma venda os dois podem alterar o mesmo campo de estoque, ai o correto seria ter uma funçao informando o usuario q outra venda esta sendo realizada, se o produto tiver soh 01 em estoque, ai eh o vendedor mais experto q ganha a comissao..ehheheh....+- por ai. voltando para classe, seria +- isso : Inclusao/Novo registro: - Entro com os dados no buffers; - Salvo : --> Abro o banco --> A classe ja gera um codigo automatico e grava no registro( pronto aquele Registro eh meu, nao corro o risco de duplicaçao de codigo ) --> Travo e mando salvar os outros campos; --> A classe salva faz o commit, destravo e ja fecho o banco. Alteraçao/ediçao do registro -Apos a Ediçao, mando salvar - A Classe: --> Compara os campos do registro que estao no Buffers com os do hash que eu ja carreguei na hora de abrir o registro. --> se houve alteraçao a propria classe tem uma dialog q informa para o usuario oq esta sendo alterado e ele decide oq fazer. --> Caso seja Confirmar a alteraçao, --> A Classe Grava um log sobre as alteraçoes (automatico) *** --Cliente.log Código: 000020 Bairro : Centro ==> Alterado Por ==> jardim monte libano Fone 3 : ==> Alterado Por ==> 1899999999 Nome : Ana Paula Gomes Bertagnolli ==> Alterado Por ==> Teste log Usuário: USERMASTER - IP: 192.168.1.3 - Terminal: DEMOLIDOR Alterações Efetuadas em: 26/03/2014 às 10:24:45 ==================================================================================================== Código: 000001 Ender. : Rua Evandro B. Calvoso ==> Alterado Por ==> Rua Evandro B. Calvo Nome : Edna Lopes Batalha ==> Alterado Por ==> Alessandro Batalha Usuário: USERMASTER - IP: 192.168.1.3 - Terminal: DEMOLIDOR Alterações Efetuadas em: 26/03/2014 às 10:24:01 ==================================================================================================== --> Abro o Banco, dou um seek, travo, a classe salva e da o commit, destravo e fecho o BD. Eh +- por ai...este eh a parte de gravaçao do meu Prg. //----------------------------------------------------------------------------// METHOD SalvaReg(nCodIni, lMsg) CLASS TCliente_sb local cRet, cModulo local vTarefa := "I" DEFAULT lMsg := .T. //--> Envia as mensagens de Alteraçao. //--> cRet ==> (N) - Nao há Modificaçoes. // (A) - Alterar, Salva as Novas Informaçoes. // (C) - Cancelar, Cancela as Informaçoes Digitadas. // (R) - Retornar, retorna a tela de Edição, ainda com as Informaçoes Digitadas. //--> Ediçao Novo Registro, Se _nCodIn for # do Codigo Digitado eh uma Alteração. //--> Este procedimento soh ocorre depois do Codigo ja estar validado e o // Usuario estiver tentando Salvar o Registro. if nCodIni != Val(::oDbfClie:Codi_Cli) cRet := ::oDbfClie:hsChange(lMsg) if !lMsg cRet := "A" endif if ( cRet == "N" .or. cRet == "C" ) return .t. elseif cRet == "R" return .f. elseif cRet == "A" //--> Grava em um Arquivo de Texto as Alteraçoes. hb_FNameSplit( ProcFile(0),, @cModulo ) ::oDbfClie:hsChangeLog( cModulo, "Codi_Cli", oVar:cUsuario ) //--> Grava apenas as Modificaçoes. vTarefa := "A" endif endif if !::oDbfClie:dbOpen() return .f. endif ::oDbfClie:SetIndex() //--> default SetOrder 1 if vTarefa == "I" ::oDbfClie:GenCodeRec() && Tem q vir antes do Append, Gera codigo. ::oDbfClie:Append() if ::oDbfClie:NetError() ::oDbfClie:dbClose() return .f. endif ::oDbfClie:FieldPut("Codi_Cli") ::oDbfClie:Flag_Cli := "A" //--> Ativo ::oDbfClie:UsuarCli := oVar:cCodUser ::oDbfClie:Data_Cli := Date() ::oDbfClie:Hora_Cli := Time() endif if vTarefa == "A" ::oDbfClie:dbSeek(::oDbfClie:Codi_Cli) endif if ::oDbfClie:() ::oDbfClie:SaveBuf() ::oDbfClie:dbRUnLock() else ::oDbfClie:dbClose() return .f. endif ::oDbfClie:dbClose() if (nCodIni != Val(::oDbfClie:Codi_Cli)) .and. vTarefa == "I" MsgInfo( "Novo Código Gerado: " + ::oDbfClie:Codi_Cli, "..:: Atenção ::..") endif return .t.
  9. Blz Joao; Cara o melhor seria neste caso vc criar uma classe para fazer tudo automatico. Eu criei uma baseada na TDataBase, mas tudo atraves de Hash muito mais pratico e rapido do q array, hoje trabalho com DBF/ADS mas na linha do Sql, os bancos ficam fechados, soh eh aberto para carregar as variaveis e para gravaçoes, abre e fecha. Qq alteraçao nos registros, a classe verifica soh oq houve alteraçao e manda para o banco soh os registros alterados, tudo muito rapido...vc ganha tempo e segurança trabalhando em rede. Mas, vc pode dar uma olhada nesta classe aqui, fazendo algumas pequenas alteraçoes personalizadas, acredito q vc vai conseguir fazer oq quer! http://forums.fivetechsupport.com/viewtopic.php?f=3&t=14019&hilit=xdatabase @braços Ale
  10. Oi kleber blz...recebi sim Hoje o dia foi corrido, vi o email agora....vou providenciar para vc e envio no teu email...ok Tb ja te add no skype o meu eh : ale.seribeli @braços Ale
  11. go.bat Chama hbmkbc.bat o hbmkbc define seus Paths e chama o hbmk2 para compilar seu projeto q esta no visualfw.hbp ( q nada mais seria uma arquivo de Lote com a extençao .hbp ) http://harbourlanguage.blogspot.com.br/2010/02/using-hbmk2.html Ps.: necessariamente nao precisa usar o HbMk2.exe, pode configurar direto...mas... a vantagem eh que ele ja ultiliza os flags padrao / libs /include para seu projeto. Nao eh mais facil compilar soh assim: hbmk2.exe -gui -comp=bcc -o%BIN_DIR%\%NAME_EXE% %1 do q harbour.exe -n2 test.prg -owin\bcc\obj\ -iD:\dev_Tools\Bcc582\Include -iD:\dev_Tools\Bcc582\Include\dinkumware -id:\dev_Tools\harbour\hb32\include -iD:\dev_Tools\FiveWin\FwH1306\include -undef:.ARCH. -D__PLATFORM__WINDOWS -D__LITTLE_ENDIAN__ -D__ARCH32BIT__ bcc32.exe -c -q -CP437 -d -O2 -OS -Ov -Oc -Oi -6 -tW -tWM -w -Q -w-sig- -nwin\bcc\obj -ID:\dev_Tools\Bcc582\Include -ID:\dev_Tools\Bcc582\Include\dinkumware -Id:\dev_Tools\harbour\hb32\include -ID:\dev_Tools\FiveWin\FwH1306\include win\bcc\obj\test.c ilink32.exe @MeuPrg.lnk -Gn -Tpe -LD:\dev_Tools\Bcc582\Lib;D:\dev_Tools\Bcc582\Lib\PSDK;d:\dev_Tools\harbour\hb32\lib\win\bcc;D:\dev_Tools\FiveWin\FwH1306\lib -aa c0w32.obj win\bcc\obj\test.obj, win\bcc\bin\test.exe, nul, fiveh.lib fivehc.lib hbct.lib hbtip.lib png.lib hbfship.lib hbxpp.lib hbwin.lib xhb.lib psapi.lib Version.lib OleDlg.lib hbextern.lib hbdebug.lib hbvm.lib hbrtl.lib hblang.lib hbcpage.lib gtcgi.lib gtpca.lib gtstd.lib gtwin.lib gtwvt.lib gtgui.lib hbrdd.lib hbuddall.lib hbusrrdd.lib rddntx.lib rddcdx.lib rddnsx.lib rddfpt.lib hbrdd.lib hbhsx.lib hbsix.lib hbmacro.lib hbcplr.lib hbpp.lib hbcommon.lib kernel32.lib user32.lib gdi32.lib advapi32.lib ws2_32.lib winspool.lib comctl32.lib comdlg32.lib shell32.lib uuid.lib ole32.lib oleaut32.lib mpr.lib winmm.lib mapi32.lib imm32.lib msimg32.lib wininet.lib hbpcre.lib hbzlib.lib cw32mt.lib import32.lib, , @braços Ale
  12. Dificil onde ?! Para um cabra Inteligente como vc, nao vai apanhar de 2 arquivinhos neh?! o Bat de Compilaçao ja ta pronto eh soh alterar o Paths d seu Hb + Fw + Bcc ( hbmkbc.bat) Go.bat, soh serve pra facilitar sua vida e chamar seu projeto VisualFW.hbp eh seus Prg's e Rc/Res Cria Kapiaba.hbp e joga os Prg la, pronto! onde esta a dificuldade ?! qq coisa grita ai a gente vai ajudando... @braços Ale
  13. @Joao, meu bravo e grande amigo gaivota (heheheh), já pode testar: http://fivewin.com.br/index.php?/files/file/1096-bat-para-harbour-fw-bcc/ Eu usei o hbmk2.exe, uma poderosa e eficiente ferramenta para gerar os Executaveis em harbour, o meu Bat está redondo com todas libs Adicionais q sua versao do Fw precisa, mas se faltar alguma eh soh add no bat. ( olhe ele com muito Amor e Carinho, nao tem segredo). "qq coisa Grita nois" Tb tem um exemplo de make com harbour no proprio Fw, na pasta Visual "visualfw.mak". Ps.: Rosa eh em homenagem a Nova Torcida organizada do seu Time...heheheh.......... @braçao meu grande amigo; Ale SB
  14. Manda a SSAY.PRG e a DSAY.PRG que eu testo pra ver se compila! Pô mais eh claro que pode usar, vc nao ta mundando pra Java nao. 99,99% do q vc usa vai continuar usando...tudo tem compatibilidade. Medo, vc tem q sentir qdo o tricolor pega seu Time..hehehe. Vou Montar um esquema aki pra vc Compilar...e qq coisa pelo Forum/Skype a gente vai consertanto algum erro q possa acontecer..ok! @braços Ale
  15. Blz Theo; Olha em algumas versões antigas do FW, o BTNBMP dava este problema mesmo, já nas versões mais recentes esse calculo de posicionamento já foi resolvido. Mas estou junto com o Oscar, acho q o BUTTONBP mais funcional e mesmo nas versoes antigas funciona Blzinha, tem bastante exemplo no samples dele. @braços Ale
×
×
  • Create New...