Fórum Erro de Conversão String #525239

08/07/2015

0

Estou tentando filtrar a Cidade pelo Estado em dois DBLookupcombobox

com esse comando no Onexit do estado

QCidade.Close;
QCidade.Active := False;
QCidade.SQL.Clear;
QCidade.SQL.Add('select * from "cidade" where "cidade"."cod_estado" = :estado');
QCidade.Params.ParamByName('estado').Value := DBLEstado.KeyField;
QCidade.Active := True;
QCidade.Open;

só que ao clicar na cidade mostra esse erro

conversion error from string "cod_estado"

alguém me ajuda?
Igor Castro

Igor Castro

Responder

Post mais votado

15/07/2015

Deu certoo, muito obrigadoo *.*'

era só isso mesmo @Dorivan Sousa

Igor Castro

Igor Castro
Responder

Gostei + 1

Mais Posts

09/07/2015

Gabriel Baltazar

Por que esse cidade e codestado estão entre plique duplo?
Responder

Gostei + 0

09/07/2015

Igor Castro

eu peguei esse banco da internet de cidades e estado e ele veio com essas aspas no nome

select * from "cidade"

se eu tirar não funciona =/.


eu mudei o comando para

QCidade.Close;
QCidade.Active := False;
QCidade.SQL.Clear;
QCidade.SQL.Add('select * from "cidade" where "cidade"."cod_estado" = :estado');
QCidade.Params.ParamByName('estado').Value := DBLEstado.KeyValue;
QCidade.Active := True;
QCidade.Open;

aparentemente deu certo só não está filtrando eu conecto a Query no Lookupcombobox

e aparece stackoverflow
Responder

Gostei + 0

09/07/2015

Ariel Morgan

Ainda está difícil de entender o que está fazendo...
Mas vamos lá, qualquer coisa retorna:
QCidade.Close;
QCidade.Active := False;
QCidade.SQL.Clear;
QCidade.SQL.Add('select * from CIDADE where COD_ESTADO = :estado');
QCidade.Params.ParamByName('estado').Value := DBLEstado.KeyField;
QCidade.Active := True;
QCidade.Open;
Responder

Gostei + 0

09/07/2015

Igor Castro

Opa Ariel estou tentando fazer com que ao selecionar no meu DBLookupcombobox o estado ele filtre e me mostre só as cidades pertencentes aquele estado

pela chave estrangeira cod_estado isso tudo através de uma Query
Responder

Gostei + 0

09/07/2015

Ariel Morgan

Opa Ariel estou tentando fazer com que ao selecionar no meu DBLookupcombobox o estado ele filtre e me mostre só as cidades pertencentes aquele estado

pela chave estrangeira cod_estado isso tudo através de uma Query


Você quer selecionar a CIDADE pelo CÓDIGO do ESTADO selecionado no DBLookupComboBox, tudo bem...
QCidade.Close;
QCidade.Active := False;
QCidade.SQL.Clear;
QCidade.SQL.Add('select * from CIDADE where COD_ESTADO =' + DBLEstado.KeyField); 
QCidade.Active := True;
QCidade.Open;


tenta isso qualquer coisa faz primeiro o parâmetro receber o valor e depois ir pro SQL
Responder

Gostei + 0

09/07/2015

Gabriel Baltazar

Amigo tenta isso aqui só pra teste, pode ser que o erro esteja no lookup.

QCidade.SQL.Add('select * from "cidade" where "cidade"."cod_estado" = :estado');
QCidade.Params.ParamByName('estado').AsString := 'RJ';
Responder

Gostei + 0

09/07/2015

Igor Castro

Tentei de tudo infelizmente não consegui =/

Quando vocês vão fazer uma tela de cadastro de cliente por exemplo e querem que ao selecionar o estado no DBLookupcombobox ele filtre as cidades

como vocês fazem?
Responder

Gostei + 0

10/07/2015

Gabriel Baltazar

Amigo, você tentou desse jeito que falei aí em cima, setando o parâmetro na mão?
Pois se mesmo assim ainda está dando erro, o problema não está no lookup.
Responder

Gostei + 0

10/07/2015

Dorivan Sousa

-
qual o tipo do cod_estado? integer ou varchar?
qual o banco de dados?

-
as aspas nos nomes do campos (pelo menos no firebird q eu uso) é pra diferenciar maisculas e minusculas, colocar espaço no nome dos campos, usar palavras reservadas nos nomes das tabelas, campos e etc....

-
QCidade.Active := True;
QCidade.Open; 

ai usa um ou outro pq se vc olhar o codigo do open nada mais é que active:=true;
Responder

Gostei + 0

14/07/2015

Igor Castro

O tipo do cod_estado Smallint
Banco de dados Firebird
Responder

Gostei + 0

14/07/2015

Igor Castro

@Ariel ao tentar esse exemplo

QCidade.Close;
QCidade.Active := False;
QCidade.SQL.Clear;
QCidade.SQL.Add('select * from CIDADE where COD_ESTADO =' + DBLEstado.KeyField);
QCidade.Active := True;


deu column unknown COD_ESTADO

é algo pra relacionar nos componentes não é?
Responder

Gostei + 0

14/07/2015

Igor Castro

QCidade.SQL.Add('select * from "cidade" where "cidade"."cod_estado" = :estado');
QCidade.Params.ParamByName('estado').Value := '6';

Tentei esse e ele mostrou só as cidades do estado 6 claro =)
Responder

Gostei + 0

14/07/2015

Igor Castro

Alguém ajuda =(?
Responder

Gostei + 0

15/07/2015

Dorivan Sousa

voce criou essas tabelas com aspas nos nomes dos campos, sugiro que vc nao utilize assim a menos que vc realmente queria usar o nomes minusculos nas tabelas e campos...

se o projeto nao ta em producao (ou seja nao esta´em algum cliente) remova as tabelas e crie novamente mas nao crie assim:

create tabela "cidades" (
"cod_cidade" integer,
"nom_cidade" varchar(40)
)

faça sem as aspas

create tabela cidades (
cod_cidade integer,
nom_cidade varchar(40)
)


e do jeito que vc fez pegando o keyfield nao tem como funcionar pq o keyfield é o nome do campo e nao o valor dele...

use o KeyValue
assim:
QCidade.SQL.Add('select * from "cidade" where "cidade"."cod_estado" = :estado');
QCidade.Params.ParamByName('estado').Value := DBLEstado.KeyValue;

ou

QCidade.SQL.Add('select * from CIDADE where COD_ESTADO =' + DBLEstado.KeyValue);
Responder

Gostei + 0

15/07/2015

Igor Castro

Muito obrigado pela resposta Dorivan eu vou testar aqui se der certo eu aviso

eu peguei esse banco de cidades e estados da internet e importei pro meu e veio com o nome das tabelas assim

mais vou refazer pra tirar essas aspas
Responder

Gostei + 0

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

Aceitar