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

Campos Lockups Da Tabela.


schaukoski

Pergunta

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 para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 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,8k
×
×
  • Criar Novo...