Jump to content
Fórum Script Brasil
  • 0

Problema Com Dblookupcombobox


Guest - Pedro -
 Share

Question

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 to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...