Tratando a demora na consulta do CNPJ/CPF usando componente ACBR
10/12/2015
0
Bom dia
Gostaria da ajuda dos colegas
estou fazendo uma aplicação simples de cadastro de clientes e nela ao digitar um CNPJ/CPF é possível consultar esse CNPJ/CPF com o ACBr, o detalhe é que nem sempre o site da receita ou a internet esta 100% e isso deixa a tela de consulta congelada esperando a resposta para preencher os campos
[img]http://arquivo.devmedia.com.br/forum/imagem/447550-20151210-113859.png[/img]
essa é a tela para consultar o CNPJ/CPF, as vezes o captcha não carrega ou o captcha carrega mais ao clicar no botão consultar a tela congela, quero tratar os dois problemas
segue o código do form de consulta CNPJ/CPF
unit UntConsCNPJ;
interface
uses
PNGImage,
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, UntFormModal, ACBrSocket,
ACBrConsultaCNPJ, Vcl.ExtCtrls, Vcl.Mask, Vcl.StdCtrls, ACBrBase,
ACBrEnterTab, System.Actions, Vcl.ActnList, Vcl.Buttons, System.UITypes;
type
TfrmConsCNPJ = class(TFormModal)
Timer1: TTimer;
ACBrConsultaCNPJ1: TACBrConsultaCNPJ;
Panel2: TPanel;
Panel4: TPanel;
Label3: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
EdtRazaoSocial: TEdit;
EdtEndereco: TEdit;
EdtNumero: TEdit;
EdtComplemento: TEdit;
EdtBairro: TEdit;
EdtCidade: TEdit;
EdtUF: TEdit;
EdtCEP: TEdit;
EdtSituacao: TEdit;
EdtFantasia: TEdit;
Label1: TLabel;
EdtCNPJ: TMaskEdit;
Label14: TLabel;
EdtCaptcha: TEdit;
ButBuscar: TBitBtn;
Image1: TImage;
LabAtualizarCaptcha: TLabel;
procedure LabAtualizarCaptchaClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure ButBuscarClick(Sender: TObject);
procedure ACtConfirmaExecute(Sender: TObject);
procedure EdtCNPJKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
var segundos : integer;
public
{ Public declarations }
end;
var
frmConsCNPJ: TfrmConsCNPJ;
implementation
{$R *.dfm}
uses Untfuncoes;
//Yuri
procedure TfrmConsCNPJ.ACtConfirmaExecute(Sender: TObject);
begin
if ((EdtRazaoSocial.Text) = '') then
begin
MessageDlg('Realize a consulta antes de exportar os dados !', mtError, [mbOK],0);
exit;
end
else
if ((EdtSituacao.Text) <> 'ATIVA') then
begin
MessageDlg('Este CNPJ não está ativo na RECEITA FEDERAL !', mtError, [mbOK],0);
exit;
end;
inherited;
ModalResult:= mrOk;
end;
procedure TfrmConsCNPJ.ButBuscarClick(Sender: TObject);
var
I: Integer;
begin
if EdtCaptcha.Text <> '' then
begin
if ACBrConsultaCNPJ1.Consulta(EdtCNPJ.Text, EdtCaptcha.Text) then
begin
EdtRazaoSocial.Text := ACBrConsultaCNPJ1.RazaoSocial;
EdtFantasia.Text := ACBrConsultaCNPJ1.Fantasia;
EdtEndereco.Text := ACBrConsultaCNPJ1.Endereco;
EdtNumero.Text := ACBrConsultaCNPJ1.Numero;
EdtComplemento.Text := ACBrConsultaCNPJ1.Complemento;
EdtBairro.Text := ACBrConsultaCNPJ1.Bairro;
EdtComplemento.Text := ACBrConsultaCNPJ1.Complemento;
EdtCidade.Text := ACBrConsultaCNPJ1.Cidade;
EdtUF.Text := ACBrConsultaCNPJ1.UF;
EdtCEP.Text := ACBrConsultaCNPJ1.CEP;
EdtSituacao.Text := ACBrConsultaCNPJ1.Situacao;
end;
end
else
begin
ShowMessage('É necessário digitar o captcha.');
EdtCaptcha.SetFocus;
end;
inherited;
end;
procedure TfrmConsCNPJ.EdtCNPJKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
campo_numerico(key); // Função que permite apenas números
end;
procedure TfrmConsCNPJ.LabAtualizarCaptchaClick(Sender: TObject);
var
Stream: TMemoryStream;
ImgArq: String;
begin
Stream := TMemoryStream.Create;
try
ACBrConsultaCNPJ1.Captcha(Stream);
ImgArq := ExtractFilePath(ParamStr(0))+PathDelim+'captch.png';
Stream.SaveToFile( ImgArq );
Image1.Picture.LoadFromFile( ImgArq );
EdtCaptcha.Clear;
EdtCaptcha.SetFocus;
finally
Stream.Free;
end;
inherited;
end;
procedure TfrmConsCNPJ.Timer1Timer(Sender: TObject);
begin
inherited;
Timer1.Enabled:= False;
LabAtualizarCaptchaClick(LabAtualizarCaptcha);
EdtCaptcha.SetFocus;
end;
end.
Gostaria da ajuda dos colegas
estou fazendo uma aplicação simples de cadastro de clientes e nela ao digitar um CNPJ/CPF é possível consultar esse CNPJ/CPF com o ACBr, o detalhe é que nem sempre o site da receita ou a internet esta 100% e isso deixa a tela de consulta congelada esperando a resposta para preencher os campos
[img]http://arquivo.devmedia.com.br/forum/imagem/447550-20151210-113859.png[/img]
essa é a tela para consultar o CNPJ/CPF, as vezes o captcha não carrega ou o captcha carrega mais ao clicar no botão consultar a tela congela, quero tratar os dois problemas
segue o código do form de consulta CNPJ/CPF
unit UntConsCNPJ;
interface
uses
PNGImage,
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, UntFormModal, ACBrSocket,
ACBrConsultaCNPJ, Vcl.ExtCtrls, Vcl.Mask, Vcl.StdCtrls, ACBrBase,
ACBrEnterTab, System.Actions, Vcl.ActnList, Vcl.Buttons, System.UITypes;
type
TfrmConsCNPJ = class(TFormModal)
Timer1: TTimer;
ACBrConsultaCNPJ1: TACBrConsultaCNPJ;
Panel2: TPanel;
Panel4: TPanel;
Label3: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
EdtRazaoSocial: TEdit;
EdtEndereco: TEdit;
EdtNumero: TEdit;
EdtComplemento: TEdit;
EdtBairro: TEdit;
EdtCidade: TEdit;
EdtUF: TEdit;
EdtCEP: TEdit;
EdtSituacao: TEdit;
EdtFantasia: TEdit;
Label1: TLabel;
EdtCNPJ: TMaskEdit;
Label14: TLabel;
EdtCaptcha: TEdit;
ButBuscar: TBitBtn;
Image1: TImage;
LabAtualizarCaptcha: TLabel;
procedure LabAtualizarCaptchaClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure ButBuscarClick(Sender: TObject);
procedure ACtConfirmaExecute(Sender: TObject);
procedure EdtCNPJKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
var segundos : integer;
public
{ Public declarations }
end;
var
frmConsCNPJ: TfrmConsCNPJ;
implementation
{$R *.dfm}
uses Untfuncoes;
//Yuri
procedure TfrmConsCNPJ.ACtConfirmaExecute(Sender: TObject);
begin
if ((EdtRazaoSocial.Text) = '') then
begin
MessageDlg('Realize a consulta antes de exportar os dados !', mtError, [mbOK],0);
exit;
end
else
if ((EdtSituacao.Text) <> 'ATIVA') then
begin
MessageDlg('Este CNPJ não está ativo na RECEITA FEDERAL !', mtError, [mbOK],0);
exit;
end;
inherited;
ModalResult:= mrOk;
end;
procedure TfrmConsCNPJ.ButBuscarClick(Sender: TObject);
var
I: Integer;
begin
if EdtCaptcha.Text <> '' then
begin
if ACBrConsultaCNPJ1.Consulta(EdtCNPJ.Text, EdtCaptcha.Text) then
begin
EdtRazaoSocial.Text := ACBrConsultaCNPJ1.RazaoSocial;
EdtFantasia.Text := ACBrConsultaCNPJ1.Fantasia;
EdtEndereco.Text := ACBrConsultaCNPJ1.Endereco;
EdtNumero.Text := ACBrConsultaCNPJ1.Numero;
EdtComplemento.Text := ACBrConsultaCNPJ1.Complemento;
EdtBairro.Text := ACBrConsultaCNPJ1.Bairro;
EdtComplemento.Text := ACBrConsultaCNPJ1.Complemento;
EdtCidade.Text := ACBrConsultaCNPJ1.Cidade;
EdtUF.Text := ACBrConsultaCNPJ1.UF;
EdtCEP.Text := ACBrConsultaCNPJ1.CEP;
EdtSituacao.Text := ACBrConsultaCNPJ1.Situacao;
end;
end
else
begin
ShowMessage('É necessário digitar o captcha.');
EdtCaptcha.SetFocus;
end;
inherited;
end;
procedure TfrmConsCNPJ.EdtCNPJKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
campo_numerico(key); // Função que permite apenas números
end;
procedure TfrmConsCNPJ.LabAtualizarCaptchaClick(Sender: TObject);
var
Stream: TMemoryStream;
ImgArq: String;
begin
Stream := TMemoryStream.Create;
try
ACBrConsultaCNPJ1.Captcha(Stream);
ImgArq := ExtractFilePath(ParamStr(0))+PathDelim+'captch.png';
Stream.SaveToFile( ImgArq );
Image1.Picture.LoadFromFile( ImgArq );
EdtCaptcha.Clear;
EdtCaptcha.SetFocus;
finally
Stream.Free;
end;
inherited;
end;
procedure TfrmConsCNPJ.Timer1Timer(Sender: TObject);
begin
inherited;
Timer1.Enabled:= False;
LabAtualizarCaptchaClick(LabAtualizarCaptcha);
EdtCaptcha.SetFocus;
end;
end.
Emanuel Gonçalves
Curtir tópico
+ 0
Responder
Posts
10/12/2015
Emanuel Gonçalves
[img]http://arquivo.devmedia.com.br/forum/imagem/447550-20151210-120338.png[/img]
esse é o erro que gostaria de tratar
esse é o erro que gostaria de tratar
Responder
Clique aqui para fazer login e interagir na Comunidade :)