Pesquisa

Delphi

11/07/2010

Ola pessoal..   Estou tentando fazer uma pesquisa no meu banco de dados. Pesquisar meus cadastros de transportadoras pela sua UF. minha linha de código ness parte esta na seguinte maneira:

IBQ_pesq.SQL.add ('select * from transportadora t, regiao r');
IBQ_pesq.sql.Add('where t.cod_transportadora=r.cod_transportadora and');
IBQ_pesq.SQL.Add ('r.uf like :pnome');
IBQ_pesq.ParamByName('pnome').AsString:='%'+edit1.text+'%';
IBQ_pesq.Open;
so que quando eu digito alguma coisa dentro da edit, ele me da o seguinte erro...   Project Project.exe raised exception class EIBclienterror with message ' trying to store a string of lenght 3 into a field that can only contain 2'. Process stopped. Use Step or run to continue.
  Sera que alguem poderia me ajudar a resolver esse erro ??   Desde ja agradeço
Leandro Santos

Leandro Santos

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

11/07/2010

a mensagem é clara: o campo UF comporta apenas 2 caracteres e você está informando mais que 2.
GOSTEI 0
Leandro Santos

Leandro Santos

11/07/2010

a mensagem é clara: o campo UF comporta apenas 2 caracteres e você está informando mais que 2.
GOSTEI 0
Leandro Santos

Leandro Santos

11/07/2010

e como faço para resolver esse problema.. Ja tentei retirar o like e os % do codigo, ai ele para de dar erros so que o banco não consegue encontrar as informações, como no seguinte exemplo   IBQ_pesq.SQL.add ('select * from transportadora t, regiao r');
IBQ_pesq.sql.Add('where t.cod_transportadora=r.cod_transportadora and');
IBQ_pesq.SQL.Add ('r.uf = :pnome');
IBQ_pesq.ParamByName('pnome').AsString:=edit1.text;
IBQ_pesq.Open;
 
GOSTEI 0
Wilson Junior

Wilson Junior

11/07/2010

No seu edit1, coloque a propriedade MaxLength como 2, ou seja, ele permitirá incluir apenas 2 caracteres.

Espero ter colaborado.
GOSTEI 0
Carlos Mazzi

Carlos Mazzi

11/07/2010

Boa... deu certo?
GOSTEI 0
Leandro Santos

Leandro Santos

11/07/2010

mas assim, vou explicar mais detalhado pra ficar melhor Na minha tela de pesquisa, eu coloquei tres radiobuttons, onde o primeiro eu pesquiso todos sem restrições, no segundo eu pesquiso por nome e no terceiro eu pesquiso por UF, mas estou usando uma edit só para todas as pesquisas.Então, se eu alterar a maxlenght da edit, quando eu for pesquisas pelo nome, eu so vou conseguir colocar somente 2 digitos nela. Eu teria que dar um jeito te alterar isso em tempo de execução, mas ate agora não encontrei como fazer isso !!! Agradeço muito pela colaboração de vcs...
GOSTEI 0
Marco Salles

Marco Salles

11/07/2010

mas assim, vou explicar mais detalhado pra ficar melhor Na minha tela de pesquisa, eu coloquei tres radiobuttons, onde o primeiro eu pesquiso todos sem restrições, no segundo eu pesquiso por nome e no terceiro eu pesquiso por UF, mas estou usando uma edit só para todas as pesquisas.Então, se eu alterar a maxlenght da edit, quando eu for pesquisas pelo nome, eu so vou conseguir colocar somente 2 digitos nela. Eu teria que dar um jeito te alterar isso em tempo de execução, mas ate agora não encontrei como fazer isso !!! Agradeço muito pela colaboração de vcs...
GOSTEI 0
Marco Salles

Marco Salles

11/07/2010

mas assim, vou explicar mais detalhado pra ficar melhor Na minha tela de pesquisa, eu coloquei tres radiobuttons, onde o primeiro eu pesquiso todos sem restrições, no segundo eu pesquiso por nome e no terceiro eu pesquiso por UF, mas estou usando uma edit só para todas as pesquisas.Então, se eu alterar a maxlenght da edit, quando eu for pesquisas pelo nome, eu so vou conseguir colocar somente 2 digitos nela. Eu teria que dar um jeito te alterar isso em tempo de execução, mas ate agora não encontrei como fazer isso !!! Agradeço muito pela colaboração de vcs...
Mas se este for seu unico problema entao tá fácil   Na hora do edit recebe o foco , verifique qual o RadioButton que esta com o checked igual a True Se for o Relacionado ao Uf coloque oMaxLength igual a Dois , caso nçao seje coloque o MaxLength igual a Zero      
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

11/07/2010

mas assim, vou explicar mais detalhado pra ficar melhor Na minha tela de pesquisa, eu coloquei tres radiobuttons, onde o primeiro eu pesquiso todos sem restrições, no segundo eu pesquiso por nome e no terceiro eu pesquiso por UF, mas estou usando uma edit só para todas as pesquisas.Então, se eu alterar a maxlenght da edit, quando eu for pesquisas pelo nome, eu so vou conseguir colocar somente 2 digitos nela. Eu teria que dar um jeito te alterar isso em tempo de execução, mas ate agora não encontrei como fazer isso !!! Agradeço muito pela colaboração de vcs...
Mas se este for seu unico problema entao tá fácil   Na hora do edit recebe o foco , verifique qual o RadioButton que esta com o checked igual a True Se for o Relacionado ao Uf coloque oMaxLength igual a Dois , caso nçao seje coloque o MaxLength igual a Zero      



não é só isso! é necessário alterar o campo que será pesquisado.


IBQ_pesq.Close;
IBQ_pesq.SQL.Clear;
IBQ_pesq.SQL.add ('select * from transportadora t, regiao r');
IBQ_pesq.sql.Add('where t.cod_transportadora=r.cod_transportadora');

if radiobutton2.checked then // radiobutton por nome
begin
  IBQ_pesq.SQL.Add ('r.nome = :pnome');
  IBQ_pesq.ParamByName('pnome').AsString:='%'+edit1.text+'%';
end;

if radiobutton3.checked then // radiobutton por UF
begin
  IBQ_pesq.SQL.Add ('r.uf = :pnome');
  IBQ_pesq.ParamByName('pnome').AsString:=edit1.text;
end;

IBQ_pesq.Open;
GOSTEI 0
Leandro Santos

Leandro Santos

11/07/2010

mas assim, vou explicar mais detalhado pra ficar melhor Na minha tela de pesquisa, eu coloquei tres radiobuttons, onde o primeiro eu pesquiso todos sem restrições, no segundo eu pesquiso por nome e no terceiro eu pesquiso por UF, mas estou usando uma edit só para todas as pesquisas.Então, se eu alterar a maxlenght da edit, quando eu for pesquisas pelo nome, eu so vou conseguir colocar somente 2 digitos nela. Eu teria que dar um jeito te alterar isso em tempo de execução, mas ate agora não encontrei como fazer isso !!! Agradeço muito pela colaboração de vcs...
Mas se este for seu unico problema entao tá fácil   Na hora do edit recebe o foco , verifique qual o RadioButton que esta com o checked igual a True Se for o Relacionado ao Uf coloque oMaxLength igual a Dois , caso nçao seje coloque o MaxLength igual a Zero      



não é só isso! é necessário alterar o campo que será pesquisado.


IBQ_pesq.Close;
IBQ_pesq.SQL.Clear;
IBQ_pesq.SQL.add ('select * from transportadora t, regiao r');
IBQ_pesq.sql.Add('where t.cod_transportadora=r.cod_transportadora');

if radiobutton2.checked then // radiobutton por nome
begin
  IBQ_pesq.SQL.Add ('r.nome = :pnome');
  IBQ_pesq.ParamByName('pnome').AsString:='%'+edit1.text+'%';
end;

if radiobutton3.checked then // radiobutton por UF
begin
  IBQ_pesq.SQL.Add ('r.uf = :pnome');
  IBQ_pesq.ParamByName('pnome').AsString:=edit1.text;
end;

IBQ_pesq.Open;
Aqui esta o post do meu parametro inteiro.. if (RadioButton3.Checked=true) then begin IBQ_pesq.close; IBQ_pesq.SQL.Clear; IBQ_pesq.SQL.add ('select * from transportadora t, regiao r'); IBQ_pesq.sql.Add('where t.cod_transportadora=r.cod_transportadora and'); IBQ_pesq.SQL.Add ('r.uf like :pnome'); IBQ_pesq.ParamByName('pnome').AsString:='%'+edit1.text+'%'; IBQ_pesq.Open; IBQ_pesq.Locate('nome',edit1.text,[loPartialKey,loCaseInsensitive]); DBGrid1.Enabled:=true; if IBQ_pesq.RecordCount=0 then begin application.Messagebox('Nenhum Registro Encontrado','Aviso',mb_ok+MB_ICONINFORMATION); Edit1.clear; DBGrid1.Enabled:=false; end; END;
GOSTEI 0
Leandro Santos

Leandro Santos

11/07/2010

if (RadioButton3.Checked=true) then begin IBQ_pesq.close; IBQ_pesq.SQL.Clear; IBQ_pesq.SQL.add ('select * from transportadora t, regiao r'); IBQ_pesq.sql.Add('where t.cod_transportadora=r.cod_transportadora and'); IBQ_pesq.SQL.Add ('r.uf like :pnome'); IBQ_pesq.ParamByName('pnome').AsString:='%'+edit1.text+'%'; IBQ_pesq.Open; IBQ_pesq.Locate('nome',edit1.text,[loPartialKey,loCaseInsensitive]); DBGrid1.Enabled:=true; if IBQ_pesq.RecordCount=0 then begin application.Messagebox('Nenhum Registro Encontrado','Aviso',mb_ok+MB_ICONINFORMATION); Edit1.clear; DBGrid1.Enabled:=false; end; END;
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

11/07/2010

isso quer dizer o que?

que a rotina que te foi passada não deu certo?

GOSTEI 0
Leandro Santos

Leandro Santos

11/07/2010

isso quer dizer o que?

que a rotina que te foi passada não deu certo?

        Isso mesmo, pra fazer a pesquisa por nome, cidade, etc.., esse tipo de codigo rola normal, mas ta dando pau na pesquisa por UF, porque no campo UF so aceita 2 caracteres e eu não sei como fazer pra mudar isso em tempo de execução, acho que isso resolveria o problema, num sei. é uma hipótese..
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

11/07/2010


IBQ_pesq.Close;
IBQ_pesq.SQL.Clear;
IBQ_pesq.SQL.add ('select * from transportadora t, regiao r');
IBQ_pesq.sql.Add('where t.cod_transportadora=r.cod_transportadora');

if radiobutton2.checked then // radiobutton por nome
begin
  IBQ_pesq.SQL.Add ('r.nome = :pnome');
  IBQ_pesq.ParamByName('pnome').AsString:='%'+edit1.text+'%';
end;

if radiobutton3.checked then // radiobutton por UF
begin
  IBQ_pesq.SQL.Add ('r.uf = :pnome');
  IBQ_pesq.ParamByName('pnome').AsString:=copy(edit1.text,1,2); <-- veja se resolve
end;

IBQ_pesq.Open;

GOSTEI 0
Leandro Santos

Leandro Santos

11/07/2010


IBQ_pesq.Close;
IBQ_pesq.SQL.Clear;
IBQ_pesq.SQL.add ('select * from transportadora t, regiao r');
IBQ_pesq.sql.Add('where t.cod_transportadora=r.cod_transportadora');

if radiobutton2.checked then // radiobutton por nome
begin
  IBQ_pesq.SQL.Add ('r.nome = :pnome');
  IBQ_pesq.ParamByName('pnome').AsString:='%'+edit1.text+'%';
end;

if radiobutton3.checked then // radiobutton por UF
begin
  IBQ_pesq.SQL.Add ('r.uf = :pnome');
  IBQ_pesq.ParamByName('pnome').AsString:=copy(edit1.text,1,2); <-- veja se resolve
end;

IBQ_pesq.Open;

    Ja tentei esse código, mas se eu utilizar o IBQ_pesq.SQL.Add ('r.uf = :pnome') ao invés de IBQ_pesq.SQL.Add ('r.uf like :pnome'), o meu banco não consegue encontrar as informações
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

11/07/2010

publique seu código e dê exemplos de como você efetua a pesquisa.
GOSTEI 0
Pedro Saraiva.

Pedro Saraiva.

11/07/2010

Programa com códigos fontes? Ola pessoal, você programador que quer um aplicativo exemplo para fins comerciais, tenho uma dica, compre o WinPhar que vem com todos os códigos fontes e faça um programa baseado nele, sim ele também vêm com todos os componentes para instalar, voce além de ganhar um programa complidao, ganha tb os seus códigos fontes e seus componentes. O programa foi desenvolvido em Delphi 7 com banco de dados paradox, e custa apenas 20,00 reais
deem uma olhadinha ai no produto
http://produto.mercadolivre.com.br/MLB-149256966-winphar-2008-sistema-para-farmacias-e-drogarias-_JM
e ente em contato pelo e-mail pedroluissaraiva@yahoo.com.br.!
GOSTEI 0
POSTAR