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

Problema Com Dblookupcombobox


Guest - Pedro -

Pergunta

Guest - Pedro -

Boas pessoal.

Antes de mais, obrigado por quaisquer respostas que me possam ajudar a resolver este problema.

Vou tentar explicar da melhor maneira possivel.

É assim: Tenho um projecto em Delphi com um datamodule que contêm as tabelas, um form com taxas de impostos e um form com artigos.

No form com os artigos, tenho um DbLookUpComboBox com as seguites configurações:

DataField : Imposto (TArtigos)

DataSource : TArtigos

ListSource : TImpostos

ListField : Descricao (TImpostos)

KeyField : id (TImpostos)

Tenho a quase a certeza que isto está bem e que é assim que usa o DbLookUpComboBox. Tudo funciona bem ...

desde que não aceda a dados da tabela de Impostos. Se eu abrir primeiro o form de impostos e depois for ao form de artigos, o DbLookUpComboBox não funciona. Se for primeiro ao form de artigos, tudo está bem.

Alguém sabe o que provoca este problema?

Mais uma vez, desde já obrigado.

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Nope.

A única coisa que fecho (faço o enabled := false) é um dbNavigator para lhe poder trocar a datasource quando entro noutro form.

Tanto as Tables como os DataSources estão sempre ligados.

Resolvi o problema com uma nova table colocada directamente no form e não uso da do DataModule.

Mas isto acontece-me com outras tabelas também. Tenho de rever o código todo outra vez ... pode ser disso, mas não acredito. Tou farto de fazer isto com bases de dados Sybase e agora que estou a experimentar o MySql 5.0 tou com problemas. Poderá ser algum problema da base de dados ou do OBCConncetor?

Obrigado.

Pedro

Link para o comentário
Compartilhar em outros sites

  • 0
É, parece que o problema vem mesmo daí....

Tenho de usar Tables locais por form.

Mas que desperdício de trabalho.

Devia de dar sem problemas com um DataModule.

Obrigado pelas respostas.

Coloque os lookups no datamodule, não há necessidade colocá-los no form. Se utilizar os lockup's em outros forms, talvez seja conveniente criar um datamodule só para eles - você os declará em um só lugar, e abrirá o dataset apenas que for utilizar quando entrar no form.

É conveniente também, utilizar um TQuery, para isso porque daí você traz apenas o campo que precisa (menos tráfico de informação entre seu banco e programa)

você tem que ter em mente que quando você utiliza o lookup, você estará "filtrando" os dados no lookupdataset, e que parece fazer sentido a não viabilidade de utilizá-lo para acesso num outro form, tipo num dbgrid - isso levando em conta a forma como sua aplicação está operando. Se o dataset fosse utilizado hora por uma tela, hora por outra, (ao menos em teoria) não deveria haver problema desde que você fecha o dataset e torna a abrí-lo a cada utilização.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Boas Micheus.

Já resolvi o problema, mas de qualquer maneira, fiquei sem perceber o que se passa com isto.

Como disse, estou farto de fazer isto com o Sybase e nunca tive problemas.

Gostava mesmo de saber de onde vem o problema.

Respondendo ao que me disses-te,

Coloque os lookups no datamodule, não há necessidade colocá-los no form
Eu estava a fazer os lookups com um DbLookUpComboBox que é um componete visual, logo tem de estar no form. Tinha outras hipóteses, como por exemplo, criar um TQuery no DataModule que me desse os valores para uma DbComboBox , etc ... mas não foi assim que fiz. Neste momento já só queria saber qual foi o problema. Parece-me mais uma cena especifica do MySQL do que outra coisa qualquer.

Se o dataset fosse utilizado hora por uma tela, hora por outra, (ao menos em teoria) não deveria haver problema desde que você fecha o dataset e torna a abrí-lo a cada utilização.
Been there, done that.

Também me lembrei disso e vai daí, toca a fechar e a abrir as Tables antes de mostrar o Form. Cheguei mesmo a fechar a própria DB ... e obtive sempre o mesmo erro (Erro está aqui como uma forma de expressão já que a aplicação não dá nenhum erro em particular. O que se passa é que o DbLoockUpComboBox deixa de estar activo).

Mais uma vez, muito obrigado a todo os que se deram ao trabalho de responder.

Link para o comentário
Compartilhar em outros sites

  • 0
Já resolvi o problema, mas de qualquer maneira, fiquei sem perceber o que se passa com isto.

Como disse, estou farto de fazer isto com o Sybase e nunca tive problemas.

Gostava mesmo de saber de onde vem o problema.

Concordo com você e sinto muito não poder auxiliar nisto. Resolver este tipo de problema, as vezes, não é fácil porque ficamos apenas em supodições - nada como ter o "código nas mãos".

Respondendo ao que me disses-te,
Coloque os lookups no datamodule, não há necessidade colocá-los no form
Eu estava a fazer os lookups com um DbLookUpComboBox que é um componete visual, logo tem de estar no form. Tinha outras hipóteses, como por exemplo, criar um TQuery no DataModule que me desse os valores para uma DbComboBox , etc ... mas não foi assim que fiz. Neste momento já só queria saber qual foi o problema. Parece-me mais uma cena especifica do MySQL do que outra coisa qualquer.
Aqui eu me expressei mal. Quando falei lookups estava falando das consultas/tabelas lookups, não dos componentes. :)

... O que se passa é que o DbLoockUpComboBox deixa de estar activo).
Isto é característico do dataset ligado a propriedade ListSource estar fechado.

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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...