Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) > DBLookupCombobox desabilitado... mas Enabled := true&


Fuzileir0

Pergunta

Galera, estou começando com Delphi daê as duvidas ficam aparecendo a cada minuto... a maioria eu resolvo sozinho, mas tem umas que não consigo resolver.

Neste caso, acho que estou errando na ligação com o banco de dados, pois ainda não consegui entender pra que serve cada componente (clientdataset,datasetprovider,datasource) daê misturo tudo e não consigo fazer nenhum componente TDB funcionar.

Bom, o que tá acontecendo é que meu componente fica desabilitado... Não aparece nenhum campo que mandei trazer do BD.

Gostaria que me falassem o que eestou fazendo e errado e se possível me indicar uma documentação onde detalhe pra que serve cada um daqueles componentes que citei ali em cima.

Aqui é o que estou fazendo. Em ordem, criei:

1. Componente de conexão zCon;

2. Componente tabela zTbl;

3. Componente datasource dtSource;

4. DBLookup...

a) No componente 2 (zTbl) configurei para a tabela "usuarios" e conexão com o componente 1 (zCon).

b ) No componente 3 (dtSource) coloquei em "Data Set" o componente 2 (zTbl).

No componente 4 (DBlookupcombobox), em ListSource coloquei dtSource e em ListField coloquei o campo "nome".

O que estou fazendo errado?

Agradeço desde já!

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Neste caso, acho que estou errando na ligação com o banco de dados, pois ainda não consegui entender pra que serve cada componente (clientdataset,datasetprovider,datasource) daê misturo tudo e não consigo fazer nenhum componente TDB funcionar.
Fuzileir0, no geral, você sempre terá a sequência: componente acesso a dados => fonte de dados => conjunto de dados => conexão com banco de dados

traduzindo: componente data-aware => DataSource => DataSet => Connection/Database

Onde os componentes data-aware, são todos aqueles vinculados a um dataset (99,9% das vezes, via o datasource e não diretamente).

Bom, o que tá acontecendo é que meu componente fica desabilitado...
além da propriedade Enabled, este efeito pode ocorrer se os datasets não estarem abertos (o source e list) ou não haver sido definido um dataset para a propriedade ListSource.

Aqui é o que estou fazendo. Em ordem, criei:

1. Componente de conexão zCon;

2. Componente tabela zTbl;

3. Componente datasource dtSource;

4. DBLookup...

a) No componente 2 (zTbl) configurei para a tabela "usuarios" e conexão com o componente 1 (zCon).

b ) No componente 3 (dtSource) coloquei em "Data Set" o componente 2 (zTbl).

No componente 4 (DBlookupcombobox), em ListSource coloquei dtSource e em ListField coloquei o campo "nome".

O que estou fazendo errado?

da forma como citei no início, o dtSource (DataSource) está ligado a sua tabela zTbl (DataSet) que está ligada a zCon (Connection/Database).

Logo o seu componente data-aware, estaria sendo o DBLookupComboBox. Assim, o componente deveria estar ligado a dtSource através de sua propriedade DataSource (e provavelmente está).

Onde está o problema então? Como disse antes, uma das possibilidades de o componente ficar desabilitado seria pela ausência de uma dataset ligado a sua propriedade ListSource - e este parece ser o caso.

A questão é: Você sabe qual a utilidade do componente TDBLookupComboBox? O que você espera com o seu uso?

Tenha em mente sempre o seguinte: os dados (campos) a serem alterados no seu dataset, sempre estarão definidos pelas propriedades DataSource e DataField, ou seja, estas propriedades indicarão qual o dataset e campo serão usados para mostrar a informação, bem como poderão serão alterados e gravados de volta no banco.

A propriedade ListSource, tem por objetivo popular a lista (drop-and-down) com a coluna configurada em ListField proveniente do DataSet ligado a ele e usando a propriedade KeyField como a coluna da qual o valor será atribuído a propriedade DataField.

Um exemplo: Numa tabela Compras, você tem o campo CodCliente. Este campo é o campo de relacionamento com a tabela Clientes (ou seja, temo este campo lá também - é chave primária), de onde você obtém todas as demais informações do cliente. Então, na tela de cadastro da compra, teriamos:

- TblCompra => dataset compra;

- DSCompra => datasource com a propriedade DataSet = TblCompra;

- QryCliente => dataset cliente;

- DSCliente => datasource com a propriedade DataSet = QryCliente;

- DBlkCliente => um TDBLookupComboBox com as propriedades:

> DataSource = DSCompra

> DataField = CodCliente

> ListSource = DSCliente

> KeyField = CodCliente

> ListField = NomCliente

Assim, para um nome selecionado da lista, seu respectivo código será atribuído ao campo da tabela Compras.

Espero ter tornado as coisa mais claras e não o contrário. :)

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Eu voltei a ter a mesma dúvida, só que agora é o seguinte...

Pelo que você falou, eu SEMPRE tenho que ter uma query pra fazer o dblookupcombobox funcionar?

E se eu tiver 2 tabelas:

DEPARTAMENTO

id_departamento (chave primária)

nome_do_departamento

USUÁRIO

id_usuario (chave primária)

id_departamento (chave estrangeira, que é ligada à chave homônima que está na tabela DEPARTAMENTO)

nome_do_usuario

E no DBLookupCombobox, eu quero imprimir na dropdown o 'nome_do_departamento' (ListField) com 'id_departamento' como KeyField.

Eu já tentei de tudo aqui e fica desabilitado (mesmo problema que citei no início) SOCORRO!

Link para o comentário
Compartilhar em outros sites

  • 0
Pelo que você falou, eu SEMPRE tenho que ter uma query pra fazer o dblookupcombobox funcionar?
Não. Eu não disse que seria sempre uma query. Eu sempre uso o termo DataSet, justamente porque esta é a classe ancestral tanto dos componentes table, query ou outro qualquer que você esteja usando para acessar os dados de uma tabela no seu banco de dados.

A solução do seu problema deveria ser exatamente a mesma já mencionada, sendo que o datasource que você ligará à propriedade ListSource do LookupComboBox, deverá ter a sua propriedade DataSet com a tabela "departamento".

E no DBLookupCombobox, eu quero imprimir na dropdown o 'nome_do_departamento' (ListField) com 'id_departamento' como KeyField.
correto!

Eu já tentei de tudo aqui e fica desabilitado (mesmo problema que citei no início)
Poderia ainda ser o caso de um dos datasets não estar aberto. Verifique.

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...