Quick Search - Pesquisa rápida em mais de uma tabela

Oi Boa tarde…

Tenho a seguinte estrutura

Tabela Clientes (cabeçalho)
Tabela Telefone/Emails dos Clientes (1-n) Detalhe
Tabela Endereços dos clientes(1-n) Detalhe

Tem como na pesquisa rápida"quick search" do grid dos clientes fazer pesquisa de uma parte do numero de telefone e ou parte do email e retornar os clientes na grid que corresponde a aquela pesquisa?

A dúvida se tem como incluir o quick search para pesquisar em outras tabela e não só na tabela principal.

Obrigado desde já.

inclua todos os campos no sql principal da consulta usando inner join entre as tabelas.

Me desculpe Haroldo…

Estou usando a geração automatica do scriptcase.

Pelo que eu entendi da sua solução tenho que modificar a sql principal do grid e clocar todos os campos?
Se for fazer isso um cliente que tem 2 telefones e um email vai aparecer em 3 linhas repetidas no meu grid. Ou estou enganado?

Obrigado

O QuickSearch atua sob os campos retornados no select principal que são exibidos na consulta.
E ó que você tem.

Se precisa de algo diferente, deve trabalhar no filtro.

Boa noite…

Em todos os smartphones tipo iphone, google android e tambem gmail contacts e outlook temos a possibilidade de criarmos contatos com multiplos telefones e multiplos endereços completos.

Isso todos já sabem… O que eu ainda não sei como é a estrutura dessa tabela de contatos já que ela não parece como pai e filho. Alguem sabe por exemplo a estrutura da tabela de contatos do gmail?

Tem como criar alguma coisa parecida com isso no SC usando banco de dados tipo MySql?

Haroldo, vou pesquisar sobre o filtro e ver se consigo resolver pela sua sugestão.

Obrigado.

Eu acredito que seja um grande array dentro de um unico campo

Crie uma consulta e no SQL da app coloque o INNER JOIN chamando essas tabelas que resolve. Pois como o Haroldo falou o Quick Search funciona na base do SQL da app que no caso é o select principal.

Para min se usarem algum banco de dados relacional, é como agente faz mesmo(1:n), o que pode diferenciar é que não pegão os dados direto do resultset e jogão em uma tabela, os dados são tratados e como o Haroldo disse “Um array”. Agora se usarem banco de dados noSQL, seria mais fácil aplicar esse modelo. Se quer algo parecido, abandone o modo padrão que a grid trabalha e faça alguns plugins, crie uma quicksearch próprio.

Fred e Haroldo…

O InnerJoin pode até resolver. O problema que vou ficar com redundancia de dados. Como disse acima um cliente que tem 3 telefones vai aparecer em 3 linhas na minha tabela na vertical e não uma linha só na horizontal. Queria alguma coisa mais transparente, do jeito que fica gerado pelo SC mesmo e no quick search colocar algum código para incluir tabelas filhos. Não quero gerar mais um item de menu com uma tela a mais só para fazer essa pesquisa.

Almeida…

Eu comecei agora e sou novato ainda em php e SC. Usava antes .net o qual conheço mais.

Obrigado a todos

Já tentou usar um campo pra armazenar vários dados separados por ; ?

Eu já fiz isso, separava os dados por ponto e virgula e dava um explode no campo para ler os dados!

Ex:
telefone 01 = 1,
telefone 02 = 2,
telefone 03 = 3,
telefone 04 = 4,
etc…

Telefones do Contato 01 = 1; 2; 3.

Entendeu mais ou menos?

Oi Fred…

Sinceramente já havia pensado nisso. O Problema que para endereços que tem vários campos fica um pouco mais complicado quando for atualizar ou excluir algum dado. Precisa um controle manual que ao meu ver é trabalhoso mais do que complicado.
Pensei também em algum tipo de campo código XML que pode resolver, só que não consegui colocar em prática essa ideia.

Fica ai uma sugestão para o pessoal do SC para adicionarem uma opção de SQL manual no Quick Search. Aí posso usar o inner join sem problemas.

Outra, se alguém um dia descobrir como funcionam essas tabelas de contatos no gmail e smartphones de uma contato com múltiplos endereços e telefones e adição e substração de campos, seria de grande valia para a comunidade.

Obrigado.

Sobre as tabelas de contatos, é como expliquei.
Ao meu ver, usando banco de dados relacional não tem outra forma de se fazer, é usando 1 : n. O que muda é o tratamento dos dados ao passa-los para a grid, é feito um tratamento antes, não montando a grid em cima do resultset.

Até porque usando banco de dados relacional, tem as FNs e uma delas diz, “Conter apenas uma informação por coluna”. Seria inviável para manutenção e outros colocar mais de um valor em uma coluna. Existem banco de dados noSQL que fornecem estruturas livres, podendo adicionar vários valores dentro de uma única coluna e atualiza-los sem problemas, um deles é o mongoDB. (informação apenas para o contexto, não é uma forma de se resolver seu problema, até porque o SC não da suporte a esse tipo de BD.);

Talvez uma solução não testada, apenas teoria seria. Criar uma view que unissem todos os telefones em apenas um campo, fazer uma GRID em cima dessa view e utilizar o quicksearch no campo, usando o modo de pesquisa por qualquer parte do campo. Não estou dizendo que daria certo, pois não testei, tive uma ideia baseando no seu problema.

Talvez uma solução não testada, apenas teoria seria. Criar uma view que unissem todos os telefones em apenas um campo, fazer uma GRID em cima dessa view e utilizar o quicksearch no campo, usando o modo de pesquisa por qualquer parte do campo. Não estou dizendo que daria certo, pois não testei, tive uma ideia baseando no seu problema.

Já fiz e ainda faço justamente isso que o Eliezer falou e funciona sim! Muitas coisas eu faço em cima de “Views” (Visões), crio tudo no banco, faço o máximo de relações pra trabalhar o mínimo possível no SC.

Obrigado Eliezer e Fred, vou tentar usar views. Espero que dê certo. Obrigado.