Ir para conteúdo
  • Cadastre-se

Rodrigo Cardilo

Membro Pro Verificado
  • Total de ítens

    268
  • Registro em

  • Última visita

Tudo que Rodrigo Cardilo postou

  1. @EMBarbosa concordo plenamente com você. Quanto tentei usar o profiler confesso que não entendi muito o funcionamento. E só mostrou resultados para a ntdll. Não achei nada sobre o assunto no google e por isso não insisti. Fiz vários testes. Por exemplo: Numa tabela com 500 registros não tenho problema algum de lentidão. Quando faço uma consulta o retorno dos registros também é muito mais rápido que no obsoleto DBExpress. Porém, na principal tabela do meu sistema que é a de vendas e onde eu preciso de maior agilidade está acontecendo isso. Tenho uma outra tabela com 500000 registros que também acontece o mesmo problema. Outro teste que fiz foi uma conexão direta, sem Datasnap. As coisas mudam. A gravação é bem mais rápida. Por isso postei ajuda aqui pois não sei se muda alguma coisa no Datasnap. Comecei a testar outras alternativas aqui e se puderem me dar sugestões eu agradeço desde já.
  2. @EMBarbosa eu tentei usar.. Mas não mostrou nenhuma novidade. Confesso que não sei usar a ferramenta direito mas, como te disse antes, é no applyupdates que a coisa trava. Eu já fiz um teste com o sql direto (INSERT INTO......) e aí funciona bem mais rápido. Mas aí vou ter que abandonar o clientdataset e é quase impossível modificar essa estrutura toda. Estou pensando em voltar pro DbExpress ou Unidac, segundo relatos de outros que tiveram problema parecido. Lembrando que minha aplicação cliente utiliza DATASNAP. Gostei muito do Firedac mas com essa lentidão tá complicado.
  3. @EMBarbosaInfelizmente não sei usar nenhum dos profiles. Mas utilizando o POG (Programação orientado a gambiarra) eu achei o momento da lentidão. Está exatamente no ApplyUpdates. Daí concluí que é realmente não hora de gravar. E tenho certeza que não está vindo nenhum registro pois a tabela abre rapidamente (atualizando que a quantidade de registros da tabela Mestre (Venda) é de 1.600.000 aproximadamente. Estou pensando em abandonar o Firedac
  4. Um resumo da estrutura @EMBarbosa Servidor: Firedac, AdQuery, Provider Cliente Datasnap: ClientDataModule(no caso é a TB10000) e datasource Eu utilizo o Insert mesmo. O packetrecords eu mantenho 0 para não vir registro algum mesmo. Fiz um teste com o DBExpress e a performance é bem melhor.
  5. DM1.TB10000.PacketRecords := 0; DM1.TB10000.Open; Antes de abrir a tabela eu tomo esse cuidado. Utilizo o código acima e depois insiro os dados tanto na tabela mestre (VENDA) como na details (itens). Para gravar, utilizo o código abaixo. DM1.TB10000.POST; DM1.TB10000.APPLYUPDATES(-1); Interessante que antes no DbExpress funcionava bem mais rápido. As consultas e gravação em tabelas com menos registros funciona bem, sem problemas.
  6. Oi amigo, Qual versão do Unidac você está utilizando. Estou com o mesmo problema. Grato
  7. Prezados, Migrei um sistema multi camadas para o Firedac a algum tempo e percebi uma lentidão para gravar em algumas tabelas com muitos registros. Minha estrutura é Servidor de Aplicação com Firedac, Cliente Datasnap utilizando ClientDatamodule. O problema só acontece quando tento gravar uma tabela com mais de 500.000 registros (Tabela de Venda) Alguém já passou por isso e conseguiu alguma solução? Grato desde já,
  8. Também percebi isso e concordo mas, como eu disse anteriormente, eu utilizei um auditor independente que apresentou como possível motivo para advertência por alguns SEFAZ. Achei interessante compartilhar a informação. A alguns meses o SEFAZ/MG notificou um cliente a utilizar a seriação dos documentos fiscais com 3 zeros. Exemplo: Nota 10 Série 1 tem q ser apresentada como Série 001. Parece besteira mas uma discussão com a fiscalização é inútil.
  9. Bom dia, Segue unit corrigida. Aguardo atualização no svn. ACBrEFDBloco_C_Class.pas
  10. A quem possa interessar resolvi mudando a seguinte linha na unit ifthen(FBloco_0.Registro0000.COD_VER > vlVersao111, LFill(VL_ABAT_NT, 0, 2, True), ''); para ifthen(FBloco_0.Registro0000.COD_VER > vlVersao111, LFill(VL_ABAT_NT, 0, 2), ''); Segue anexo arquivo corrigido. ACBrEFDBloco_C_Class.pas
  11. Prezados, Averiguei um problema na geração do registro C170. O campo Vl_ABAT_NT tem que ir zerado (utilizo auditor para conferir os arquivos). Porém ele está indo vazio. Achei essa linha na unit ACBrEFDBloco_C_Class ifthen( FBloco_0.Registro0000.COD_VER > vlVersao111 ,LFill( VL_ABAT_NT, 0, 2,True ),''); Porém já alterei o valor e não funciona. Quando coloco um valor maior que zero ele gera sem problemas. Alguém pode me ajudar como resolvo esse problema? Grato
  12. Ja tentei sim.. Não funciona. :(
  13. Boa tarde amigos, Estou com um seguinte dilema. Criei uma tela de download onde eu não preencho a propriedade fACBrDownload.DownloadNomeArq. Portanto quando eu coloco a propriedade fACBrDownload.DownloadUrl o componente automaticamente salva o arquivo com o mesmo nome do arquivo da url. Eu gostaria de saber se tem como eu pegar o nome do arquivo após o download, ou seja, se eu digitei a url www.cardilo.com/remoto.exe eu queria obter o nome remoto.exe para eu executar automaticamente após o download. Preenchendo a propriedade fACBrDownload.DownloadNomeArq fica fácil, porém como vou deixar o usuário colocar a url nem sempre vou saber qual arquivo ele vai baixar. Segue exemplo do meu código: fACBrDownload.DownloadDest := '.\'; //aqui eu defini pra salvar o arquivo na mesma pasta do executavel fACBrDownload.DownloadUrl := Edit1.Text; //aqui o usuário digita a url fACBrDownload.StartDownload; Obrigado desde já
  14. Boa tarde amigos, Eu acabei de receber a mesma recusa do amigo Fernando pelo Bradesco. Discuti com eles que no Manual (em anexo) não é explícito essa informação do Sequencial na linha 2 porém não tem discussão. Alterei o arquivo na mão e foi aceito perfeitamente. Fiz manualmente a alteração proposta pelo Fernando e não tenho mais problema com o Bradesco. ACBrBancoBradesco.pas 4008-524-0339-mp-operacionais-troca-arquivos-240-posicoes.pdf
  15. Boa tarde amigos, Estou gerando o sped fiscal e o registro 0305 não está sendo gerado. Estou utilizando o código abaixo: with Registro0300New do begin COD_IND_BEM := DM1.TB07100CODIGO.AsString; IDENT_MERC := DM1.TB07100TIPO.Value; DESCR_ITEM := DM1.TB07100DESCRICAO.Value; COD_PRNC := ''; if DM1.TB07100TIPO.Value = 2 then COD_PRNC := DM1.TB07100CODPRINCIPAL.AsString; COD_CTA := DM1.TB07100CODCTA.AsString; NR_PARC := DM1.TB07100PARCELAS.Value; // FILHO with Registro0305New do begin COD_CCUS := DM1.TB07100CODCUSTO.Value; VIDA_UTIL := DM1.TB07100VIDAUTIL.Value; FUNC := DM1.TB07100FUNCAO.Value; end; end; Alguém sabe me dizer se estou fazendo algo errado pois no arquivo não aparece o registro 0305, somente o 0300. Grato desde já
  16. Eu também estava com esse problema. Resolvi assim: ACBrNFe1.SSL.SSLXmlSignLib := xsLibXml2;
  17. Galera de MG, Vou explicar como resolvi. Eu fui no SIARE. Segui os passos do credenciamento conforme explica no manual http://www.sped.fazenda.mg.gov.br/spedmg/export/sites/spedmg/cte/downloads/Manual_Credenciamento_CTe_Julho2017.pdf. Na hora de liberar (tem que esperar as 2 horas) vai perguntar o tipo de modal. Eu marquei rodoviário e CTE-OS. A contabilidade antes só tinha marcado CTE-OS e não estava funcionando. Pode ser coincidência mas agora tá funcionando normalmente. Espero ter ajudado.
  18. Oi amigos, Estou com um problema na emissão de CTE-OS, Até dezembro eu enviava sem problemas. Porém fui enviar hoje e apareceu a mensagem Rejeicao: Versao informada para o modal nao suportada. Eu já conferi o xml de trás pra frente e não achei problema algum. Estou postando caso alguém possa me ajudar, fico agradecido. 0-env-lot.xml 0-pro-lot.xml
  19. Segue como resolvi: (Faça as adaptações ao seu projeto) Eu tenho um procedure onde habilito ou não as propriedades do componente: procedure TFRC_CTE.LerConfiguracao; var Ok: Boolean; StreamMemo: TMemoryStream; begin DM1.ACBrCTe1.Configuracoes.Certificados.NumeroSerie := DM1.TB99840NUMSERIE.Value; DM1.ACBrCTe1.Configuracoes.Certificados.Senha := DM1.TB99840SENHA_CERTIFICADO.Value; case DM1.TB99840FORMAEMISSAOCTE.Value of 1: DM1.ACBrCTe1.Configuracoes.Geral.FormaEmissao := teNormal; 8: DM1.ACBrCTe1.Configuracoes.Geral.FormaEmissao := teSVCSP; end; case DM1.TB99840SALVAR.Value of 0: DM1.ACBrCTe1.Configuracoes.Geral.Salvar := False; 1: DM1.ACBrCTe1.Configuracoes.Geral.Salvar := True; end; // rotina adicionada para salvar pasta mensal DM1.ACBrCTe1.Configuracoes.Arquivos.Salvar := True; DM1.ACBrCTe1.Configuracoes.Geral.Salvar := True; DM1.ACBrCTe1.Configuracoes.WebServices.Salvar := True; DM1.ACBrCTe1.Configuracoes.Arquivos.EmissaoPathCTe := True; DM1.ACBrCTe1.Configuracoes.Arquivos.SepararPorMes := True; DM1.ACBrCTe1.Configuracoes.Arquivos.AdicionarLiteral := True; DM1.ACBrCTe1.Configuracoes.Arquivos.PathSalvar := IncludeTrailingPathDelimiter(DM1.TB99840PATHCTE.Value); DM1.ACBrCTe1.Configuracoes.Arquivos.PathCTe := IncludeTrailingPathDelimiter(DM1.TB99840PATHCTE.Value); DM1.ACBrCTe1.Configuracoes.Arquivos.PathInu := IncludeTrailingPathDelimiter(DM1.TB99840PATHCTE.Value); DM1.ACBrCTe1.Configuracoes.Arquivos.PathEvento := IncludeTrailingPathDelimiter(DM1.TB99840PATHCTE.Value); DM1.ACBrCTe1.Configuracoes.Arquivos.PathSchemas := ExtractFilePath(Application.ExeName) + '\SchemasCte'; DM1.ACBrCTe1.DACTe.PathPDF := PastaMensalCTe(DtInicial, 'PDF'); DM1.ACBrCTe1.Configuracoes.WebServices.UF := DMG.TB99100UF.Value; DM1.ACBrCTe1.Configuracoes.WebServices.Ambiente := StrToTpAmb(Ok, DM1.TB99840AMBIENTECTE.AsString); if DM1.ACBrCTe1.DACTe <> nil then begin DM1.ACBrCTe1.DACTe.Logo := DM1.TB99840LOGO.Value; DM1.ACBrCTeDACTeRL1.Logo := DM1.TB99840LOGO.Value; case DM1.TB99840DACTE.Value of 1: DM1.ACBrCTe1.DACTe.TipoDACTe := tiRetrato; 2: DM1.ACBrCTe1.DACTe.TipoDACTe := tiPaisagem; end; case DM1.TB99840VISUALIZADACTE.Value of 0: DM1.ACBrCTe1.DACTe.MostrarPreview := False; 1: DM1.ACBrCTe1.DACTe.MostrarPreview := True; end; end; case DM1.TB99840EMAILAUTO.Value of 0: EmailAuto := False; 1: EmailAuto := True; end; end; Daí criei uma procedure para ativar ou desativar os campos que "atrapalham" o local de salvar o pdf procedure TFRC_CTE.ConfigPDF(Liga: Boolean); begin with DM1.ACBrCTe1 do begin Configuracoes.Arquivos.OrdenacaoPath.Clear; Configuracoes.Arquivos.AdicionarLiteral := Liga; Configuracoes.Arquivos.Salvar := Liga; Configuracoes.Arquivos.SepararPorAno := False; Configuracoes.Arquivos.SepararPorCNPJ := False; Configuracoes.Arquivos.SepararPorDia := False; Configuracoes.Arquivos.SepararPorMes := Liga; Configuracoes.Arquivos.SepararPorModelo := False; end; end; Agora ficou fácil. Toda vez que vou gerar o pdf antes eu chamo a procedure ConfigPDF(False); Depois de gerar o pdf eu chamo a procedure novamente : ConfigPDF(True) ; Lembrando que pra geração de e-mail deve ser feito a mesma coisa. Espero ter ajudado.
  20. Boa tarde amigos, Atualizei os fontes hoje e estou tentando salvar o pdf. Antes eu fazia da seguinte forma. Dentro da pasta do anomes (201710) eu criava uma pasta PDF e lá salvava o arquivo normalmente. A propriedade pastapdf do dacte ficava por exemplo: C:\Sistema\ArqCte\201710\PDF Isso já bastava para salvar automaticamente nessa pasta Porém depois de atualizar eu continuo alimentando o componente com o mesmo path mas agora salva na seguinte pasta: C:\Sistema\ArqCTE\201710\PDF\CTeOS. Uma alternativa que eu percebi alterar a propriedade AdicionarLiteral para False porém isso vai atrapalhar o local para salvar o xml. Alguém sabe me dizer porque foi mudado isso no componente e como voltar como era antes? Grato
  21. Bom dia amigos, Preciso de programador free-lance com experiência em Delphi e Firebird (Datasnap, Dbxpress, firedac e ACBR) Caso alguém esteja interessado favor entrar em contato pelo skype cardilo ou pelo email [email protected] Obrigado.
  22. Cara, é só seguir esse modelo que funciona. with seg.Add do begin if RadioGroup5.ItemIndex = 0 then respSeg := rsEmitente else respSeg := rsTomadorServico; end; with seg.Add do begin CNPJ := trim(cxTextEdit21.Text); xSeg := copy(trim(cxTextEdit19.Text), 1, 30); //CNPJCPF := trim(cxTextEdit21.Text); nApol := copy(trim(cxTextEdit20.Text), 1, 20); with aver.Add do begin nAver := '9988444'; end; end; Estou enviando sem problema.
  23. sim, isso mesmo
  24. nAver não pode ser zero. Usei a seguinte regra: Na NT 2017.002 há o seguinte: 4. Orientações de Preenchimento Informações da averbação do seguro (modal rodoviário): 1.Em caso de sucesso na comunicação entre transportador e seguradora, o campo número da averbação (nAver) poderá ser preenchido com o protocolo gerado pela seguradora. 2.Em caso de falha na integração entre transportadora e o sistema da seguradora da carga, poderá ser preenchida a tag do número da averbação (nAver) com a sequência 99999.
  25. Estou fazendo dessa maneira. A maioria das seguradoras que não tem o sistema integrado me retornaram dizendo que só geram o numero de averbação no mês subsequente da emissão dos ctes.
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.