Jump to content
Fórum Script Brasil
  • 0

Campos Lockups Da Tabela.


schaukoski
 Share

Question

Olá Muito boa tarde a todos.

Pessoal, não sei se vocês, mas eu uso muito o campo lockup para usar por exemplo em tabelas relacionadas que eu não tenho o nome da pessoa, mas tenho o código de cadastro dela.( para não salvar o nome também, eu salvo apenas o codigo, e uso o lockup para o nome).

Pois bem. Este comando funciona perfeitamente e é muito rapido.

Mas eu não consigo dar Tabela.Locate('campolockup', []) , porque é um campo Lockup.. OK.

Então usei um select na tabela, concatenando o campo nome da outra , para eu poder fazer a minha pesquisa. Funcionou.. mas ficou muito lento para abri a tabela, pelo fato de muitos registros.

Alguém aqui, usa o campo Lockups, e tenta fazer Pesquisa por esse campo, se sim.. como vocês fazem, e se não... tem alguma solução?

Estou quase criando o campo Nome na outra tabela também, mas torna-se redundante já que eu já tenho o código.Alem do problema de atualizar o nome e uma tabela de cadastro, e nas outras ficar desatualizado.

Muito Obrigado pela atenção de vocês. Abraços.

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0
Pessoal, não sei se vocês, mas eu uso muito o campo lockup para usar por exemplo em tabelas relacionadas que eu não tenho o nome da pessoa, mas tenho o código de cadastro dela.( para não salvar o nome também, eu salvo apenas o codigo, e uso o lockup para o nome).
Muito bem, parece que está utilizando adequandamente a normalização de dados (ref. Modelo Relaciona de Dados Parte IV - Linha de Código)

Mas eu não consigo dar Tabela.Locate('campolockup', []) , porque é um campo Lockup.. OK.
schaukoski, mais umas perguntinhas além das do colega Jhonas:

- quando você fala em campo lookup, está se referindo a um campo adicionado a sua lista de campos via opção "Add new field..."->"Field Type = Lookup" ou ao uso das propriedades LookupDataset, LookupResultFields e LookupKeyFields de um campo (field) existente em seu dataset?

- a tabela que você quer chamar o método Locate é a mesma tabela onde você tem os campos lookup's?

Seria interessante um exemplo mais realista de sua situação para que o pessoal possa opnar ;)

Link to comment
Share on other sites

  • 0

Muito Bem.

Eu estou usando o MySQL 5, uso a paleta dbExpress. SimpleDataSet é o componente. e sim eu uso no 'Add New', tal...

Um exemplo prático.

eu tenho a tabela de Clientes com os campos : Código,Nome,CPF,DatadeNasc;

e tenho a tabela de Alunos : CódigoMatricula,CodCliente,DataMatricula;

Vamos supor, que eu esteja no módulo de Alunos, e queira fazer uma consulta dos Alunos.. O que eu fiz, eu coloquei em ADD new, criei um campo lockup codcliente, com a tabela d clientes relacionei o codigo, e result o Nome;

Muito Bem... esse é um comando bem rápido, mas que eu não descubri ainda, alguma forma de fazer pesquisa por nome..

eu estou lá na nos alunos, e quero procurar pelo nome do aluno.. isso torna um problema para mim.

a segunda opção então, foi fazer uma concatenação de select.

select alunos.*,clientes.nome from alunos,clientes

where alunos.codigo=clientes.codigo

então assim resolveu, porque eu acabo tendo um campo de verdade na tabela, e consigo perfeitamente usar o Locate como pesquisa, ou até mesmo o Filter...

mas com o select , com clientes, e alunos com 4mil registros cada uma, fica muito lento para abrir a tabela, e no grid também.

Eu procuro por alguma solução para pesquisar com o Lockup, ou outro método de fazer pesquisas, sem duplicar o campo NOME na tabela ALUNOS, para que não tenha aqueles problemas de atualização, e redundância.

Obrigado.

Link to comment
Share on other sites

  • 0

Para quem ainda quizer uma dica a mais:

Pode-se criar uma query de busca com um select apropriado, e quando ele retornar os registros por exemplo em uma

grid,(terá que criar um mini form splash para isto, voce selecionar um item e colhe o codigo do registro(ex.CODUSUARIO) atravez de variavel , assim voce utiliza esta variavel no locate (Tabela.Locate('CODUSUARIO',Variavelcohida,[]) para uma table. Bem este foi so um resumo de uma solução eficiente e conta com uma possibilidade a mais que se voce fizer um selec por semelhança o usuario ainda podera navegar no grid e escolher melhor o que ele quer. Assim quando ele selecionar estara dando a voce o valor do CODIGO do registro.

Eu particularmente seguindo esta ideia, construi um componente de busca global, baseado em query/select que

uso em quase tudo. Numa proxima oportunidade posso postar o codigo do compo.

Espero ter dado uma luz.

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
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...