Fórum LookUpCache #233906

23/05/2004

0

Olá pessoal

Suponhamos q eu tenha as tabelas:

TABPESSOAS
----------------
- codpessoa (p)
- nome
etc

TABALUNOS
--------------
- codaluno (p)
- codpessoa (f)
etc

E uma tabela de matrículas, cuja estrutura não é vital para o entendimento do problema (a não ser pela presença do Código do Aluno - CodAluno).
Suponhamos agora q eu tenho dois forms: um d cadastro de alunos e outro de matrículas. No form de matrículas, eu tenho um DBLookUpComboBox, que aponta para um campo lookup criado dentro do query de matrículas q mostra todos os alunos.
Agora, eu abro o form d matrículas, e no DBLookUpComboBox eu tenho três alunos: A, B e C. Sem fechar o form, eu abro o form de alunos e excluo o aluno C. Quando eu volto para as matrículas, o aluno C continua aparecendo lá.
Então, marquei a propriedade LookUpCache do campo lookup para true, e agora o DBLookUpComboBox fica desativado na primeira vez q o form é aberto.
Resumindo: alguém poderia me explicar o mecanismo da propriedade LookUpCache (e sua relação com o método RefreshLookUpList)?
Desde já agradeço a atenção.


Tnaires

Tnaires

Responder

Posts

24/05/2004

Tinorj

Pelo que notei, você está trabalhando com acessos as tabelas diferentes,(Ex.: qryConsulta e qryCadastro), sendo seu DBLookupComboBox está apontando para o qryConsulta e sua tela de cadastro para qryCadastro. Sendo assim o cache de qryConsulta é diferente do cache de qryCadastro. Logo, para você atualizar os dados de qryConsulta, você deverá atualizar os dados de qryConsulta. (Ex.: qryConsulta.Close; qryConsulta.Open; //Não é recomentado usar o método Refresh do componente).

Expliquei como entendi. Espero ter ajudado.


Responder

Gostei + 0

24/05/2004

Tnaires

Obrigado pela sua atencao.
Bem, eh quase isso. Realmente eu tenho dois queries.
Query de matriculas:
SELECT * FROM TBMATRICULAS

Ela serve somente para o cadastro de matriculas.
Query de alunos:
SELECT TBALUNOS.CODALUNO, TBPESSOAS.NOME
FROM TBALUNOS, TBPESSOAS
WHERE TBALUNOS.CODPESSOA = TBPESSOAS.CODPESSOA

Ela serve so para me retornar os nomes dos meus alunos (consulta).
A diferenca vem agora: o DBLookUpComboBox em questao nao pega os dados diretamente da query d consultas, e sim, de um campo lookup criado dentro da tabela de matriculas que mostra os nomes dos alunos (ou seja, a propriedade ListSource fica vazia - somente as propriedades DataSource e DataField sao setadas). Isso eh perfeitamente possivel, visto que a tabela de matriculas, dentre outros dados, armazena o codigo do aluno.
O problema eh que, se eu deletar um aluno no form de alunos, os dados do DBLookUpComboBox nao sao atualizados. Ajustando a propriedade LookUpCache ,de acordo com o help do Delphi, resolveria a situacao, mas ele fica desabilitado quando a aplicacao inicia.
Ufa! Se alguem puder me ajudar, agradeco. Abracos


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar