Jump to content
Fivewin Brasil

Luiz Fernando

Membros
  • Posts

    3,368
  • Joined

  • Last visited

  • Days Won

    40

Everything posted by Luiz Fernando

  1. Emotta muito obrigado pelo código acima, e tb pela dica pois estava na duvida aqui de como proceder, vou trabalhar com o padrão ofx, com seu codigo ira ficar facil aqui mudar de banco para banco, vlw. MKYX, obrigado pelo seus toque
  2. Colega até ai tudo bem, mais este formato é diferente, o duro que não consigo achar um padrão, satander EXCEL e PDF, outros esae OFX, estou vendo qual criterio seguir, somente TXT não vi ainda aqui em 4 bancos diferente
  3. Pessoal alguem tem alguma rotina ou o caminho das pedras para fazer ler este arquivo de extrato do banco. Obg
  4. Pelo que entendi ele quer saber o numero de registros do banco de dados e não de uma unica tabela, se for isto desconheço, até dei uma procurada no google para ver se achava algo, mais sem sucesso.
  5. Marcio para colocar negrito, veja se te ajuda Foram apresentados ao <b>ASSINANTE</b> determinados benefícios antes da contratação dos <b>SERVIÇOS DE COMUNICAÇÃO MULTIMÍDIA (SCM)</b> Observe que dentro do texto vc coloca <b> e </b> Abs Luiz Fernando
  6. Perfeito Kleyber, era só para saber mesmo, em caso de update em massa o importante que o campo que estiver no WHERE seja um indexador, dai podemos fazer update de 2mil 5mil registro que não demora nada. Obg Luiz Fernando
  7. Bom dia, colega uso a sqllib, mais se vc tiver algum script para esta finalidade, ira dar certo, pois instrução sql é uma coisa só. Obg Luiz Fernando
  8. Pessoal com a ajuda de alguns colega aqui consegui resolver problema de lentidão no mysql com SELECT e, INSERT , mais com UPDATE sera que tem algum macete. SELECT, no exemplo abaixo busco vários registros de uma unica vez cPedidos := "" for i=1 to len(aBaixas) cPedidos += ANY2SQL( aBaixas[i,1] ) + "," next cPedidos := Left(cPedidos,Len(cPedidos)-1) cSql="SELECT p.duplicat,date_format(p.vencto,'%d/%m/%y'),p.boleto,p.valor,p.cliente,c.razao" cSql+=",p.pago,date_format(p.pagto,'%d/%m/%y')" cSql+=" FROM parcela as p" cSql+=" LEFT JOIN cliente as c on p.cliente = c.cod_client" cSql+=" WHERE p.duplicat IN ("+ cPedidos + ") " INSERT, no exemplo abaixo consigo dar o insert em vários registro indo no banco de dados uma unica vez SQLBeginTrans() * 1 2 3 4 5 6 7 8 9 cSql:="INSERT INTO vendas(pedido,data,cliente,subtotal,desconto,total,encargo,terminal,condicao" * 10 11 12 13 14 15 cSql+=",vendedor,usuario,data1,hora1,operacao,empresa"+")" cSql+="VALUES " for i=1 to len(aVendas) cSql+=" ( "+any2sql(aVendas[i,1])+" ," // 01 cSql+=" "+any2sql(aVendas[i,2])+" ," // 02 cSql+=" "+any2sql(aVendas[i,3])+" ," // 03 cSql+=" "+any2sql(aVendas[i,4])+" ," // 04 cSql+=" "+any2sql(aVendas[i,5])+" ," // 05 cSql+=" "+any2sql(aVendas[i,6])+" ," // 06 cSql+=" "+any2sql(aVendas[i,7])+" ," // 07 cSql+=" "+any2sql(aVendas[i,8])+" ," // 08 cSql+=" "+any2sql(aVendas[i,9])+" ," // 09 cSql+=" "+any2sql(aVendas[i,10])+" ," // 10 cSql+=" "+any2sql(aVendas[i,11])+" ," // 11 cSql+=" SUBSTRING(now(),1,10) ," // 12 cSql+=" SUBSTRING(now(),12,5) ," // 13 cSql+=" "+any2sql(aVendas[i,12])+" ," // 14 cSql+=" "+any2sql(aVendas[i,13])+") " // 15 cSql+=iif( i=len( aVendas), "", "," ) next SqlExecute(cSql) if SQLErrorNO() > 0 fMensagem() return(.f.) endif SqlExecute("commit") SQLRollBack() SQLEndTrans() SQLRefresh() UPDATE, agora aqui como fazer algo para ir no banco uma unica vez ???? SQLBeginTrans() for i=1 to len(aBaixas) cSql:="UPDATE parcela SET" cSql+=" encargo="+any2sql(aBaixas[i,9])+" ," cSql+=" desconto="+any2sql(0)+" ," cSql+=" pagto="+any2sql(aBaixas[i,7])+" ," cSql+=" pago="+any2sql(aBaixas[i,8])+" ," cSql+=" usu_b="+any2sql(cUsuario)+" ," cSql+=" data_b= SUBSTRING(now(),1,10) ," cSql+=" hora_b= SUBSTRING(now(),12,5) ," cSql+=" maq_b="+any2sql(cTerminal)+" ," cSql+=" lotepago="+any2sql(cLote)+" " cSql+=" WHERE duplicat ='"+ALLTRIM(aBaixas[i,1])+"'" sqlexecute(cSql) if SQLErrorNO() > 0 fMensagem() return(.f.) endif next SQLExecute("commit") SQLRollBack() SQLEndTrans() SQLRefresh() Obg Luiz Fernando
  9. Sim Jackson, na hora que gero boleto eu não gravo o digito do nosso numero, dai na hora de gerar o arquivo remessa uso a função da cobrebem, pelo manual do banco vi que o calculo era simples, dai gerei um select que me traz o numero do boleto e já faz o calculo do digito do nosso numero no proprio select conforme o código acima. Abs Luiz Fernando
  10. Pessoal meu problema estava aqui oBoleto := oCBX:DocumentosCobranca:Add() oBoleto:NossoNumero := aBoleto[i,2] oCBX:calcularDadosBoletos() oCBX:GravaArquivoRemessa() nNosso:=substr(oBoleto:NossoNumero,6,8) a cada boleto eu estava usando o recurso da cobrebem para gerar o digito do nosso numero fiz o calculo direto no select cSql:=" SELECT boleto,CASE(11-" cSql+=" MOD(((SUBSTRING(boleto,1,1)*7)+(SUBSTRING(boleto,2,1)*6)+(SUBSTRING(boleto,3,1)*5)+(SUBSTRING(boleto,4,1)*4)+(SUBSTRING(boleto,5,1)*3)+(SUBSTRING(boleto,6,1)*2)),11))" cSql+=" WHEN 0 THEN '0' WHEN 1 THEN '1' WHEN 2 THEN '2' WHEN 3 THEN '3' WHEN 4 THEN '4' WHEN 5 THEN '5' WHEN 6 THEN '6' WHEN 7 THEN '7' WHEN 8 THEN '8' WHEN 9 THEN '9' WHEN 10 THEN '0' WHEN 11 THEN '0' END AS 'mod/11'" cSql+=" FROM boleto" agora gera o arquivo em 40 segundos Obigrado a todos Luiz Fernando
  11. Colega falei com Jackson em off, não tenho como extrair todos dados dentro de um SELECT preciso percorrer mesmo por uma array e montar o arquivo, o lance de quebrar não adianta muito, pois tentei com 1mil e demora proporcional a mesma coisa.
  12. Jackson obrigado pelo retorno, na verdade estes boleto são gerados de uma unica vez e precisa estar no mesmo arquivo remessa, pois ele tem uma sequencia obrigadoria, e o mesmo vai para grafica do banco para eles fazer a impressão por la, tipo agora tenho um lote aqui de 19.962 boletos, se eu gerar o arquivo remessa da forma convencional que costumo geral, vai levar 20 horas, preciso achar um macete. obg Luiz Fernando
  13. Atualizando a informação levou 2 horas e 30 minutos para gerar o arquivo acima, agora preciso gerar outro lote com 18mil, se algum colega tiver alguma dica. Obrigdo
  14. Pessoal alguém aqui gera arquivo remessa com muitos registro , neste exato momento faz uma hora(AINDA NÃO TERMINOU) que estou esperando para gerar uma remessa de 3700 boletos, apenas gravar o arquivo txt sem envolvimento com tabelas vejam o codigo oFile1 = TTxtFile():New( cPath1+"BOLETO\REMESSA\"+marqui ) wlin='0' // 001 a 001 wlin+='1' // 002 a 002 wlin+='REMESSA' // 003 a 009 wlin+='01' // 010 a 011 wlin+='COBRANÇA'+space(7) // 012 a 026 wlin+='00330221756203300152' // 027 a 046 wlin+='EMPRESA TESTE TESTE TESTE TEST' // 047 a 076 wlin+='033' // 077 a 079 wlin+='SANTANDER'+space(6) // 080 a 094 wlin+=strzero(day(date()),2)+strzero(month(date()),2)+RIGHT(STR(YEAR(date()),4),2) // 095 a 100 wlin+=repl('0',16) // 101 a 116 wlin+=space(47) // 117 a 163 wlin+=space(47) // 164 a 210 wlin+=space(47) // 211 a 257 wlin+=space(47) // 258 a 304 wlin+=space(47) // 305 a 351 wlin+=space(34) // 352 a 385 wlin+=space(6) // 386 a 391 wlin+='044' // 392 a 394 wlin+=strzero(nRegistro,6)+chr(13)+chr(10) // 395 a 400 oFile1:PutStr( wlin ) for i=1 to len(aBoleto) nVMulta:=0 nVMulta:=round((aBoleto[i,5]*aCarteira[11])/100,2) oBoleto := oCBX:DocumentosCobranca:Add() oBoleto:NossoNumero := aBoleto[i,2] oCBX:calcularDadosBoletos() oCBX:GravaArquivoRemessa() nNosso:=substr(oBoleto:NossoNumero,6,8) wlin='1' // 001 a 001 wlin+='02' // 002 a 003 wlin+=R_CnpjLienar(aCarteira[20]) // 004 a 017 tratar wlin+='0036' // 018 a 021 tratar wlin+='02237522' // 022 a 029 tratar wlin+='02300372' // 030 a 037 tratar wlin+=aBoleto[i,4]+space(15) // 038 a 062 wlin+=nNosso // 063 a 070 wlin+='000000' // 071 a 076 wlin+=space(1) // 077 a 077 wlin+='0' // 078 a 078 wlin+='0000' // 079 a 082 wlin+='00' // 083 a 084 wlin+=repl('0',13) // 085 a 097 wlin+=space(4) // 098 a 101 wlin+='000000' // 102 a 107 wlin+='5' // 108 a 108 wlin+='01' // 109 a 110 wlin+=aBoleto[i,4] // 111 a 120 wlin+=strzero(day(aBoleto[i,10]),2)+strzero(month(aBoleto[i,10]),2)+RIGHT(STR(YEAR(aBoleto[i,10]),4),2) // 121 a 126 wlin+=strzero(aBoleto[i,5]*100,13) // 127 a 139 wlin+='033' // 140 a 142 wlin+='00000' // 143 a 147 wlin+='05' // 148 a 149 wlin+='N' // 150 a 150 wlin+=strzero(day(aBoleto[i,9]),2)+strzero(month(aBoleto[i,9]),2)+RIGHT(STR(YEAR(aBoleto[i,9]),4),2) // 151 a 156 wlin+='00' // 157 a 158 wlin+='00' // 159 a 160 wlin+=strzero(nVMulta*100,13) // 161 a 173 wlin+='000000' // 174 a 179 wlin+=repl('0',13) // 180 a 192 wlin+=repl('0',13) // 193 a 205 wlin+=repl('0',13) // 206 a 218 if len(alltrim(aBoleto[i,20])) <= 14 // 219 a 220 wlin+='01' else wlin+='02' endif wlin+=R_CnpjLienar(aBoleto[i,20]) // 221 a 234 wlin+=aBoleto[i,8] // 235 a 274 wlin+=aBoleto[i,12] // 275 a 314 wlin+=padr(aBoleto[i,15],12) // 315 a 326 wlin+=substr(aBoleto[i,18],1,5) // 327 a 331 wlin+=substr(aBoleto[i,18],7,3) // 332 a 334 wlin+=substr(aBoleto[i,16],1,15) // 335 a 349 wlin+=aBoleto[i,17] // 350 a 351 wlin+=space(30) // 352 a 381 wlin+=space(1) // 382 a 382 wlin+='I' // 383 a 383 wlin+='90' // 384 a 385 tratar wlin+=space(6) // 386 a 391 wlin+='00' // 392 a 393 wlin+=space(1) // 394 a 394 nRegistro++ wlin+=strzero(nRegistro,6)+chr(13)+chr(10) // 395 a 400 oFile1:PutStr( wlin ) nTotal+=aBoleto[i,5] next nRegistro++ wlin='9' wlin+=strzero(nRegistro,6) wlin+=strzero(nTotal*100,13) wlin+=repl('0',374) wlin+=strzero(nRegistro,6)+chr(13)+chr(10) oFile1:PutStr( wlin ) oFile1:End()
  15. Ariston vou procurar em meus backup antigo, pq deste 2011 qdo passei para mysql não mexo mais com ADS, com certeza algum projeto irei ter sim, dai retorno aqui. mais acima vc perguntou se tem exemplo de cadastro, veja bem não muda nada tudo igual, vc ira colocar umas 4 linhas do inicio do sistema, usar o rddads no lugar do rddcdx, e nos relatorios ou browse que exige filtro, vc ira aplicar um comando proprio de filtro do ads, e isto vc vai fazendo conforme vai enxergando coisas que principalmente em rede o sistema fica lento. Retorno assim que achar algum projeto antigo que tenha o uso do ADS, mais lembrando que aqui no forum tem muito material sobre o assunto Abs Luiz Fernando
  16. Para quem ainda esta em DBF e tem problema de lentidão, perca dois dias apenas em busca aqui no forum sobre ADS, eu nunca entendi o pq do pessoal não usar, lembro que em 2009 ia perder clientes potencias por problema de lentidão em rede com relatorios, alguns chegava a levar ate 15 minutos, com o ADS caiu para coisa de segundos, as mudança nos codigo fonte são retículas de tão simples. o desempenho é mesma coisa se tiver usando banco de dados relacional. Luiz Fernando
  17. somente uma conclusão final 1) antes de mudar para forma que o Evandro passou geração de mil boletos 4 tabelas envolvida na operação, duração 47 minutos 2) mudando toda logica para utilizar da forma passado pelo Evandro geração de mil boletos 4 tabelas envolvida na operação, duração 2 minutos obs: agora pronto para gerar 42 mil boletos de uma unica vez, muita gente diz que passou pro mysql e ficou lento, pode ter certeza que é query indevida. Evandro mais uma vez obrigado pela ajuda. agora no update sera que não tem como fazer algo igual, tentei assim no codigo abaixo mais da erro SQLBeginTrans() cSql:="UPDATE parcela SET" for i=1 to len(aParcela) cSql+=" boleto ="+any2sql(aParcela[i,16])+" " cSql+=" WHERE duplicat ='"+aParcela[i,3]+"'" cSql+=iif( i=len( aParcela), "", "'" ) next sqlexecute(cSql) if SQLErrorNO() > 0 fMensagem() endif SqlExecute("commit") SQLRollBack() SQLEndTrans() SQLRefresh()
  18. comecei em 1990 num xt286, lembro que colocava o sistema para compilar e ia jantar fazer outras coisas enquanto ele gerava o exe, lembro até o valor que paguei mil dólares, aquilo era o máximo na época rsrsrs Abs Luiz Fernando
  19. Vlw Fladimir acredito que ira servir sim, obrigado. Luiz Fernando
  20. Alguém teria um modelo de fr3 para nota de serviço municipal, caso sim e poder disponiblilizar empresoft@globo.com Obrigado Luiz Fernando
  21. Sempre fiquei nesta duvida, muito tempo atras diziam que ate 5 GB era free, hoje tenho clientes com base de mais de 10 GB, em que momento terei que pagar. Luiz Fernando
  22. Isto vindo logo de vc Evandro rsrsrs, realmente não entendi a falta do USE TABELA no que dificulta. Luiz Fernando
  23. Pessoal preciso de um soft que atenda frigorifico, que tenha o controle de desossa suino, aonde podemos apurar o custo de cada corte, caso alguém já tiver pronto e pode me passar um orçamento de uma licença empresoft@globo.com Luiz Fernando
  24. Entendi, vou quebrar aqui em cada 3mil então, para não ter problemas, Evandro valeu pelas dicas. Abs Luiz Fernando
  25. Evandro fiz os teste aqui com 100 insert e realmente ficou bem mais rápido, muito obrigado pela dica. Pode ser que tenha de dividir em uns 3 ou 4. só não entendi isto, pq terei que dividir em 3 ou 4 Obrigado Luiz Fernando
×
×
  • Create New...