Ir para conteúdo
  • Cadastre-se

EMBarbosa

Consultores
  • Total de ítens

    9.337
  • Registro em

  • Última visita

  • Days Won

    117

Tudo que EMBarbosa postou

  1. Você tem razão. Não é uma pergunta sobre os componentes do pacote ACBrDiversos. Mas como é uma pergunta sobre componentes ACBr, estou movendo ela para área de Dúvidas Gerais.
  2. Pessoal, A área de classificados é para oferecer ou requisitar serviços e produtos, sejam baseados ou não no projeto ACBr. Vamos com calma aí...
  3. Adicionei o método CancelaGeracao na revisão 5264. Queira atualizar e testar por favor.
  4. Nem nunca existiu. Existe uma proposta que você (FabioMachado) deve ter visto neste seguinte tópico:
  5. Será que já saiu o Guia Prático?
  6. Com mais informações ficaria mais fácil. Que recurso você está querendo reservar para a porta? Que dispositivo está tomando o recurso?
  7. Não sem mais informações. Por exemplo, indicador de quê? De situação da nota? Da situação de algum dos itens da nota?
  8. Visto que seu código parece estar funcionando, vou dar algumas sugestões. Veja o que acha. Depois de seu parecer, eu posso dar algum novo retorno. Já vou avisando que não tive muito tempo para analisar. procedure TSISHandleException.AppException(Sender:TObject; E:Exception); var Log: TextFile; ErrCode,i,x,y :integer; AConected :boolean; ASource: TComponent; Formulario :TForm; IdentificadorQuery:tstringlist ; IdentificadorForm:tstringlist ; begin {$I-} //Inicialização {Você não precisa fazer esse teste várias vezes como era feito já que vai inicializar a variável Formulario...} if TComponent(sender) is TForm then //---Pegar ... MENU01.Active Formulario := TForm(sender) else Formulario := TForm(TComponent(sender).Owner) ; //Faz Log.... {Sugiro que passe essa parte do código que faz o log para uma procedure separada, talvez dentro desta mesma procedure} AssignFile(Log, FLogFile); if FileExists(FLogFile) then Append(Log) else Rewrite(Log); try WriteLn(Log, 'Exception ocorrida em '+ FormatDateTime('dd" de "mmmm" de "yyyy" às "hh:nn:ss', Now)); WriteLn(Log,'-------------------------------------------------------------------'); WriteLn(Log,'Form.................: '+ Formulario.Name); WriteLn(Log,'Caption do Form......: '+ Formulario.Caption); WriteLn(Log,'-------------------------------------------------------------------'); WriteLn(Log,'Classe da Exception..: '+E.ClassName); WriteLn(Log,'Mensagem da Exception: '+E.Message); if E is EDBEngineError then WriteLn(Log,'Erro : '+inttostr((E as EDBEngineError).Errors[0].ErrorCode)); WriteLn(Log,''); // ShowMessage(E.Message); finally CloseFile(Log); end; //...Log do Exception terminado. //A criação de objetos normalmente fica do lado de fora do bloco Try Finally. IdentificadorQuery := TStringList.Create; IdentificadorForm := TStringList.Create; try //Esse try não precisa englobar a primeira parte do código pois ele é apenas para os stringlists IndentificadorQyery e IndentificadorForm //Esses objetos acabaram de ser criados, então, normalmente, não precisam ser "limpos". //identificadorQuery.Clear ; //identificadorForm.Clear ; //===== TRATAMENTO if E is EDBEngineError then begin AConected := false; {Inicialize a variável apenas quando for necessário, o mais próximo possível do uso. Você não precisaria usá-la se a condição no if logo acima fosse falsa. Então aqui é o melhor lugar} ErrCode := (E as EDBEngineError).Errors[0].ErrorCode; if ErrCode = 13059 then // --> 'Erro não Foi possivel Conectar com o Host' begin while not AConected do begin try //===> reconectando ............ for x := 0 to DM.DATABASE.DataSetCount-1 do begin //ShowMessage(dm.DATABASE.DataSets[x].Owner.Name+'.'+dm.DATABASE.DataSets[x].Name); identificadorQuery.Add(dm.DATABASE.DataSets[x].Name); identificadorForm.Add(dm.DATABASE.DataSets[x].Owner.Name); end; DM.DATABASE.Connected := false ; DM.DATABASE.Connected := true ; AConected := true; {Estude a possibilidade de usar TScreen.Forms ou TScreen.CustomForms para pegar a lista dos forms exibidos atualmente pelo aplicativo.} for i := 0 to Application.ComponentCount-1 do if (Application.Components[i] is TForm) then begin //ShowMessage(TForm(Application.Components[i]).Name); for y := 0 to TForm(Application.Components[i]).ComponentCount-1 do if TForm(Application.Components[i]).Components[y] is TQuery then //ShowMessage(TForm(Application.Components[i]).Components[y].Name); for x := 0 to identificadorQuery.Count-1 do if (TForm(Application.Components[i]).Components[y].Name = identificadorQuery[x]) and (TForm(Application.Components[i]).Components[y].Owner.Name = identificadorForm[x]) then //ShowMessage(identificadorForm[x]+'.'+identificadorQuery[x]); begin //ShowMessage(TForm(Application.Components[i]).Components[y].Owner.Name+'.'+TForm(Application.Components[i]).Components[y].Name); TQuery(TForm(Application.Components[i]).Components[y]).Open; end; end//se existe formulario ... else {Visto que você ligou todos os TQuerys dos forms existentes, você precisa mesmo percorrer os datamodules um por um para encontrar os TQuerys e abri-los?} if (Application.Components[i] is TDataModule) then begin //ShowMessage(TDataModule(Application.Components[i]).Name); for y := 0 to TDataModule(Application.Components[i]).ComponentCount-1 do if TDataModule(Application.Components[i]).Components[y] is TQuery then //ShowMessage(TDataModule(Application.Components[i]).Components[y].Name); for x := 0 to identificadorQuery.Count-1 do if (TDataModule(Application.Components[i]).Components[y].Name = identificadorQuery[x]) and (TDataModule(Application.Components[i]).Components[y].Owner.Name = identificadorForm[x]) then //ShowMessage(identificadorForm[x]+'.'+identificadorQuery[x]); begin //ShowMessage(TDataModule(Application.Components[i]).Components[y].Owner.Name+'.'+TDataModule(Application.Components[i]).Components[y].Name); TQuery(TDataModule(Application.Components[i]).Components[y]).Open; end; end;//se existe formulario ... except On E: Exception do begin ErrCode := (E as EDBEngineError).Errors[0].ErrorCode; if MessageDlg('Cód.Erro :'+inttostr(ErrCode)+' Formulário :'+Formulario.name+' Mensagem: '+E.Message+#13+#10+ 'Deseja tentar se Re-conectar novamente ao Banco de Dados ?', mtConfirmation, [mbYes,MbNo], 0) = mrNo then begin Break; end; end; end; end;// while ;;;; if AConected = false then Application.Terminate; end; end; finally identificadorquery.Free ; identificadorform.Free; end; {$I+} end;
  9. O layout do seu código está bem embolado. Você poderia ter usado a tag code. Ficaria mais fácil de fazer alguma sugestão.
  10. Certo. Talvez seja melhor então passarmos esse método para public. Mas temos que garantir que isso não deixaria nenhuma sujeira nas variáveis internas do componente. Estou voltando ao trabalho esses dias. Vou olhar isso na próxima segunda.
  11. Visto que é para outra empresa crie o seu próprio tópico aqui mesmo na área de classificados. Vou fazer isso desta vez para você, mas da próxima, seria bom que você mesmo o fizesse.
  12. O ajuste fala sobre permissão de emitir NFA ou NFPR "que serão emitidas pelos sistemas eletrônicos próprios das correspondentes Secretarias de Fazenda, disponíveis em seus respectivos endereços eletrônicos".
  13. Não estou com o código dos componentes aqui, então não posso verificar... Mas como disse, até onde me lembro, o método inicializaGeracao deveria limpar... Se não estiver fazendo isso, a gente pode incluir um novo método.
  14. Legal que resolveu seu caso Giuliano. Agradecemos pelo retorno.
  15. Se quiser você mesmo pode pegar o Demo do ACBrSPED e modificá-lo para criar um exemplo para esse novo componente. Daí anexe em um tópico aqui no fórum que a gente analisa e envia para o SVN.
  16. Olá vca_rj, não ofendeu. Acontece que eu, assim como todos moderadores, tenho pouco tempo para participar do fórum. A correria que você está para fazer o PAF-ECF eu também tenho para cumprir requisitos da empresa aqui. Não tenho tempo para florear muito as palavras, então procuro ser bem direto. Como você deve saber, a escrita nem sempre passa o tom da voz que ouviríamos se estivéssemos conversando, o que pode causar mau entendido. Esse é um dos principais motivos que a primeira regra do fórum é: "1 - Assumiremos boa fé". Contudo, você estar disposto a ler o código do componente, dos programas de demonstração e a legislação é primordial. Os usuários mais antigos tendem a ignorar perguntas que são respondidas no manual ou código. E a gente conhece essas perguntas. Como me disse um outro moderador, quando usuários novatos fazem isso é como se dissessem: "Eu tenho uma dúvida. Mas o meu tempo é mais importante que o seu, então procure você a resposta pra mim." Entende o problema? Sei que é difícil, mas com paciência e disposição você vai conseguir. E o fórum é pra tirar suas dúvidas caso fique estagnado em algo. Bom trabalho por aí. abraço.
  17. O problema com o segundo método é que alguém usando sua rotina que faz acesso ao seu banco de dados próprio estaria ajudando a montar um banco de dados com dados de empresas, dados estes providos direto da Receita. Não sei se isso é de alguma forma atrativo, ou se não poderia ter alguma implicação legal. Por exemplo, será que alguma empresa ficaria feliz em expor os clientes e fornecedores dos usuários a essa exposição de dados? Não sei.
  18. Olá vca_rj, Leia no código fonte do ACBrAAC os métodos (functions/procedures) que ele exporta.
  19. Esse retorno e permissão dependerá do ECF. Precisará ler o manual sobre isso. Mas para o PAF-ECF não é permitido como já mencionado.
  20. Basta no ACBrECF você preencher a propriedade ACBrAAC. Daí ele fará as verificações. Não se esqueça no entanto que você deve preencher o arquivo AAC antes. Veja o Demo do AAC para saber como fazer isso.
  21. Olá, Ficamos felizes em saber que tem interesse em contribuir para o ACBr. De um modo geral, para contribuir basta fazer o que fez, a saber, criar um tópico, anexar os arquivos fontes e aguardar a posição dos moderadores/Administradores. Mas só para ter certeza que sua sugestão atinja os objetivos do projeto ACBr, seria bom esclarecer alguns pormenores. Como pretende disponibilizar a DLL? Vai abrir o código fonte dela? Sobre a responsabilidade pelo Banco de Dados de onde as informações são retiradas, a dll faz uso apenas do site da Receita ou faz uso de algum outro site?
  22. Olá Otavio, Que bom que consegiu resolver. Obrigado pelo seu retorno. Bom trabalho por aí.
  23. Não se esqueça de averiguar que esse objeto seja destruído no fim do procedimento. Ou seu projeto vai vazar memória, ou seja, consumir mais memória do que precisa (memory leak). Var Tb:TIbQuery; begin Tb := TIbQuery.Create(Self); try Tb.BufferChunks := 10; Tb.UniDirectional :=True; ......Faz um monte de coisa com Tb ..... finally Tb.Free; end; end;
×
×
  • 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.