Jump to content
Fivewin Brasil

Filtrar tabela no sqlrdd


Narlem

Recommended Posts

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 al
return 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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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()
Link to comment
Share on other sites

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

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
Reply to this topic...

×   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.

Loading...
×
×
  • Create New...