Fórum Pesquisa #381137

11/07/2010

0

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

Responder

Posts

11/07/2010

Emerson Nascimento

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

Gostei + 0

12/07/2010

Leandro Santos

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

Gostei + 0

12/07/2010

Leandro Santos

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;
 
Responder

Gostei + 0

12/07/2010

Wilson Junior

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

Espero ter colaborado.
Responder

Gostei + 0

12/07/2010

Carlos Mazzi

Boa... deu certo?
Responder

Gostei + 0

12/07/2010

Leandro Santos

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...
Responder

Gostei + 0

12/07/2010

Marco Salles

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...
Responder

Gostei + 0

12/07/2010

Marco Salles

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      
Responder

Gostei + 0

12/07/2010

Emerson Nascimento

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;
Responder

Gostei + 0

12/07/2010

Leandro Santos

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;
Responder

Gostei + 0

12/07/2010

Leandro Santos

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;
Responder

Gostei + 0

13/07/2010

Emerson Nascimento

isso quer dizer o que?

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

Responder

Gostei + 0

13/07/2010

Leandro Santos

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..
Responder

Gostei + 0

14/07/2010

Emerson Nascimento


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;

Responder

Gostei + 0

14/07/2010

Leandro Santos


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
Responder

Gostei + 0

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

Aceitar