Jump to content
Fivewin Brasil

jfaguiar

Membros
  • Posts

    1,287
  • Joined

  • Last visited

  • Days Won

    21

Reputation Activity

  1. Like
    jfaguiar reacted to kapiaba in Ler o número da linha / coluna na TExcelScript()   
    Busca aqui:
    http://forums.fivetechsupport.com/search.php?st=0&sk=t&sd=d&keywords=texcelscript
    Saludos.
  2. Like
    jfaguiar got a reaction from Rogerio Figueira in MrBoleto Banco Santander   
    Olá Rogério.
    D e u   C e r t o !!!
    Atualizei o método e alterei o carregamento das seguintes variáveis da seguinte forma:
     oBoleto:Prefixo______ := ''
     oBoleto:Prefixo_DV___ := ''
    Obrigado rapaz.
    Deus te abençoe...
    Feliz ano novo
     
  3. Like
    jfaguiar reacted to Rogerio Figueira in MrBoleto Banco Santander   
    Aguiar, faz tempo que não lido com isso. O último ajuste foi em 2015, estava funcionando ao menos até 2017.
    Segue o código que tenho aqui:
     
    //*----------------------------------------------------------------------------* // // M., Ronaldo: Boleto Bancario em Harbour // // Method Banco_033() Class MR_Boleto // //*----------------------------------------------------------------------------* Method Banco_033() Class MR_Boleto ::Banco_Dv_____ := "7" ::Banco_Nome___ := "Banco Santander" IF EMPTY( ::Prefixo______ ) ::Prefixo______ := ::Conta________ ::Conta________ := '' ::Prefixo_DV___ := ::Conta_DV_____ ::Conta_DV_____ := '' ENDIF ::Prefixo______ := PADL( ALLTRIM( Left( ::Prefixo______, 6 ) ), 6, '0' ) ::Prefixo_DV___ := PADL( ALLTRIM( Left( ::Prefixo_DV___, 1 ) ), 1, '0' ) ::NossoNumero__ := PADL( ALLTRIM( Left( ::NossoNumero__, 12 ) ), 12, '0' ) ::NossoNumer_DV := ::DC_Mod11( ::Banco________, 9, .F., ::NossoNumero__, .F. ) digNossoNumero := ::DC_Mod11( ::Banco________, 9, .F., ::NossoNumero__, .F. ) ::NossoNumero_z := ::NossoNumero__ + " " + ::NossoNumer_DV ::Ag_Cod_Cedent := TRAN( ::Banco_Agencia + '/' + ::Prefixo______ + '-' + ::Prefixo_DV___, "@!") ::Campo_Livre__ := '9' + ::Prefixo______ + ::Prefixo_DV___ + ::NossoNumero__ + + ::NossoNumer_DV + '0'+ ::Carteira_____ Return NIL  
    Sds.
  4. Like
    jfaguiar got a reaction from frkiko in FlexDoc   
    Às vezes me esqueço e coisas que eu lembrei que eu havia esquecido, mas nunca, jamais esquecerei da parceria "Dr. Gilmer e Flexdocs" no que diz respeito à NF-e e NFS-e. O Gilmer é o que podemos entender como "o pequeno notável !",  kkk salvou muitos Clippeiros que estavam desnorteados. Vlw. Vlw Kapiaba, grande colaborador, Vlw muitos outros de fórum que são importantíssimos na minha carreira de programador de computador. Não sou empresário, sou programador de computador, a empresa é só um CNPJ. Sou o João Programador. 
     
  5. Like
    jfaguiar got a reaction from aferra in FlexDoc   
    Às vezes me esqueço e coisas que eu lembrei que eu havia esquecido, mas nunca, jamais esquecerei da parceria "Dr. Gilmer e Flexdocs" no que diz respeito à NF-e e NFS-e. O Gilmer é o que podemos entender como "o pequeno notável !",  kkk salvou muitos Clippeiros que estavam desnorteados. Vlw. Vlw Kapiaba, grande colaborador, Vlw muitos outros de fórum que são importantíssimos na minha carreira de programador de computador. Não sou empresário, sou programador de computador, a empresa é só um CNPJ. Sou o João Programador. 
     
  6. Like
    jfaguiar got a reaction from Valdir in FlexDoc   
    Às vezes me esqueço e coisas que eu lembrei que eu havia esquecido, mas nunca, jamais esquecerei da parceria "Dr. Gilmer e Flexdocs" no que diz respeito à NF-e e NFS-e. O Gilmer é o que podemos entender como "o pequeno notável !",  kkk salvou muitos Clippeiros que estavam desnorteados. Vlw. Vlw Kapiaba, grande colaborador, Vlw muitos outros de fórum que são importantíssimos na minha carreira de programador de computador. Não sou empresário, sou programador de computador, a empresa é só um CNPJ. Sou o João Programador. 
     
  7. Like
    jfaguiar got a reaction from sistem in FlexDoc   
    Às vezes me esqueço e coisas que eu lembrei que eu havia esquecido, mas nunca, jamais esquecerei da parceria "Dr. Gilmer e Flexdocs" no que diz respeito à NF-e e NFS-e. O Gilmer é o que podemos entender como "o pequeno notável !",  kkk salvou muitos Clippeiros que estavam desnorteados. Vlw. Vlw Kapiaba, grande colaborador, Vlw muitos outros de fórum que são importantíssimos na minha carreira de programador de computador. Não sou empresário, sou programador de computador, a empresa é só um CNPJ. Sou o João Programador. 
     
  8. Like
    jfaguiar got a reaction from kapiaba in Rejeição Sefaz - Socoroooo   
    https://atendimento.tecnospeed.com.br/hc/pt-br/articles/360034114933-Rejeição-897-Informado-Código-numérico-em-formato-inválido
     
  9. Like
    jfaguiar reacted to kapiaba in Rejeição Sefaz - Socoroooo   
    Sempre post o número da Rejeição:
     
    Veja:
     
    https://www.oobj.com.br/bc/article/rejeição-897-código-numérico-em-formato-inválido-como-resolver-921.html
  10. Like
    jfaguiar reacted to aferra in CTE com Flexdocs   
    mas por qual motivo mudar para esses Marcio? funciona muito bem a flexdocs
  11. Like
    jfaguiar reacted to joao in Rotinas Mysql Fivewin 1903   
    Boa tarde, 
    Como o Gilmer explicou tem vários exemplos na pasta samples, exemplo:
    static function ConnectToServer()
       local cHost:='localhost', cUser:='root', cPassword:='01112012', cDb:='SchemaTest01'
          EDITVARS cHost , cUser , cPassword  , cDB   PROMPTS  "Host de Conexão" ,"Usuário", "Senha",  "Base de Dados"
          FWCONNECT oCn HOST cHost USER cUser PASSWORD cPassword DATABASE cDB
          if oCn == nil
             ? "Erro Conexão ao servidor"
             QUIT
          else
             oCn:lShowErrors := .t.
             if MsgNoYes( "Deseja criar todas as tabelas?" )
                DropAllTables()
             endif
          endif
    return oCn
  12. Like
    jfaguiar reacted to Rogerio Figueira in Rotinas Mysql Fivewin 1903   
    Aguiar,
    eu utilizo o tDolphin, achei muito simples e fácil a utilização.
     
    #include "fileio.ch" function abrebase() LOCAL nPort,nFlags Local host, usuario, senha, DbName LOCAL oErr nFlags := "0" nPort := "3306" if ! pconfsql(@host, @usuario, @senha, @DbName, "web") //função que carrega os dados de um arquivo criptografado MsgStop("Impossível recuperar dados de acesso ao Servidor.","Atenção:") return .f. end TRY CONNECT oServer HOST alltrim(host) ; USER alltrim(usuario) ; PASSWORD alltrim(senha) ; PORT nPort ; FLAGS nFlags; DATABASE alltrim(DBName) CATCH oErr MsgInfo( oErr:Description ) RETURN NIL END IF ! oServer:lError msginfo( "Host: " + oServer:cHost +CRLF+; "Database: " +oServer:cDBName +CRLF+; oServer:GetServerInfo() +CRLF+; oServer:GetClientInfo() ,"Connection OK") END oServer:Execute( "SET SESSION wait_timeout = 86400;" ) return nil Veja os exemplos de insert, update e select nos demos do tdolphin, crie um banco básico para testes e verás que é mais fácil lidar com o mysql do que com os dbfs.
     
  13. Like
    jfaguiar reacted to joaosolution in Rotinas Mysql Fivewin 1903   
    Bom dia 
    Neste tópico têm refrências ao ADORDD
    Att
    João Bosco
  14. Like
    jfaguiar reacted to emotta in Gerar QRCODE - FIVEWIN   
    Um amigo me pediu um exemplo para gerar QRCODE em xHarbour/Fivewin. Procurei no forum achei alguns exemplos mas faltava a DLL, em outros exemplos tinha um codigo fonte gigante, enfim, achei bem complicado. Então consegui a DLL (vlw Luis Batata - MicroFly) analisando alguns fontes montei um exemplo bem prático que gera o QRCODE em bitmap e até exibe ele. Espero que ajude outros
     
    obs: neste link tem o codigo fonte e a dll
    http://www.emotta.com.br/qrcode/qrcode.rar
     
    #include "fivewin.ch" Function u_Teste() Local cStr := "AQUI DEVE SER COLOCADO O CONTEUDO DO QRCODE" Local cFile := "arq.bmp" Local oDlg Local oBmp1 QRCode(cStr,cFile) // aqui vc chama a funcao passando como parametro o conteudo do QRCODE e o arquivo BMP que será gerado DEFINE DIALOG oDlg FROM 0,0 TO 300,300 TITLE "Exibir QRCODE" PIXEL @ 10,10 BITMAP oBmp1 FILE cFile OF oDlg Size 200,200 Pixel NOBORDER ACTIVATE DIALOG oDlg CENTERED Return DLL32 STATIC FUNCTION QRCode(cStr As STRING, cFile As STRING) AS LONG PASCAL FROM "FastQRCode" LIB "QRCodelib.Dll"  
  15. Like
    jfaguiar reacted to kapiaba in Contrib PGSQL   
    http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=6389
     
     
  16. Like
    jfaguiar reacted to Wellington Vieira in Contrib PGSQL   
    http://www.xharbour.org/index.asp?page=download/sources
    Baixar no link: 
    xHarbour 1.2.3 Rev. 10241 contrib source code
  17. Like
    jfaguiar reacted to gilmer in Contrib PGSQL   
    http://www.xharbour.org/
     
  18. Like
    jfaguiar reacted to Wellington Vieira in PostGre-SQL   
    CONTRIB PGSQL -> Dentro das contribs do xharbour
    1º - Compilar a contrib usando o seu xharbour e bcc( borland) instalado, conforme os bat's contidos na pasta xharbour.
         ou na própria pasta da contrib.
         É necessário compilar para gerar um LIB, de acordo com o seu xharbour e bcc(borland), instalados...
         O nome da lib a ser gerada é o nome de : libhbpg.lib
         OBS. CASO A LIB QUE VEM COM A CONTRIB, já esteja no formato do xharbour e bcc(borland) que esteja usando, não
         será necessário compilar, para gerar a lib...
    2º - No postgresql vem uma lib que é a libpq.lib , mas esta vem para o  microsoft visual C , então tem que criar 
         uma nova lib  para o formato borland (instalado):  implib -a libpq.lib libpq.dll
         implib.exe -> pertence ao seu bcc(borland) instalado..
    OBS. A 1º e 2º você fará somente em seu computador, para compilar os seus executáveis, nos clientes a instalação do
         postgresql é normal..
    3º - Na execução de seu software caso ele pedir Dll's, batas ir na pasta onde foi instalada o postgresql e copiar as dll's
         para a pasta onde fica o seu executável e mante-las lá inclusive em seus clientes.
    OBS. Copiará as dll's caso o executável exigir as dll's, e mante-las para compilações futuras. E levar estas dll's junto
         com o seu executável aos clientes.. ( Isto dependerá do path da sua máquina e dos cliente), o mais fácil e já ter as
         dll's junto com o seu executável.
    4º - No seu bat de compilação acrescentar as duas lib's criadas: libhbpg.lib, libpq.lib
    INSTALANDO O POSTGRESQL.
         - Sempre verificar na sua máquina ou máquinas dos clientes, qual postgresql 32 ou 64 bits, e instalar o correto,
           podendo ser 9.2, 9.3 ou 10 etc.. ( postgresql)
           OBS. EU ESTOU UTILIZANDO.. OS
           postgresql-9.2.4-1-windows 32/64 Bits ou postgresql-10.4-1-windows 32/64 Bits, mas já testei versões superiores
           e anteriores começadas com o 8.2 e funcionam normalmente.
         - No firewal do windows defender ( ir em Configurações Avançadas) - Regras de Entrada - Nova regra
           Escolher porta - tcp - ( A porta é a 5432) e permir a conexão usando esta porta.
           
           OBS. Eu faço isso, porque se for utilizar o postgresql em rede ou no futuro eu não tenha que alterar essas confi
           gurações, independente se for em uma máquina ou em várias.
         - Em ferramentas administrativas - serviços - Logon secudário -> colocar o tipo de inicialização automático e iniciar.
           Aplicar -> OK
         - instalar o postgresql.. ( Na instalação ele pedirá uma senha que será a senha de acesso ao postgresql).
           (guardar a mesma)
         - Geralmente é instalado em Arquivos de programas-> postgresql -> ai vem as versões em pastas 9.2, 9.3 etc..
         - MAQUINA LOCAL
         - Após instalado o postgresql, ele sempre instalará na porta 5432 e a máquina local será sempre
           localhost ou 127.0.0.1, depois da instalação.

         - EM REDE.
         - Caso seja em rede, na máquina que será o servidor tem que ter ip,dns e gateway na máquina
           da, pois se deixar pelo ip gerado pelo modem de acesso a internet, este poderá mudar de tempos em tempos
           caso não seja ip fixo.
         - No postgresql, na pasta bin tem um executavel chamado de PGADMIN, acessar o mesmo e ir em File(Arquivo)->
           Open pg_hba.conf que esta em Arquivos de programas->postgresql->9.2->data
           Onde tem 127.0.0.1/32 - clicar duas vezes e alterar esta opção para 0.0.0.0/0, que fará com que o postgresql
           aceite a entrada em seus serviços de qualquer computador da rede... 
           OBS. ESTE É APENAS UM JEITO, EXISTEM VÁRIAS FORMAS NO POSTGRESQL, PARA SEGURANÇA DE DADOS PROCESSADOS,,
           QUAIS IP'S DE ACESSO AO BANCO E CONFIGURAÇÕES DIVERSAS... OK
         - EM REDE E MAQUINA LOCAL
         - No postgresql 9.2(localhost:5432), clicar 02 vezes colocar a senha que informou na instalação.
         - depois é só criar uma base de dados ou utilizar a que vem padrão com o nome de "postgresql"
    NO SEU SOFTWARE:
          
    - ABRINDO O POSTGRESQL A PARTIR DE SEU SOFTWARE
     ( O trecho abaixo é retirado do meu fonte, mais pode ser da forma que quiser..)
    function main()          // Conexao com a base de dados........................................          oserver = ""          cserver   = space(20)  // Em máquina local será (127.0.0.1) ou o IP da máquina de rede que foi instalado o postgresql.          cdatabase = space(20)  // O nome do banco de dados criado ou o que instalado automatico com o postgre (postgresql)          cuser     = space(20)  // Caso você não mude, sempre será (postgres)          cpass     = space(20)  // A senha que foi colocada na instalação do postgresql.(xxxxxxxxx)          // Verifica as configuracoes em arquivo..............................          cDirXML = "wsiscom.xml"          if !file(cDirXML)                                                                // cores colocadas em variaveis...             define dialog XML title "Configurando o PostgreSQL" from 10,20 to 23,60 color corobjjan, corfdojan                    define font mtahoma  name "Tahoma"          size 5.5,13                       @ 15.5,002 say "I.P do servidor" of XML font mtahoma color corfrtsay,corfdosay pixel                       @ 15, 050 get oserver var cserver font mtahoma size 080,9 of XML color corfrtget,corfdoget pixel                       @ 30.5,002 say "Banco de Dados" of XML font mtahoma color corfrtsay,corfdosay pixel                       @ 30, 050 get odatabase var cdatabase font mtahoma size 080,9 of XML color corfrtget,corfdoget pixel                       @ 45.5,002 say "Usuario" of XML font mtahoma color corfrtsay,corfdosay pixel                       @ 45, 050 get ouser var cuser font mtahoma size 080,9 of XML color corfrtget,corfdoget pixel                       @ 60.5,002 say "Senha" of XML font mtahoma color corfrtsay,corfdosay pixel                       @ 60, 050 get opass var cpass font mtahoma size 080,9 of XML color corfrtget,corfdoget pixel password                       @ 085,116 BUTTON olbut3 prompt "&Continuar" size 040,12 font mtahoma OF XML pixel action ( gera_xml_postgresql() )             activate dialog XML center          endif          if GetKeyState(VK_ESCAPE)             return nil          endif                    // FWAIT É UMA FUNÇÃO MINHA QUE MOSTRA A MENSAGE ABAIXO NA TELA...          fwait(" ...Tentativa acesso 1 ...")                    nn = 0          ns = "S"          do while .t.                                       // A função abrir_xml lê o xml gerado pela função gera_xml_postgresql()             cserver   =  abrir_xml(cDirXML,"server")             cdatabase =  abrir_xml(cDirXML,"database")             cuser     =  abrir_xml(cDirXML,"user")             cpass     =  abrir_xml(cDirXML,"pass")                                       // FAZ A CONEXÃO COM O POSTGRESQL A PARTIR DAS INFORMAÇÕES .......             oserver := tpqserver():new(cserver, cdatabase, cuser, cpass)                          // oserver - será a variavel que guarda a conexão com o postgresql para todo o software.                          // VERIFICA SE HOUVE ERRO COM A ABERTURA DO POSTGRESQL E TENTA 05 VEZES A CONEXÃO.             if oserver:neterr()                oserver = ""                if nn = 1                   // FECHA A FWAIT                   odlgwait:end()                                      // FWAIT É UMA FUNÇÃO MINHA QUE MOSTRA A MENSAGE ABAIXO NA TELA...                   fwait(" ...Tentativa acesso 2 ...")                                      SysWait(3)                elseif nn = 2                   odlgwait:end()                   fwait(" ...Tentativa acesso 3 ...")                   SysWait(3)                elseif nn = 3                   odlgwait:end()                   fwait(" ...Tentativa acesso 4 ...")                   SysWait(3)                elseif nn = 4                   odlgwait:end()                   fwait(" ...Tentativa acesso 5 ...")                   SysWait(3)                elseif nn = 5                   ns = "N"                             exit                endif             else                exit             endif             ++nn             loop          enddo          if ns = "N"             odlgwait:end()             ferase(cDirXML)             msgstop("Erro de conexão com a base de dados. Contate o suporte","Atenção")             return nil          else             odlgwait:end()          endif return nil function gera_xml_postgresql()          if empty(cserver)             msgstop("I.P do servidor em branco.","Atenção")             return nil          endif          if empty(cdatabase)             msgstop("Banco de dados em branco.","Atenção")             return nil          endif          if empty(cuser)             msgstop("Usuario em branco.","Atenção")             return nil          endif          if empty(cpass)             msgstop("Senha em branco.","Atenção")             return nil          endif          lh := 00          oPrn := TDosPrn():New(cDirXML)          oPrn:StartPage()          oPrn:lZeraBuffer:=.T.          mlinha = '<?xml version='+'"'+'1.0'+'"'+ ' encoding='+'"'+'UTF-8'+'"'+' ?>'          oPrn:Say(lh,000,mlinha)          ++lh          mlinha = '<confPostgreSQL xmlns='+'"'+'http://www.wsiscom.com.br'+'"'+ ' versao='+'"'+ "1.0" +'"'+'>'          oPrn:Say(lh,000,mlinha)          ++lh          mlinha = '<server>'+alltrim(cserver)+'</server>'          oPrn:Say(lh,000,mlinha)          ++lh          mlinha = '<database>'+alltrim(cdatabase)+'</database>'          oPrn:Say(lh,000,mlinha)          ++lh          mlinha = '<user>'+alltrim(cuser)+'</user>'          oPrn:Say(lh,000,mlinha)          ++lh          mlinha = '<pass>'+alltrim(cpass)+'</pass>'          //mlinha = '<pass>'+encrypt(alltrim(cpass))+'</pass>'          oPrn:Say(lh,000,mlinha)          ++lh          mlinha = '</confPostgreSQL>'          oPrn:Say(lh,000,mlinha)          ++lh          oPrn:EndPage()          oPrn:End()          // Fecha a caixa de dialog da configuracao do XML....................          XML:end() return nil Function abrir_xml(cFileName,cTipoName,cvazioounao)          local hFile, cXml,xmlDoc, xmlIter, xmlNode, cNode, cAttrib, cValue, cData          hFile := FOpen( cFileName )          xmlDoc := TXmlDocument():New( hFile )          if xmlDoc:nStatus != HBXML_STATUS_OK              msgstop("Falha no arquivo XML ","ERRO Arquivo XML")              return("")          endif          xmlIter := TXmlIterator():New( xmlDoc:oRoot )          xmlNode := xmlIter:Find()          ctipo  = ""          npassa = "N"          do while xmlNode != NIL             cName := xmlNode:cName             cData := xmlNode:cData             if empty(cvazioounao)                if cName = cTipoName                   npassa = "S"                   exit                endif             else                if cName = cTipoName                   ctipo = cData                   npassa = "S"                endif             endif             xmlNode := xmlIter:Next()          enddo          fclose(hFile)          if !empty(cvazioounao)             cData = ctipo          endif          if npassa = "N"             cData = ""          endif Return(cData) - CRIANDO UMA TABELA EM SUA BASE DE DADOS.....
     ( O trecho abaixo é retirado do meu fonte, mais pode ser da forma que quiser..)         
    // oserver      -> conexão com o postgresql
    // "cabacertos" -> nome da tabela a ser criada
             
             if oServer:TableExists("cabacertos")                            // eu uso este espaço para alterações na base quando tem, a partir de um ftp....             // futuramente eu posso colocar como faço...                       else                                               cQuery := 'CREATE TABLE cabacertos('             cQuery += 'asqn serial primary key,'    && sequencial             cQuery += 'loja smallint,'              && empresa             cQuery += 'adtm date,'                  && data do acerto             cQuery += 'arep smallint,'              && vendedor             cQuery += 'acli smallint,'              && cliente             cQuery += 'asub double precision,'      && subtotal das duplicatas.             cQuery += 'ades double precision,'      && desconto dado nas duplicatas.             cQuery += 'ajur double precision,'      && juros dado nas duplicatas.             cQuery += 'amul double precision,'      && multa dado nas duplicatas.             cQuery += 'atot double precision,'      && total (subtotal - descontos)             cQuery += 'acre double precision,'      && credito aproveitado.             cQuery += 'arec double precision,'      && valor dos recebimentos..             cQuery += 'aeco double precision,'      && valor em kg acerto para o sistema eco             cQuery += 'aecoabatenovalordevido boolean,'&&              cQuery += 'aecoreal double precision,'  &&              cQuery += 'aecorealkg double precision,'&&              cQuery += 'absd text,'                  // observacao desconto..             cQuery += 'absa text,'                  // observacao acrescimo..             cQuery += 'aapr double precision,'      // ndebito - se igual a zero.. nao tem credito e nem debito                                                     //           se positivo ficou devendo..                                                     //           se negativo tem credito a ser lancado nos clientes...             cQuery += 'aope character(2),'          && operador             cQuery += 'alib character(1),'          && liberado..             cQuery += 'asdn double precision,'      && saldo anterior do cliente credito/debito             cQuery += 'asda double precision,'      && saldo atual do cliente credito/debito             cQuery += 'aseq integer)'               && sequencia...             oQuery := oServer:Query(cQuery)             if oQuery:neterr()                msgstop("Nao foi possível criar arquivo de cabacertos. O sistema sera finalizado.","ATENÇÃO")                oServer:Destroy()             endif             oQuery:Destroy()          endif                              if oServer:TableExists("conta_corrente_acertos")          else             cQuery := 'CREATE TABLE conta_corrente_acertos('             cQuery += 'ascr serial primary key,'   && sequencial             cquery += 'loja smallint,'             cQuery += 'asqn integer,'              && sequencial do cabacertos             cQuery += 'adtm date,'                 && data do conta_corrente             cQuery += 'acli smallint,'             && cliente             cQuery += 'arep smallint,'             && vendedor             cQuery += 'avlr double precision,'     && valor             cQuery += 'aobs character(100),'       && Observacao             cQuery += 'acre character(01))'        && (C)redito (D)ebito             oQuery := oServer:Query(cQuery)             if oQuery:neterr()                msgstop("Nao foi possível criar arquivo de conta_corrente_acertos. O sistema sera finalizado.","ATENÇÃO")                oServer:Destroy()                janela_principal:end()                return .t.             endif             oQuery:Destroy()          endif         
     
     - INSERINDO DADOS NA BASE DE DADOS......
             
             OBS. CAMPOS CARACTER,DATA,boolean tem que ser precedidos de '    e de pois de '  ex:  nome character(60), 
             grava-se assim :  'WELLINGTON LLSLSLSLSLSLSLSLSLSL'
             ex de com fica uma query: insert into cabacertos(loja,adtm,arep,)values(1,'2018-09-10',1)
             // aqui todos os campos da tabela..          cQuery := "insert into cabacertos(loja,adtm,arep,acli,asub,ades,ajur,"+;                    "atot,acre,arec,aeco,aecoabatenovalordevido,aecoreal,aecorealkg,aapr,alib,absd,absa,asdn,aseq)"                    // aqui as variaveis que serão guardadas nos campos da tabela.          // lembrando que os campos caracter,data,booleans são precedidos de '    e depois de  '          cQuery += "values("+str(zseqloja)+","+;                    "'"+madtm+"'"+","+;                    alltrim(str(marep))+","+;                    alltrim(str(mccod))+","+;                    alltrim(str(stotal))+","+;                    alltrim(str(mdesc))+","+;                    alltrim(str(mjuro))+","+;                    alltrim(str(ntotal))+","+;                    alltrim(str(ncredi))+","+;                    alltrim(str(nTRece))+","+;                    iif(!empty(npgeco),alltrim(str(npgeco)),"0")+","+;                    "'" + iif(nabatenovalordevido = .f.,"n","y") + "'" +","+;                    iif(!empty(npgEcoReais),alltrim(str(npgEcoReais)),"0")+","+;                    iif(!empty(npgEcoKilos),alltrim(str(npgEcoKilos)),"0")+","+;                    alltrim(str(ndebito))+","+;                    "'"+"N"+"'"+","+;                    "'"+mobsd+"'"+","+;                    "'"+mobsa+"'"+","+;                    iif(!empty(msaldoanteriorcliente),alltrim(str(msaldoanteriorcliente)),"0")+","+;                    alltrim(str(mdncd))+")"                    // Cria um objeto ( variavel ) que chama o postgresql na variavel oserver e executa a query          oQuery := oServer:Query(cQuery)                    // Se der erro na gravação exibe a mensagem abaixo.          if oQuery:neterr()             msgStop("Erro na inclusão do cabacerto.","Atenção")          endif                    // destroy a query.....          oQuery:destroy()                    // faz o commit do insert.....          oServer:Commit() - ALTERANDO DADOS NA BASE DE DADOS...         
             // supondo que mdncd é igual a 2587, o update irá até o registro 2587,
             // lembrando que na criação da base ele primary key [cQuery += 'asqn serial primary key,'], ou pode ser através de indices etc...
             
     
            cQuery := "Update cabacertos set "+;                    "asda = " + iif(!empty(msaldoatualcliente),alltrim(str(msaldoatualcliente)),"0")  +;                    " where " + " aseq = " + alltrim(str(mdncd))          oQuery := oServer:Query(cQuery)          if oQuery:neterr()             msgStop("Não foi possível realizar a alteração no conta corrente.","Atenção")          endif          oQuery:destroy()          oServer:Commit() - EXCLUINDO DADOS NA BASE DE DADOS....
             // supondo que mdncd é igual a 2587, o delete irá até o registro 2587,
             // lembrando que na criação da base ele primary key [cQuery += 'asqn serial primary key,'], ou pode ser através de indices etc...
             cQuery := "delete from cabacertos where "+;                    "aseq = " + alltrim(str(mdncd))          oQuery := oServer:Query(cQuery)          if oQuery:neterr()             msgstop("Não foi possível realizar a operação de exclusão.","ATENÇÃO")          endif          oQuery:destroy()          oServer:Commit()
    - EXECUTANDO UM SELECT
            // SUPONDO QUE MCULF - CODIGO DO CLIENTE SEJA 2879 E ZSEQLOJA - 1 LOJA 1
            
            cQuery := "select * from conta_corrente_acertos where"+;                   " acli = " + alltrim(str(mculf))+;                   " and loja = " + alltrim(str(zseqloja))         cQuery += " order by adtm asc;"         oQuery := oServer:Query(cQuery)         DO WHILE ! oQuery:Eof()            nacre = oQuery:Fieldget(oQuery:Fieldpos('acre'))            navlr = oQuery:Fieldget(oQuery:Fieldpos('avlr'))            if nacre = "C"               nvalorcredito = nvalorcredito + navlr            elseif nacre = "D"               nvalorcredito = nvalorcredito - navlr            endif            oQuery:Skip()         END         oQuery:destroy()         
    OBS. AS FUNCOES, DE INSERT, UPDATE E DELETE, TAIS COMO SELECT ETC.. PODEM SER CRIADAS A PARTIR DE FUNCOES UNICAS QUE VOCÊ PODERÁ 
             CRIAR, PARA FACILITAR NO DESENVOLVIMENTO E MANUTENÇÃO DOS FONTES, TAIS COMO BROWSER'S ETC..
        
             A PARTIR DAQUI, CASO VC, SE ANIME A UTILIZAR PODE ME PEDIR INFORMAÇÕES QUE O QUE ESTIVER AO MEU ALCANCE EU AUXILIO.
     
  19. Like
    jfaguiar got a reaction from kapiaba in VERSÃO PRELIMINAR DA DLL - 2Gv4.06 de 28-08-2018   
    Boa tarde Kapiaba.
    Tive que instalar essa versão nos clientes por conta da tag vDesc que a partir de ontem não aceitou ser omitida pela Sefaz. Mas deu certo.
  20. Like
    jfaguiar reacted to kapiaba in VERSÃO PRELIMINAR DA DLL - 2Gv4.06 de 28-08-2018   
    :
    2Gv4.06a
     
    http://www.flexdocs.com.br/DL/uploads/NFe_Util200v4.06a.zip
  21. Like
    jfaguiar got a reaction from kapiaba in VERSÃO PRELIMINAR DA DLL - 2Gv4.06 de 28-08-2018   
    Oh meu pai. Alterações na NF-e de novo não. Isso é o pesadelo de qualquer programador.
  22. Like
    jfaguiar reacted to kapiaba in Curiosidade ao Fechar oDlg ou oWnd ?   
    Se BTNBMP, use lCancel := .T.
    Se BUTTON / BMP normal, use:  CANCEL
  23. Like
    jfaguiar reacted to kapiaba in tamanho da linha   
    #include "FiveWin.ch" #Define BS_MULTILINE 0x2000 #Define GWL_STYLE -16 function Main()    LOCAL oBtn, oDlg, cName := Space( 30 )    SET _3DLOOK ON    DEFINE DIALOG oDlg FROM 5, 5 TO 17, 40 TITLE "Button with lines"    @ 2, 2 GET cName VALID ! Empty( cName )    @ 50, 2 BTNBMP oBtn PROMPT "Linha 1"+CHR(13)+CHR(10)+"Linha 2" ;                                        +CHR(13)+CHR(10)+"Linha 3" OF oDlg ;            SIZE 30, 25 BOTTOM ACTION( oDlg:End() ) CANCEL    ACTIVATE DIALOG oDlg CENTERED ;       ON INIT SetWindowLong( oBtn:hWnd, GWL_STYLE, ;               nOr(GetWindowLong(oBtn:hWnd, GWL_STYLE), BS_MULTILINE ) ) return nil
  24. Like
    jfaguiar reacted to kapiaba in Busca CEP infalível   
    Dorneles, mostre um exemplo na prática porfa, assim é melhor. Obg. abs.
  25. Like
    jfaguiar reacted to kapiaba in Exemplo em Harbour Boleto   
    Very good!! vc. achou que iria me vencer? kkkkkkkkkkkkkkkkkkkkkkkkk
     

×
×
  • Create New...