Tenho uma tela no forms, que serve para informar parametros pra gerar um relatorio.
Quero que cada vez que eu informe o fornecedor...
Popule um bloco(no base table) com todos os códigos de itens desse fornecedor...
Qual seria o melhor modo?
populando um bloco
-
- Rank: Estagiário Sênior
- Mensagens: 10
- Registrado em: Seg, 08 Ago 2011 11:54 am
- Localização: RS
-
- Rank: DBA Pleno
- Mensagens: 248
- Registrado em: Sex, 06 Fev 2009 3:02 pm
- Localização: ERECHIM - RS
você pode fazer um cursor e depois um For Loop para popular os dados da tabela. Por exemplo:
DECLARE
CURSOR CUR_ITEM IS
Select iim.item_no codigo,
iim.item_desc1 descricao,
ili.WHSE_CODE Deposito,
ili.LOT_STATUS Status,
ilm.lot_id Lote_Id,
ilm.lot_no Lote,
ili.LOCATION Endereco,
sum(ili.loct_onhand) qtde
From APPS.ic_loct_inv ili,
APPS.IC_ITEM_MST_B iim,
APPS.ic_lots_mst ilm
Where ili.item_id = iim.item_id
and iim.item_no = :PRODUTO
and ilm.item_id = ili.item_id
and ilm.lot_id = ili.lot_id
Group by
iim.item_no,
iim.item_desc1,
ili.WHSE_CODE,
ili.LOT_STATUS,
ilm.lot_id,
ilm.lot_no,
ili.LOCATION
Having round(sum(ili.loct_onhand)) > 0
Order by
ili.WHSE_CODE DESC,
ilm.lot_id,
ili.LOCATION;
REG_ITEM CUR_ITEM%ROWTYPE;
BEGIN
OPEN CUR_ITEM;
LOOP
FETCH CUR_ITEM INTO REG_ITEM;
EXIT WHEN CUR_ITEM%NOTFOUND;
GO_BLOCK('BLOCO3');
:BLOCO3.DEPOSITO := REG_ITEM.DEPOSITO;
:BLOCO3.STATUS := REG_ITEM.STATUS;
:BLOCO3.LOTE := REG_ITEM.LOTE;
:BLOCO3.ENDERECO := REG_ITEM.ENDERECO;
:BLOCO3.ESTOQUE := REG_ITEM.QTDE;
NEXT_RECORD;
END LOOP;
CLOSE CUR_ITEM;
END;
FIRST_RECORD;
Att,
Marlon
DECLARE
CURSOR CUR_ITEM IS
Select iim.item_no codigo,
iim.item_desc1 descricao,
ili.WHSE_CODE Deposito,
ili.LOT_STATUS Status,
ilm.lot_id Lote_Id,
ilm.lot_no Lote,
ili.LOCATION Endereco,
sum(ili.loct_onhand) qtde
From APPS.ic_loct_inv ili,
APPS.IC_ITEM_MST_B iim,
APPS.ic_lots_mst ilm
Where ili.item_id = iim.item_id
and iim.item_no = :PRODUTO
and ilm.item_id = ili.item_id
and ilm.lot_id = ili.lot_id
Group by
iim.item_no,
iim.item_desc1,
ili.WHSE_CODE,
ili.LOT_STATUS,
ilm.lot_id,
ilm.lot_no,
ili.LOCATION
Having round(sum(ili.loct_onhand)) > 0
Order by
ili.WHSE_CODE DESC,
ilm.lot_id,
ili.LOCATION;
REG_ITEM CUR_ITEM%ROWTYPE;
BEGIN
OPEN CUR_ITEM;
LOOP
FETCH CUR_ITEM INTO REG_ITEM;
EXIT WHEN CUR_ITEM%NOTFOUND;
GO_BLOCK('BLOCO3');
:BLOCO3.DEPOSITO := REG_ITEM.DEPOSITO;
:BLOCO3.STATUS := REG_ITEM.STATUS;
:BLOCO3.LOTE := REG_ITEM.LOTE;
:BLOCO3.ENDERECO := REG_ITEM.ENDERECO;
:BLOCO3.ESTOQUE := REG_ITEM.QTDE;
NEXT_RECORD;
END LOOP;
CLOSE CUR_ITEM;
END;
FIRST_RECORD;
Att,
Marlon
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante