Fórum Fazer pesquisa em casacata usando tabelas diferentes #426160

15/10/2012

0

Bom dia a todos estou o um problema aparentimente de simples más eu não consegui resolver.. estou com um database que tem infoemações sobre cep´s, então eu tenho quatro tabelas, estado,cidade, bairro e logradouro,gostaria que quando selecionace o estado somente a cidade dakeles estado estariam disponivel para a proxima consulta..tipo

Estado - MG
I
Cidade - Governador Valadares
I
Bairro - Centro
I
Logradouro - Santa Efigenia

Resultado = xxxxx.xx

seria este esquema aí de cima..cada tabela tem um códido ID que identifica cada registro..se alguém poder dar um luz..vlw
Gilmar Moraes

Gilmar Moraes

Responder

Posts

15/10/2012

Gilmar Moraes

estou fazendo o seguinte:

na primeira pesquisa é normal..uso este código


procedure TFCep.Localiza_estado;
begin
with DMCEP.Cds_pescCidade do
begin
Close;
Params[0].AsInteger := DMCEP.Cds_pescEstadoUF_CODIGO.Value;
Open;
end;
end;


depois para localizar a cidade :



procedure TFCep.Localiza_cidade;
begin
with DMCEP.Cds_pescBairro do
begin
Close;
Params[0].AsInteger := DMCEP.Cds_pescCidadeCIDADE_CODIGO.Value;
Open;
end;
end;



Como ele fecha a tabela e abre novament acabo perdendo a pesquisa que fiz anteriormente..
Responder

Gostei + 0

15/10/2012

Alisson Santos

Amigo no caso você prcisa primeiro entender as ligações.
Exemplo:

Estado
SG_ESTADO
NM_ESTADO

Municipio
CD_MUNICIPIO
NM_MUNICIPIO
SG_ESTADO FK

Cep
NR_CEP
NM_LOGRADOURO
NM_BAIRRO
SG_ESTADO FK
CD_MUNICIPIO FK

Você pode primeiro selecionar um estado, e quando esse estado for selecionado vai trazer só os municipios com esse estado
qryMunicipio.Close;
qryMunicipio.ParamByName('sg_estado').AsString := dbcmbxSG_UF.Text;
qryMunicipio.Open;

Esse comando que coloquei acima vai trazer para você no campo de municipio só o que pertecerem a esse estado, e assim por diante.
Se aplicar esse código no municipio vai trazer só os ceps relacionado a ele.

Espero ter auxiliado.

Qualquer duvida coloca a estrutura que eu faço um exemplo para você
Responder

Gostei + 0

15/10/2012

Gilmar Moraes

Amigo no caso você prcisa primeiro entender as ligações.
Exemplo:

Estado
SG_ESTADO
NM_ESTADO

Municipio
CD_MUNICIPIO
NM_MUNICIPIO
SG_ESTADO FK

Cep
NR_CEP
NM_LOGRADOURO
NM_BAIRRO
SG_ESTADO FK
CD_MUNICIPIO FK

Você pode primeiro selecionar um estado, e quando esse estado for selecionado vai trazer só os municipios com esse estado
qryMunicipio.Close;
qryMunicipio.ParamByName('sg_estado').AsString := dbcmbxSG_UF.Text;
qryMunicipio.Open;

Esse comando que coloquei acima vai trazer para você no campo de municipio só o que pertecerem a esse estado, e assim por diante.
Se aplicar esse código no municipio vai trazer só os ceps relacionado a ele.

Espero ter auxiliado.

Qualquer duvida coloca a estrutura que eu faço um exemplo para você


É o seguinte, minha tabelas estã organizadas desta forma..

Tabela Estado:
Nome da tabela chama UF
os campos:
UF_CODIGO
UF_SIGLA (uso este campo para busca)
UF_DESCRICAO
Tabela Cidade
nome da tabela chama CIDADE
os campos:
UF_CODIGO (que recebe o campo UF_CODIGO da tabela UF)
CIDADE_CODIGO
CIDADE_DESCRICAO (uso este campo para busca)
eu uso este código para fixar o registro que eu quero

procedure TFCep.Localiza_bairro;
begin
  with DMCEP.Cds_PescEndereco do
    begin
      Close;
      Params[0].AsInteger :=  DMCEP.Cds_PescBairroBAIRRO_CODIGO.Value;
      Open;
    end;
end;


neste momento tenho funcionando, más quando faço a pesquisa referente a cidade que teoricamente já estão separado pelo estado aí a pesquisa busca toda a tabela novamente..

uso este código para fazer a busca da cidade e é neste codigo que está o propblema
  DMCEP.Cds_pescCidade.Close;
  DMCEP.Cds_pescCidade.CommandText:='Select * from CIDADE where CIDADE_DESCRICAO like' + QuotedStr(EdtPesquisa.Text + '%');
  DMCEP.Cds_pescCidade.open;


o close fecha a tabela e com isso perde a busca feita acima..
Responder

Gostei + 0

16/10/2012

Marcos Iwazaki

vc esta dizendo que qdo vc executa
o .close do cidade
ele fecha tbm o endereço?

Não entendi direito o problema.
Responder

Gostei + 0

16/10/2012

Alisson Santos

Vou analisar corretamente e fazer uns teste e posto o resultado.
Responder

Gostei + 0

16/10/2012

Alisson Santos

Amigo efetuei alguns testes e notei que funcionou corretamente como o que passou e ele faz o filtro correto.

O que quero pedir para você é a select que está passando para montar a pesquisa por bairro.
Se puder me passar isso posso verificar.
Responder

Gostei + 0

16/10/2012

Gilmar Moraes

Amigo efetuei alguns testes e notei que funcionou corretamente como o que passou e ele faz o filtro correto.

O que quero pedir para você é a select que está passando para montar a pesquisa por bairro.
Se puder me passar isso posso verificar.


deixa te expliar omo funciona o meu sistema aki..coisa bem boba mesmo..imagine um form com 4 edits (estado, cidade bairro e logradouro)que vão receber apenas valores, e ao lado destes edits coloquei um speedbuton para fazer a pesquisa, neste botão ao clicar ele aprece um outro form com uma busca composo de um edit um buton para iniciar a pesquisa e um dbgrid para mostar o resultado da pesquisa..quando faço a pesquisa e encontro o resultado clico no registro e este lança no form anterior o resultado da pesquisa e junto com ela o código do registro encontrado, com este código eu seto a proxima tabela para encontrar a cidade..más este q está sendo o problema quando faço a busca ele está perdendo o código e fazendo a busca total na tabela...
Responder

Gostei + 0

16/10/2012

Gilmar Moraes

Amigo efetuei alguns testes e notei que funcionou corretamente como o que passou e ele faz o filtro correto.

O que quero pedir para você é a select que está passando para montar a pesquisa por bairro.
Se puder me passar isso posso verificar.


deixa te expliar omo funciona o meu sistema aki..coisa bem boba mesmo..imagine um form com 4 edits (estado, cidade bairro e logradouro)que vão receber apenas valores, e ao lado destes edits coloquei um speedbuton para fazer a pesquisa, neste botão ao clicar ele aprece um outro form com uma busca composo de um edit um buton para iniciar a pesquisa e um dbgrid para mostar o resultado da pesquisa..quando faço a pesquisa e encontro o resultado clico no registro e este lança no form anterior o resultado da pesquisa e junto com ela o código do registro encontrado, com este código eu seto a proxima tabela para encontrar a cidade..más este q está sendo o problema quando faço a busca ele está perdendo o código e fazendo a busca total na tabela...


[url]
http://gigatelsoft.deviantart.com/art/Tela-do-programa-332689574?ga_submit=10%3A1350395033
[/url]

tentei colocar a tela do programa, noão sei se deu certo.
Responder

Gostei + 0

17/10/2012

Gilmar Moraes

Bom, estive conversando com um colega ele me disse que posso colocar na mesma linha da busca um código que seta a tabela no código da região tipo:
      Close;
      CommandText:='Select * from CIDADE where UF_CODIGO =' + QuotedStr(DMPesc.Cds_pescEstadoUF_CODIGO.value+ '%')'and  CIDADE_DESCRICAO like' + QuotedStr(EdtPesquisa.Text + '%');
      Open;


será que existe açguma coisa neste porte aí de cima ?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar