Re: RES: [delphi-br] Usar serviço do correio para conseguir CEP através da aplic

2007-01-29 Por tôpico Ricardo César Cardoso
Legal amigo! Vou atualizar o CF então pra refletir as alterações que vc fez.

Grato,
Ricardo.

robersonfox [EMAIL PROTECTED] escreveu:  Sim, 
manualmente, a unit está funcionando basicamente do mesmo modo,
 você digita um CEP o programa busca isso no serviço on-line e em
 seguida retorna para os componentes que trabalham com texto, mas
 antes, quando se digitava um CEP incompleto os campos eram preenchidos
 incorretamente, se você ainda não colocou minha alteração faça um
 teste com 32400-000, ele receberá Cidade e Unidade Federativa, porém
 por ocuparem um espaço menor que cidade, logradouro, e UF, o código
 colocava-os em ordens diferentes. Quando um CEP não for encontrado o
 usuário terá que informá-lo ao banco de dados manualmente.
 
 --- Em delphi-br@yahoogrupos.com.br, Ricardo César Cardoso
 [EMAIL PROTECTED] escreveu
 
  MAs com essa alteração que vc está fazendo vc vai completar o BD? Se
 um CEP não estiver lá, ele será inserido?
  
  robersonfox [EMAIL PROTECTED] escreveu:
  Depois de baixar o arquivo, notei que alguns CEP's não estão
   completamente inseridos no BD do correio, um exemplo é o 32400-000,
   para solucionar o problema reescrevi uma parte do código principal,
   vou colocar a unit por completo aqui, é só copiar e colar:
   
   unit Unit1;
   
   interface
 ...
 
 
 
   

 __
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 

[As partes desta mensagem que não continham texto foram removidas]



Re: RES: [delphi-br] Usar serviço do correio para conseguir CEP através da aplic

2007-01-28 Por tôpico Ricardo César Cardoso
MAs com essa alteração que vc está fazendo vc vai completar o BD? Se um CEP não 
estiver lá, ele será inserido?

robersonfox [EMAIL PROTECTED] escreveu:  
Depois de baixar o arquivo, notei que alguns CEP's não estão
 completamente inseridos no BD do correio, um exemplo é o 32400-000,
 para solucionar o problema reescrevi uma parte do código principal,
 vou colocar a unit por completo aqui, é só copiar e colar:
 
 unit Unit1;
 
 interface
 
 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
 Forms,
   StdCtrls, Mask, ComCtrls, ExtCtrls, DB, DBClient, Grids, DBGrids;
 
 type
   TForm1 = class(TForm)
 PageControl1: TPageControl;
 TabSheet1: TTabSheet;
 TabSheet2: TTabSheet;
 Label1: TLabel;
 edtBuscaLogradouro: TMaskEdit;
 btnBuscaLogradouro: TButton;
 EdtBuscaLogradouroCidade: TEdit;
 Label2: TLabel;
 Bevel1: TBevel;
 Button1: TButton;
 Label4: TLabel;
 EdtBuscaLogradouroLogradouro: TEdit;
 memoBuscaLogradouroSource: TMemo;
 Label6: TLabel;
 Label7: TLabel;
 EdtBuscaCEPCidade: TEdit;
 cbbBuscaCEPUF: TComboBox;
 Label8: TLabel;
 cbbBuscaCEPTipoLogradouro: TComboBox;
 Label9: TLabel;
 Label10: TLabel;
 EdtBuscaCEPLogradouro: TEdit;
 btnBuscaCEPs: TButton;
 Button5: TButton;
 Bevel2: TBevel;
 DBGrid1: TDBGrid;
 memoBuscaCEPSource: TMemo;
 cdsCEPs: TClientDataSet;
 DataSource1: TDataSource;
 EdtBuscaLogradouroBairro: TEdit;
 Label11: TLabel;
 cbbBuscaLogradouroUF: TComboBox;
 Label3: TLabel;
 EdtBuscaCEPNumero: TEdit;
 Label5: TLabel;
 cdsCEPsCIDADE: TStringField;
 cdsCEPsLOGRADOURO: TStringField;
 cdsCEPsBAIRRO: TStringField;
 cdsCEPsCEP: TStringField;
 cdsCEPsUF: TStringField;
 procedure Button5Click(Sender: TObject);
 procedure Button1Click(Sender: TObject);
 procedure btnBuscaCEPsClick(Sender: TObject);
 procedure btnBuscaLogradouroClick(Sender: TObject);
   private
 { Private declarations }
   public
 { Public declarations }
   end;
 
 var
   Form1: TForm1;
 
 implementation
 
 uses Query;
 
 {$R *.dfm}
 
 function GeraXMLQuery(Cep: String): String;
 begin
Result := '?xml version=1.0 encoding=utf-8?'+#13#10;
Result := Result + 'QueryPacket
 xmlns=urn:Microsoft.Search.Query'+#13#10;
Result := Result + '  Query'+#13#10;
Result := Result + 'Context'+#13#10;
Result := Result + '  Context'+#13#10;
Result := Result + 'QueryText'+Cep+'/QueryText'+#13#10;
Result := Result + '  /Context'+#13#10;
Result := Result + '  OfficeContext
 xmlns=urn:Microsoft.Search.Query.Office.Context'+#13#10;
Result := Result + 'ApplicationContext'+#13#10;
Result := Result + '  NameMicrosoft Office/Name'+#13#10;
Result := Result + '  Version(11.0.6568)/Version'+#13#10;
Result := Result + '/ApplicationContext'+#13#10;
Result := Result + '  /OfficeContext'+#13#10;
Result := Result + '/Context'+#13#10;
Result := Result + '  /Query'+#13#10;
Result := Result + '/QueryPacket';
 end;
 
 function GeraXMLQueryAvancada(UF, Cidade, TipoLogradouro, Logradouro,
 Numero: String): String;
 begin
Result := '';
if Trim(UF) = '' then
   Abort;
if Trim(Cidade) = '' then
   Abort;
if Trim(TipoLogradouro) = '' then
   Abort;
if Trim(Logradouro) = '' then
   Abort;
if Trim(Numero) = '' then
   Abort;
//
Result := '?xml version=1.0 encoding=utf-8?'+#13#10;
Result := Result + 'QueryPacket
 xmlns=urn:Microsoft.Search.Query'+#13#10;
Result := Result + '  Query'+#13#10;
Result := Result + 'Context'+#13#10;
Result := Result + '  QueryTextLogradouro/QueryText'+#13#10;
Result := Result + '  Requery'+#13#10;
Result := Result + 'ServiceParameters
 xmlns=urn:Microsoft.Search.Office.ServiceParameters'+#13#10;
Result := Result + '  Parameters'+#13#10;
Result := Result + '   
 AdvancedSearchEditUF'+UF+'/AdvancedSearchEditUF'+#13#10;
Result := Result + '   
 
AdvancedSearchEditLocalidade'+Cidade+'/AdvancedSearchEditLocalidade'+#13#10;
Result := Result + '   
 
AdvancedSearchEditTipoLogradouro'+TipoLogradouro+'/AdvancedSearchEditTipoLogradouro'+#13#10;
Result := Result + '   
 
AdvancedSearchEditLogradouro'+Logradouro+'/AdvancedSearchEditLogradouro'+#13#10;
Result := Result + '   
 AdvancedSearchEditNumero'+Numero+'/AdvancedSearchEditNumero'+#13#10;
Result := Result + '  /Parameters'+#13#10;
Result := Result + '/ServiceParameters'+#13#10;
Result := Result + '  /Requery'+#13#10;
Result := Result + '/Context'+#13#10;
Result := Result + 'OfficeContext
 xmlns=urn:Microsoft.Search.Query.Office.Context'+#13#10;
Result := Result + '  ApplicationContext'+#13#10;
Result := Result + '

Re: RES: [delphi-br] Usar serviço do correio para conseguir CEP através da aplic

2007-01-28 Por tôpico robersonfox
Sim, manualmente, a unit está funcionando basicamente do mesmo modo,
você digita um CEP o programa busca isso no serviço on-line e em
seguida retorna para os componentes que trabalham com texto, mas
antes, quando se digitava um CEP incompleto os campos eram preenchidos
incorretamente, se você ainda não colocou minha alteração faça um
teste com 32400-000, ele receberá Cidade e Unidade Federativa, porém
por ocuparem um espaço menor que cidade, logradouro, e UF, o código
colocava-os em ordens diferentes. Quando um CEP não for encontrado o
usuário terá que informá-lo ao banco de dados manualmente.



--- Em delphi-br@yahoogrupos.com.br, Ricardo César Cardoso
[EMAIL PROTECTED] escreveu

 MAs com essa alteração que vc está fazendo vc vai completar o BD? Se
um CEP não estiver lá, ele será inserido?
 
 robersonfox [EMAIL PROTECTED] escreveu:
 Depois de baixar o arquivo, notei que alguns CEP's não estão
  completamente inseridos no BD do correio, um exemplo é o 32400-000,
  para solucionar o problema reescrevi uma parte do código principal,
  vou colocar a unit por completo aqui, é só copiar e colar:
  
  unit Unit1;
  
  interface
...



Re: Re: RES: [delphi-br] Usar serviço do correio para conseguir CEP através da aplic ação

2007-01-25 Por tôpico Ricardo César Cardoso
Obrigado pelo link, Douglas! A aplicação que fiz segue o que foi demonstrada 
aqui e também é iguarl ao demonstrado no artigo. Vou até trocar o WS que tinha 
sido divulgado no começo desta thread pelo que está na matéria.

[]'s
Ricardo.

Douglas Uesato - Depto. de Informática [EMAIL PROTECTED] escreveu:  
Galera,
 
  No dia 22/01 foi incluído um tutorial para utilizar o webservice do
 próprio correio no site da ClubeDelphi, inclusive tem uma aplicação de
 exemplo mostrando como usar o serviço. 
  A matéria pode ser conferida no link abaixo:
 
 http://www.devmedia.com.br/articles/viewcomp.asp?comp=4327
 
  Eu realizei algumas consultas aqui e está tudo perfeito e como o
 webservice é do próprio correio, acredito que a base disponibilizada por
 eles deve estar atualizada.
 
 Atenciosamente,
 Douglas Uesato
 
 
 De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
 nome de Ricardo César Cardoso
 Enviada em: quinta-feira, 25 de janeiro de 2007 10:53
 Para: delphi-br@yahoogrupos.com.br
 Assunto: [SPAM] Re: RES: [delphi-br] Usar serviço do correio para conseguir
 CEP através da aplicação
 
 Bom dia!
 
 Também notei essa defasagem, mas apenas quando o CEP digitado é de uma
 empresa. Nesse caso, adaptei no meu sistema que o usuário entre com as
 informações do endereço não encontrado e assim eu crio a minha própria base.
 
 []'s
 Ricardo.
 
 Jader Ricardo [EMAIL PROTECTED] escreveu: Boa tarde amigos !!!
 
 Criei a pequena aplicação aqui e funcionou corretamente, porém estou com
 algumas dúvidas. Como um amigo da lista até mencionou tem determinados CEP’s
 que não encontramos, ou seja, não estão na base. Então, que base é essa ? É
 a do correios ? É a mais recente ? E se não for a do correios, alguém aqui
 já teve experiência em licenciar a base do correios ?
 
 Atenciosamente,
 
 Jader Ricardo
 
 _ 
 
 De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
 nome de Emerson Cassio
 Enviada em: sábado, 6 de janeiro de 2007 01:17
 Para: delphi-br@yahoogrupos.com.br
 Assunto: Re: [delphi-br] Usar serviço do correio para conseguir CEP através
 da aplicação
 
 Crie um novo Projeto (Delphi 7 em diante)
 
 Salve o projeto e a unit.
 
 Clique File..New...Other
 Selecione a Aba WebServices
 WSDL Importer...Ok
 
 em Location of WSDLFileor URL digite:
 http://www.byjg.
 http://www.byjg.com.br/xmlnuke-php/webservice.php/ws/cep?wsdl
 com.br/xmlnuke-php/webservice.php/ws/cep?wsdl
 Clique Next...Finish
 
 Salve a unit criada com o nome CEP
 
 Selecione o Form Principal do Projeto
 Clique File...Use Unit...Selecione CEP e clique OK.
 
 Adicione no Form o componente HTTPRIO da aba WebServices
 Propriedade WSDLLocation coloque http://www.byjg.
 http://www.byjg.com.br/xmlnuke-php/webservice.php/ws/cep?wsdl
 com.br/xmlnuke-php/webservice.php/ws/cep?wsdl
 Propriedade Service coloque CEPService
 Propriedade Port coloque CEPServicePort
 
 Adicione no Form um Componente Edit e um Botão
 
 De dois Clique no Botão e adicione o seguinte código:
 
 procedure TForm1.Button1Click(Sender: TObject);
 var
 
 ObjSoap : CEPServicePort;
 
 Num : string;
 
 begin
 
 ObjSoap:=HTTPRIO1 as CEPServicePort;
 
 Num:=Edit1.text;
 
 memo1.Lines.Add(ObjSoap.obterLogradouro(Num));
 
 end;
 
 Pronto rode o projeto, digite o cep no Edit tanto faz o formato 7800
 ou 78000-000
 clique o botão e no memo aparecerá o respectivo endereço, bastando usar a
 criatividade para usar da forma que melhor convir.
 
 Codigo completo da Unit Principal
 
 unit Unit1;
 
 interface
 
 uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, InvokeRegistry, StdCtrls, Rio, SOAPHTTPClient;
 
 type
 TForm1 = class(TForm)
 HTTPRIO1: THTTPRIO;
 Button1: TButton;
 Edit1: TEdit;
 Memo1: TMemo;
 procedure Button1Click(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
 
 var
 Form1: TForm1;
 
 implementation
 
 uses cep;
 
 {$R *.dfm}
 
 procedure TForm1.Button1Click(Sender: TObject);
 var
 ObjSoap : CEPServicePort;
 Num : string;
 begin
 ObjSoap:=HTTPRIO1 as CEPServicePort;
 Num:=Edit1.text;
 memo1.Lines.Add(ObjSoap.obterLogradouro(Num));
 end;
 
 end.
 
 
 Codigo Completo da Unit CEP
 
 // 
 //
 // The types declared in this file were generated from data read from the
 // WSDL File described below:
 // WSDL : http://www.byjg.
 http://www.byjg.com.br/xmlnuke-php/webservice.php/ws/cep?wsdl
 com.br/xmlnuke-php/webservice.php/ws/cep?wsdl
 // Encoding : utf-8
 // Version : 1.0
 // (06-01-07 00:54:32 - 1.33.2.5)
 // 
 //
 
 unit cep;
 
 interface
 
 uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;
 
 type
 
 // 
 //
 // The 

Re: RES: [delphi-br] Usar serviço do correio para conseguir CEP através da aplic

2007-01-25 Por tôpico robersonfox
Depois de baixar o arquivo, notei que alguns CEP's não estão
completamente inseridos no BD do correio, um exemplo é o 32400-000,
para solucionar o problema reescrevi uma parte do código principal,
vou colocar a unit por completo aqui, é só copiar e colar:



unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
  StdCtrls, Mask, ComCtrls, ExtCtrls, DB, DBClient, Grids, DBGrids;

type
  TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Label1: TLabel;
edtBuscaLogradouro: TMaskEdit;
btnBuscaLogradouro: TButton;
EdtBuscaLogradouroCidade: TEdit;
Label2: TLabel;
Bevel1: TBevel;
Button1: TButton;
Label4: TLabel;
EdtBuscaLogradouroLogradouro: TEdit;
memoBuscaLogradouroSource: TMemo;
Label6: TLabel;
Label7: TLabel;
EdtBuscaCEPCidade: TEdit;
cbbBuscaCEPUF: TComboBox;
Label8: TLabel;
cbbBuscaCEPTipoLogradouro: TComboBox;
Label9: TLabel;
Label10: TLabel;
EdtBuscaCEPLogradouro: TEdit;
btnBuscaCEPs: TButton;
Button5: TButton;
Bevel2: TBevel;
DBGrid1: TDBGrid;
memoBuscaCEPSource: TMemo;
cdsCEPs: TClientDataSet;
DataSource1: TDataSource;
EdtBuscaLogradouroBairro: TEdit;
Label11: TLabel;
cbbBuscaLogradouroUF: TComboBox;
Label3: TLabel;
EdtBuscaCEPNumero: TEdit;
Label5: TLabel;
cdsCEPsCIDADE: TStringField;
cdsCEPsLOGRADOURO: TStringField;
cdsCEPsBAIRRO: TStringField;
cdsCEPsCEP: TStringField;
cdsCEPsUF: TStringField;
procedure Button5Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure btnBuscaCEPsClick(Sender: TObject);
procedure btnBuscaLogradouroClick(Sender: TObject);
  private
{ Private declarations }
  public
{ Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Query;

{$R *.dfm}

function GeraXMLQuery(Cep: String): String;
begin
   Result := '?xml version=1.0 encoding=utf-8?'+#13#10;
   Result := Result + 'QueryPacket
xmlns=urn:Microsoft.Search.Query'+#13#10;
   Result := Result + '  Query'+#13#10;
   Result := Result + 'Context'+#13#10;
   Result := Result + '  Context'+#13#10;
   Result := Result + 'QueryText'+Cep+'/QueryText'+#13#10;
   Result := Result + '  /Context'+#13#10;
   Result := Result + '  OfficeContext
xmlns=urn:Microsoft.Search.Query.Office.Context'+#13#10;
   Result := Result + 'ApplicationContext'+#13#10;
   Result := Result + '  NameMicrosoft Office/Name'+#13#10;
   Result := Result + '  Version(11.0.6568)/Version'+#13#10;
   Result := Result + '/ApplicationContext'+#13#10;
   Result := Result + '  /OfficeContext'+#13#10;
   Result := Result + '/Context'+#13#10;
   Result := Result + '  /Query'+#13#10;
   Result := Result + '/QueryPacket';
end;

function GeraXMLQueryAvancada(UF, Cidade, TipoLogradouro, Logradouro,
Numero: String): String;
begin
   Result := '';
   if Trim(UF) = '' then
  Abort;
   if Trim(Cidade) = '' then
  Abort;
   if Trim(TipoLogradouro) = '' then
  Abort;
   if Trim(Logradouro) = '' then
  Abort;
   if Trim(Numero) = '' then
  Abort;
   //
   Result := '?xml version=1.0 encoding=utf-8?'+#13#10;
   Result := Result + 'QueryPacket
xmlns=urn:Microsoft.Search.Query'+#13#10;
   Result := Result + '  Query'+#13#10;
   Result := Result + 'Context'+#13#10;
   Result := Result + '  QueryTextLogradouro/QueryText'+#13#10;
   Result := Result + '  Requery'+#13#10;
   Result := Result + 'ServiceParameters
xmlns=urn:Microsoft.Search.Office.ServiceParameters'+#13#10;
   Result := Result + '  Parameters'+#13#10;
   Result := Result + '   
AdvancedSearchEditUF'+UF+'/AdvancedSearchEditUF'+#13#10;
   Result := Result + '   
AdvancedSearchEditLocalidade'+Cidade+'/AdvancedSearchEditLocalidade'+#13#10;
   Result := Result + '   
AdvancedSearchEditTipoLogradouro'+TipoLogradouro+'/AdvancedSearchEditTipoLogradouro'+#13#10;
   Result := Result + '   
AdvancedSearchEditLogradouro'+Logradouro+'/AdvancedSearchEditLogradouro'+#13#10;
   Result := Result + '   
AdvancedSearchEditNumero'+Numero+'/AdvancedSearchEditNumero'+#13#10;
   Result := Result + '  /Parameters'+#13#10;
   Result := Result + '/ServiceParameters'+#13#10;
   Result := Result + '  /Requery'+#13#10;
   Result := Result + '/Context'+#13#10;
   Result := Result + 'OfficeContext
xmlns=urn:Microsoft.Search.Query.Office.Context'+#13#10;
   Result := Result + '  ApplicationContext'+#13#10;
   Result := Result + 'NameMicrosoft Office/Name'+#13#10;
   Result := Result + 'Version(11.0.6568)/Version'+#13#10;
   Result := Result + '  /ApplicationContext'+#13#10;
   Result := Result + '/OfficeContext'+#13#10;
   Result := Result + '  /Query'+#13#10;
   Result := Result + '/QueryPacket';
end;

procedure 

Re: RES: [delphi-br] Usar serviço do correio para conseguir CEP através da aplic

2007-01-08 Por tôpico robersonfox
Parabéns pela grande contribuição