Tenho aplicação grid, e tenho vários campos que não estão na base, puxo eles por lookup em outra base, um exemplo é o campo cpf, busco de outro banco, a questão é que quero buscar pelo número do cpf na grid, e ele não busca. Alguém sabe como resolver isto?
Você pode criar um campo no filtro (nome do campo deve ser diferente da grid ex: CPF na grid CPF_FILTRO no filtro) e no evento onScriptInit da Grid verificar
if(!empty({CPF_FILTRO}))
{
sc_select_where(add) = " AND CAMPOCHAVE IN (SELECT PARA TABELA CPF QUE RETORNA O CAMPO CHAVE WHERE CPF = ‘{CPF_FILTRO}’) ";
}
Mas a questão que a grid está saindo de uma banco(Mysql) e o lookup que estou fazendo para o cpf é outro(Firebird), como ficaria então o “SELECT PARA TABELA CPF QUE RETORNA O CAMPO CHAVE WHERE CPF = ‘{CPF_FILTRO}’”?
O problema é que na grid possui campos que são daquele banco de dados(Mysql), mas tem campos que faço um lookup em outro banco(Firebird), o que ocorre que na pesquisa rápida quando faço uma busca de um dos campos que possui lookup, ele diz que não existe, e eu percebi que quando clico em cima do título da coluna da grid para ordenar, ele parece que faz a ordenação não em cima do nome, mas em cima da id daquele lookup, imagino que não faz busca pelo nome que aparece também, mas em cima da id, e preciso que a busca rápida funcione pelo nome, afinal ninguém vê id, e não tem como deixar isto…
A ligação de tudo é feita através da chave primária da tabela cliente, tenho uma tabela no Firebird, CAD001 que possui todas as informações do cliente, nome, cpf, celular… e em outros lugares, no outro banco(mysql) eu puxo a id, quando eu preciso de outras informações faço um lookup comparando a id do cliente, e chamo a informação que quero.
Eu até fiz outra consulta da forma que você falou, mas eu também terei consultas dos campos que tem no mysql, aí terei a mesma situação… cairei no mesmo problema…?
Até faria se eu soubesse uma forma automática de manter a informação nos dois bancos, observando que uso o scriptcase no windows, isto para alguma sugestão…
Coloque o campo CPF e demais no banco mysql, tire o lookup para base firebird (todos campos que possam vir de lá)
Em quicksearch selecione apenas os campo que pode-se pesquisar (ex: nome, cpf, etc) para não dar nenhum conflito
As informações são atualizadas por outro programa, que no caso é em delphi e firebird, o scriptcase utilizo para dar a informação com um tratamento como este que estou tentando fazer. Sabe como me ajudar amigo? Ou uma alternativa? Isto está me dando muito problema, um projeto que está agarrado só por este problema, pois preciso desta consulta funcionando… tenso mesmo…
no OnScriptInit da consulta fazer um método deleta todos os registros do mysql, seleciona todos do firebird e insere no mysql, dessa maneira mantendo sempre as bases iguais e claro se o usuário trocar algo no firebird, ao acessar o relatório os dados serão atualizados.