Narlem Posted June 15, 2016 Report Share Posted June 15, 2016 Olá, Preciso de Filtrar na tabela de almoxarifados, somente os almoxarifados que pertencem a um determinado estabelecimento. Tenho a Tabela "EstabAlmox" com o codigo do estabelecimento e codigo do almoxarifado, fazendo o relacionamento de almox com estabelecimentos. Antes eu colocava no filtro assim: select Almox set filter to FiltraAlmox() function Filtraalmox(wCodigEstab) local wv1 select ea seek wCodigEstab+al->CodigAlmox if found() wv1 := .t. else wv1 := .f. endif select alreturn wv1 como fazer isto em banco de dados SQL. ou seja no filtro tenho que verificar em outro arquivo para ver se vai filtrar, colocado funcao no filtro nao fuciona. Narlem Quote Link to comment Share on other sites More sharing options...
joaosolution Posted June 15, 2016 Report Share Posted June 15, 2016 Narlem Bom dia Veja se entendi? Você quer filtrar Almox pelo código do estabelecimento Select Almox Set Filter to codigEstab=wCodigEstab Isso? Att João Bosco Quote Link to comment Share on other sites More sharing options...
kapiaba Posted June 15, 2016 Report Share Posted June 15, 2016 http://www.pctoledo.com.br/forum/viewtopic.php?f=42&t=13058 https://groups.google.com/forum/#!topic/comp.lang.xharbour/czD9kWNWKkI Quote Link to comment Share on other sites More sharing options...
Narlem Posted June 15, 2016 Author Report Share Posted June 15, 2016 Olá João, Na realidade o filtro vai depender da existencia do relacionamento com outra tabela, por exemplo temos e tabelas. Estabelecimento Almoxarifado Estab_Almox ----------------------- -------------------------- ---------------------------- CodigEstab-C-02 CodigAlmox-C-03 CodigEstab-C-02 NomeEstab-C-50 Nome Almox-C-40 CodigAlmox-C-03 EnderEstab-C-50 LocalAlmox-C-20 Na Tabela Estab_Almox, eu faço o relacionamento dos estabecimentos com os almoxarifados, por a tabela Estab_Almox seria abaixo: CodigEstab CodigAlmox 01 001 02 002 03 003 01 004 Por exemplo preciso filtrar na Tabela de Almoxarifados somente os almox do estabelecimento "01", no caso acima seria os almox 001 e 004. Preciso filtrar o arquivo de almoxarifado, mas o filtro vai depender de existir na tabela Estab_Almox, a relacao do registro do almox com o estabelecimento desejado. vou dar uma olhada nos links do grande joão e ver se resolve e retorno aqui. desde já obrigado. Narlem Quote Link to comment Share on other sites More sharing options...
joaosolution Posted June 15, 2016 Report Share Posted June 15, 2016 Narlem Em Sql: Select * From Estab_Almox Left Join Estabelecimento on Estabelecimento.CodigEstab=Estab_Almox.CodigEstab Att João Bosco Quote Link to comment Share on other sites More sharing options...
Narlem Posted June 15, 2016 Author Report Share Posted June 15, 2016 em sql isto resolve, mas usando a sqlrdd eu nao uso comandos sql, só passo o parametro do sr_setfilter() , e o sqlrdd que monta o comando do sql. talvez tenha que mudar o meu código para isto funcionar, pois pelo que to vendo nao tem um comando de busca no where, que é onde é colocado o filtro mas vi os posts do João Kapiaba, tem um exemplo com o sr_cdbvalue que to tentando entender e testando, mas acho que nao vai dar tambem, SR_SETFILTER('NOME=' + sr_cdbvalue(cBUSCA) + " and IDADE > 18") no fundo , acho que vou ter de fazer uma gambiarra manualmente para resolver esta situacao, talvez usando comando sql puro ao selecionar a tabela. narlem Quote Link to comment Share on other sites More sharing options...
Narlem Posted June 15, 2016 Author Report Share Posted June 15, 2016 Olá, Pelo que vi, fazer um seek em outra tabela no filtro da sqlrdd que é where do comando sql, nao dá certo. Entao resolvi alterar a rotina colocando uma funcao no when, ao entrar no get que atribui a uma variavel os almoxarifados que pode ser filtrados. por exemplo w_almoxarifados := "001-002-002" e no filtro eu coloquei set filter to CodigoAlmox $ w_almoxarifados e deu certo usando o set filter, mas se usar o sr_SetFilter() nao dá certo. Narlem Quote Link to comment Share on other sites More sharing options...
kapiaba Posted June 15, 2016 Report Share Posted June 15, 2016 E com um indice temporario? usando TEMPORARY que é infinitamente mais rápido que SET FILTER? Quote Link to comment Share on other sites More sharing options...
Narlem Posted June 15, 2016 Author Report Share Posted June 15, 2016 Olá joão Kapiaba, Acho que neste caso a gambiarra vai dar certo, porque os arquivos são muito pequenos, estabelecimetno e almoxarifados, vai ter no maximo uns 3 a 5 estabelecimentos e no maximo uns 2 a 3 almox., por estab. entao ficou muito rápido. mas se for em tabelas grandes, esta gambiarra nao é boa. obrigado pela ajuda. voce só não é 100% devido ao seu "timinho", se virar pro lado ecológico (verdão), aí vai ser 100%, um abração. Narlem kapiaba 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted June 15, 2016 Report Share Posted June 15, 2016 KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK Quote Link to comment Share on other sites More sharing options...
silvanof Posted June 15, 2016 Report Share Posted June 15, 2016 Olá Narlem. Eu uso o sr_setfilter(), meu sistema é multi empresas, o usuário seleciona a empresa e eu filtro os dados das tabelas da empresa escolhida (nGCodemp) assim: DbSelectArea('PEDIDOVENDA') SR_SetFilter( "A.CODEMP ="+Trim(Str(nGCodemp,6,0)) ) DBGoTop() DBSelectArea("Itens_PedidoVenda") SR_SetFilter( "A.CODEMP ="+Trim(Str(nGCodemp,6,0)) ) DBGoTop() DbSelectArea('NOTAFISCAL') SR_SetFilter( "A.CODEMP ="+Trim(Str(nGCodemp,6,0)) ) DBGoTop() DBSelectArea("Itens_NotaFiscal") SR_SetFilter( "A.CODEMP ="+Trim(Str(nGCodemp,6,0)) ) DBGoTop() Quote Link to comment Share on other sites More sharing options...
Narlem Posted June 16, 2016 Author Report Share Posted June 16, 2016 Olá Silvano, o problema que eu tava é que o filtro dependia da existencia de um seek em outro arquivo. poderia ser feito somente via comando completo de sql, onde referenciaria as duas tabelas, ai sim poderia usar no filtro campo de duas tabelas. mas eu fiz uma mudanca atribuindo os almox a uma variaveil e se no filtro pus se o almox pertence ($) a variavel. e deu certo. Narlem Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.