Gravar valor de combobox.

Delphi

09/03/2013

Boa noite,

Preciso mais uma vez da ajuda de vocês.
No meu banco tenho um cadastro de CLIENTES que tem um campo ESTADO que é chave estrangeira da TABELA ESTADO.

No meu form carrego todos os estados (as siglas deles) no CB. Só que não consegui fazer com que, ao mandar gravar, ele grave o ID do estado ao invés da sigla.

Como eu faria isso ?

Desde já,
Obrigado
Felipe Ribeiro

Felipe Ribeiro

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

09/03/2013

Rapaz, se não me engano (lembrar é que é difícil), existe uma propriedade SelectedValue no ComboBox.
Se não tiver, você pode pegar a sigla acessando diretamente o dataset ao qual o ComboBox está ligado. Por exemplo:
ALGUMA_COISA = queryEstados.FieldByName('SIGLA').AsString;

Por que isso?
Quando você liga o componente ao DataSource que está ligado ao DataSet, este componente exibe sempre o valor que está selecionado no DataSet, então você pode acessar esse valor diretamente, sem precisar pegar o valor do componente.
Não sei se fui claro.
GOSTEI 0
Marco Salles

Marco Salles

09/03/2013

Boa noite,

Preciso mais uma vez da ajuda de vocês.
No meu banco tenho um cadastro de CLIENTES que tem um campo ESTADO que é chave estrangeira da TABELA ESTADO.

No meu form carrego todos os estados (as siglas deles) no CB. Só que não consegui fazer com que, ao mandar gravar, ele grave o ID do estado ao invés da sigla.

Como eu faria isso ?

Desde já,
Obrigado


var
I: Integer;
begin
ComboBox1.Items.AddObject('Mg',Tobject(Integer(1)));
ComboBox1.Items.AddObject('Sp',Tobject(Integer(2)));
for I := 0 to Pred(ComboBox1.Items.Count) do
Showmessage(inttostr(integer(ComboBox1.Items.Objects[1])));


GOSTEI 0
Felipe Ribeiro

Felipe Ribeiro

09/03/2013

Obrigado pelas dicas.
Problema resolvido.
Acabei decidindo por gravar a própria sigla mesmo..

Abraço.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

09/03/2013

Que bom que deu certo, obrigado pelo retorno.
Eu acabei me enrolando na explicação, pois considerei um lookup e não um combobox comum.
Mas como você resolveu, estou encerrando este tópico.
Abraço.
GOSTEI 0
POSTAR