Consultar placa de veiculo no site do Detran

23/09/2013

Olá, tenho um cliente Transportador e ele quer que ao cadastrar um veículo novo, somente digite a placa e a partir dela faça uma consulta no site do detran e traga os demais dados preenchidos no form.
Alguém sabe se é possível? Se sim, como proceder.. Obrigado

Rafael Cruz

Melhor resposta

26/09/2013

Não teve ação por que o Yamazack não disse o site que ele tratou, acredito que ele tenha postado com intuito didático, o famoso "Caminho das Pedras"...

Bretas

Responder Citar

Outras Respostas

24/09/2013

Marcão

Rafael, procurei na internet sobre a sua necessidade, e não encontrei nada.
Até onde eu saiba, o Detran não disponibiliza nenhum WebService para esse tipo de consulta.
Não quero te desanimar, mas acho que isso não é possível.
O que você pode fazer para ter certeza é entrar em contato direto com o Detran.

Att,

Marcos
Responder Citar

24/09/2013

Joel Rodrigues

Creio que não seja possível, pois até para consultar direto no site do Detran é preciso informar a placa e o renavan. O DETRAN não deve disponibilizar esse tipo de consulta, pois expõe dados sensíveis.
Acho que esse sonho do cliente você não vai poder realizar.
Responder Citar

24/09/2013

Bretas

Depende do que o Detran da região que vc quer consultar disponibiliza pra consulta!

Por exemplo, o Detran aqui de MT, vc consegue consultar alguns dados do veículo usando a url: [url]http://internet.detrannet.mt.gov.br/ConsultaVeiculo.asp?Placa=&NUMPLACA&Renavam=&NUMRENAVAM[/url], que no seu caso para importar os dados, teria que tratar o HTML gerado pra capturar as informações!
Responder Citar

24/09/2013

Rafael Cruz

Esse cliente usa um programa da seguradora dele que faz essa pesquisa.. Certamente não é delphi mas achei que pudesse haver pra delphi tbm..
Enfim, obrigado
Responder Citar

24/09/2013

Joel Rodrigues

A questão não é nem ser Delphi ou não, mas sim como ele consegue essas informações. Se for de um web service, você pode acessar pelo Delphi, C#, PHP, etc. O "problema" é saber qual é esse serviço que fornece as informações.
Responder Citar

24/09/2013

Yamazack

Senhores, há um bom tempo eu fiz algo similar, mas foi meio 'tenso', o que eu fiz (não tenho o código mais pois perdi o HD do note na época).

Usando um Web Browser, eu abria o site do detran pelo programa em Delphi, em um edit, ele digitava a placa do carro, e esta info ia para o Web Browser, dai era só digitar o captcha e eu conseguia pegar os dados do veiculo, mas tudo via Web Browser/HTML.

Infelizmente não tenho o código, só a logica e como eu fiz e tal..

Um abraço
Responder Citar

24/09/2013

Joel Rodrigues

Tem que ver qual é o DETRAN, pois alguns pedem além da placa, o Renavan, então esse esquema de abrir a página em web browser ou fazer uma requisição e tratar o HTML não funcionaria só com a placa.
Responder Citar

24/09/2013

Rafael Cruz

Senhores, há um bom tempo eu fiz algo similar, mas foi meio 'tenso', o que eu fiz (não tenho o código mais pois perdi o HD do note na época). Usando um Web Browser, eu abria o site do detran pelo programa em Delphi, em um edit, ele digitava a placa do carro, e esta info ia para o Web Browser, dai era só digitar o captcha e eu conseguia pegar os dados do veiculo, mas tudo via Web Browser/HTML. Infelizmente não tenho o código, só a logica e como eu fiz e tal.. Um abraço


Exatamente isso que eu estou procurando..
Uma pena voce nao ter mais o codigo
Responder Citar

24/09/2013

Yamazack

Rafael, achei apenas um backup do .pas que eu havia feito na época, estou desde a hora que comentei aqui buscando isso pra ti, consegui achar, não sei se adianta e tal, mas lá vai :)

unit uFrmPrincipal;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, OleCtrls, SHDocVw, Buttons,
  UrlMon, ShellAPI, WinInet, ActiveX, ComObj, ComCtrls;

type
  TForm2 = class(TForm)
    WebBrowser1: TWebBrowser;
    Panel1: TPanel;
    Edit1: TEdit;
    BitBtn1: TBitBtn;
    Panel2: TPanel;
    EdtRenavam: TLabeledEdit;
    CbxAno: TComboBox;
    Label1: TLabel;
    BitBtn2: TBitBtn;
    Memo1: TMemo;
    BitBtn3: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
    function PreencherForm(WebBrowser: TWebBrowser; FieldName,
      Value: string): Boolean;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.BitBtn1Click(Sender: TObject);
begin
  {Personalizar WEBBrownser}
  with WebBrowser1 do
  begin
    OleObject.document.body.Style.scrollbarFaceColor := '#FF6699';
    OleObject.Document.body.Style.scrollbarTrackColor := '#CCCC99';
    OleObject.document.body.Style.scrollbarHighlightColor := '#99FF99';
    OleObject.document.body.Style.scrollbar3DLightColor := '#6699CC';
    OleObject.Document.body.Style.scrollbarShadowColor := '#6600FF';
    OleObject.document.body.Style.scrollbarDarkShadowColor := '#00CC66';
    OleObject.document.body.Style.scrollbarArrowColor := '#336699';
  end;
end;

procedure TForm2.BitBtn2Click(Sender: TObject);
begin
  EdtRenavam.Text := '77777777';
  PreencherForm(WebBrowser1, 'txtRenavam',EdtRenavam.Text );
  WebBrowser1.Navigate( 'javascript:document.forms["formPrincipal"].submit();' );
end;

procedure TForm2.BitBtn3Click(Sender: TObject);
begin
  WebBrowser1.OleObject.Document.Body.Style.OverflowX := 'hidden';
  WebBrowser1.OleObject.Document.Body.Style.OverflowY := 'hidden';
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  WebBrowser1.Navigate( Edit1.Text);


end;

function TForm2.PreencherForm(WebBrowser: TWebBrowser; FieldName: string; Value: string): Boolean;
var
  i, j, k: Integer;
  Element, SubElement, FormItem: Variant;
  child, child2, child3: TTreeNode;
  root: TTreeNodes;
begin
  Result := False;
  //no form on document
  if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then
  begin
    Exit;
  end;
  //count forms on document
  for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do
  begin
    FormItem := WebBrowser.OleObject.Document.forms.Item(I);

    for j := 0 to FormItem.Length - 1 do
    begin
      try
        //when the fieldname is found, try to fill out
        //Memo1.lines.add(FormItem.Item(j).Name);

        if FormItem.item(J).Type = 'select-one' then
        begin
          FormItem.Item(j).Value := '00';
        end;
        {for k := 0 to FormItem.item(J).Options.Length - 1 do
        begin
          //Memo1.lines.add(FormItem.Item(j).Options.Index[k].Value);
          //FormItem.item(J).Options.Index := 1;
          //FormItem.item[j].Options.selectedIndex := 1;
        end;  }

        if FormItem.Item(j).Name = FieldName then
        begin
          FormItem.Item(j).Value := Value;
          Result := True;
        end;
      except
       // Exit;
      end;
    end;
  end;
end;

end.




Forte abraço e boa sorte!
Responder Citar

25/09/2013

Rafael Cruz

Yamazack, em que versão do Delphi voce fez seu codigo?
Responder Citar

26/09/2013

Rafael Cruz

?
Responder Citar

26/09/2013

Bretas

Rafael, que diferença faz a versão do Delphi? De acordo com a declaração do formulário, só tem componentes nativos do Delphi!

Para desencargo de consciência, eu compilei o código aqui no Delphi XE, não sei se funciona, mas compila!
Responder Citar

26/09/2013

Rafael Cruz

É, já percebi..
Enfim, compilou mas não teve ação nenhuma nos clicks do botão..
Responder Citar

26/09/2013

Joel Rodrigues

Se é de usar um WebBrowser, não seria melhor utilizar um esquema como o que o Bretas citou anteriormente? Fazendo uma requisição e tratando o HTML?
Responder Citar

26/09/2013

Rafael Cruz

É que o de SP não fornece os dados igual o de MT que ele postou..
Achei um site : http://denatran.serpro.gov.br/index2.htm
Estou pesquisando uma rotina pra pegar o html e jogar nos edits...
Responder Citar