Dúvida referente à utilização do ComboBox Banco de dados

Delphi

27/04/2004

Olá amigos!
Estou com uma dúvida referente à mostrar os dados da tabela em um ComboBox.
Eu queria mostrar todos os dados de uma tabela em um ComboBox (sem ter que adicionar item por item manualmente), para isso eu usei o DBLookUpComboBox. Só que quando eu mudo de registro da tabela, o valor desse DBLookUpComboBox não altera. Como eu devo proceder?

Obrigado!


Nildo

Nildo

Curtidas 0

Respostas

Sgubert

Sgubert

27/04/2004

Olá Nildo, blz?/

Sou iniciante em delphi, mas já utilizaei, se não me engano, um desses dois componente que citou. dai só ecolhi a tabela, e o campo que queria que listasse e dava certo......Agora, se quando tu seleciona no combo ele ja aponta direto pra tabela eu não se te dizer...

[]´s
Samuel Gubert


GOSTEI 0
Sgubert

Sgubert

27/04/2004

Opa eskeci de uma observação....

Acho que em algum evento do combo vc terá que dar um locate ou executar um query para posicionar no registrio da tabela correspondente ao item selecionado....
Espero que minhas observações possam te ajudar...

[]´s


GOSTEI 0
Nildo

Nildo

27/04/2004

Olá! Obrigado por ajudar, mas...
Se eu utilizar o DBComboBox normal, quando eu mando abrir a lista de itens dele, não mostra todos os registros daquele campo. Mas com o DBLookUpComboBox, Mostra, mas quando eu altero o registro da tabela o valor deste Combo não é alterado.

Você ou alguem saberia me dizer como alterar este valor?
Obrigado!


GOSTEI 0
Sgubert

Sgubert

27/04/2004

Bah infelizmente não tenho como te ajudar.....
Esse DBLookupComboBox não tem uma propriedade do tipo atualizar, refresh, update ou algo parecido??? Talvez resolvesse não é mesmo???
Ah, Nildo, se desse vc poderia me explicar como funciona esse componente e pra que ele serve??, Acho que utilizo ele mas da forma errada e não apra o propósito correto....
Desulpa abusar da tua boa vontade...hehehe
E espero que consiga resolver teu problema...

[]´s
Samuel Gubert


GOSTEI 0
Flaviosan

Flaviosan

27/04/2004

nildo tenta assim para colocar os itens da tabela no combobox:
procedure TForm1.FormCreate(Sender: TObject);
var
   index : Integer;
begin
   ComboBox1.Items.Clear;
   query.Open;
   for index := 0 to (query.RecordCount - 1) do
   begin
      ComboBox1.Items.Add(queryNOMECLI.Value);
      query.Next;
   end;
   query.Close;
end;

Espero ter ajudado.


GOSTEI 0
Nildo

Nildo

27/04/2004

FlavioSan, obrigado, mas este procedimento eu já havia feito e como a tabela contém muitos registros, acaba se tornando um processo muito lento. Já no caso da utilização do DBLookUpComboBox fica muito mais rápido. Mas acho que vou ter que fazer desta forma mesmo, já que não achei uma solução pra esse problema! Então muito obrigado a todos!

[b:808a0fff70]sgubert[/b:808a0fff70], TDBLookupComboBox representa um ComboBox que identifica alguns valores de campos de um DataSet com os valores correspondentes de um outro DataSet, como se fosse fazer a integração visual entre dois DataSets.


GOSTEI 0
Sgubert

Sgubert

27/04/2004

Muito obrigado pela explicação Nildo...

Infelizmente vc acabou me ajudando mais que eu a vc....
Quem sabe na próxima eu possa lhe ajudar não é mesmo...
Muito obrigado e boa sorte ai...

Grande Abraço
Samuel


GOSTEI 0
Nildo

Nildo

27/04/2004

Obrigado! Desejo o mesmo!


GOSTEI 0
Pabhen

Pabhen

27/04/2004

o lookupcombo serve pra fazer tipo um mestre detalhe. As principais propriedades são:

ListSource: Vc liga ao datasource da tabela pai(exemplo- EMPRESA)

ListField: Vc liga ao campo q vc keira q apareça na lista do Lookup(exemplo- NOMEDAEMPRESA)

KeyField: Campo Chave, é o campo q faz o relacionamento com a tabela filha(exemplo- CODIGODAEMPRESA)

DataSource: Vc liga ao datasource da tabela filha(exemplo- FUNCIONARIO)

DataField: Campo Chave, é o campo q faz o relacionamento com a tabela pai(exemplo- CODIGODAEMPRESA); O valor desse campo é vai ser gravado na sua tabela filha.

ps1: O campo CODIGODAEMPRESA tem q estar nas duas tabelas (EMPRESA e FUNCIONARIO) pra fazer o relacionamento mestre-detalhe.

ps2: Se vc já faz o relacionameto das tabelas usando o campo mastersource das mesmas, naum precisa preencher os campos datasource e datafield do Lookup. O mesmo vale para as querys, por exemplo, vc pode fazer o relacionamento entre querys assim:
SELECT * FROM FUNCIONARIO WHERE CODEMPRESA=:CODEMPRESA
para isso funcionar o campo datasource da tabela filha tem q apontar para o datasource da tabelapai.

ps2: Qnd vc mostrar o form (OnShow) vc tem q colocar o seguinte código:
dblookupcombobox.KeyValue:=queryfilha.fieldbyname(´NOMEDOCAMPO´).value;

ps3: naum sei porque qnd se abre o form o valor naum aparece (mas ele tah lá), por isso a gente tem q forçar a aparição do mesmo.

Espero ter ajudado.


GOSTEI 0
POSTAR