Erro de Conversão String
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?
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
Curtidas 0
Melhor post
Igor Castro
15/07/2015
Deu certoo, muito obrigadoo *.*'
era só isso mesmo @Dorivan Sousa
era só isso mesmo @Dorivan Sousa
GOSTEI 1
Mais Respostas
Gabriel Baltazar
08/07/2015
Por que esse cidade e codestado estão entre plique duplo?
GOSTEI 0
Igor Castro
08/07/2015
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
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
GOSTEI 0
Ariel Morgan
08/07/2015
Ainda está difícil de entender o que está fazendo...
Mas vamos lá, qualquer coisa retorna:
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;
GOSTEI 0
Igor Castro
08/07/2015
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
pela chave estrangeira cod_estado isso tudo através de uma Query
GOSTEI 0
Ariel Morgan
08/07/2015
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
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
GOSTEI 0
Gabriel Baltazar
08/07/2015
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';
GOSTEI 0
Igor Castro
08/07/2015
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?
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?
GOSTEI 0
Gabriel Baltazar
08/07/2015
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.
Pois se mesmo assim ainda está dando erro, o problema não está no lookup.
GOSTEI 0
Dorivan Sousa
08/07/2015
-
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....
-
ai usa um ou outro pq se vc olhar o codigo do open nada mais é que active:=true;
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;
GOSTEI 0
Igor Castro
08/07/2015
O tipo do cod_estado Smallint
Banco de dados Firebird
Banco de dados Firebird
GOSTEI 0
Igor Castro
08/07/2015
@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 é?
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 é?
GOSTEI 0
Igor Castro
08/07/2015
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 =)
QCidade.Params.ParamByName('estado').Value := '6';
Tentei esse e ele mostrou só as cidades do estado 6 claro =)
GOSTEI 0
Igor Castro
08/07/2015
Alguém ajuda =(?
GOSTEI 0
Dorivan Sousa
08/07/2015
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);
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);
GOSTEI 0
Igor Castro
08/07/2015
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
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
GOSTEI 0