GARANTIR DESCONTO

Fórum Jogar resultado de um select dentro de um listbox? #337595

08/02/2007

0

Olah pessoal, eu nao sei como faço ja tem mais de 2 semandas que tento unir 4 tabelas e nada, entao resolvi mostrar os resultados em um listbox (ou outro componente compativel), tipo assim:

Tenho 4 querys e num button pretendo colocar os select + ou - assim

1º select
select graud, n_nivel, ano, sum(valor)as debito from tgrau1_d
where datalcto = datalcto
group by 1,2,3 order by n_Nivel

2º select
select grauc, n_nivel, ano, sum(valor)as credito from tgrau1_c
where datalcto = datalcto
group by 1,2,3 order by n_Nivel
[color=red:8f62ccb6ee]soh que o segundo select vai mostrar somente o [b:8f62ccb6ee]field = ´CREDITO´[/b:8f62ccb6ee][/color:8f62ccb6ee] ai esse resultado fica + ou - assim no ListBox

01----AT-----------------30,00---------[b:8f62ccb6ee]500,00[/b:8f62ccb6ee]
02----PS-----------------500,00---------[b:8f62ccb6ee]30,00[/b:8f62ccb6ee]

Este em negrito eh somente o que vai mostrar da tabela tgrau1_c(tabela 2) ou seja do lado como se eu tivesse 2 grids lado a lado com os dois selects diferentes. (Entenderam)

Agora nao sei se ficaria mais dificil de cololar dentro deste listbox o resultado de mais duas tabelas pra ficar + ou - assim
01----AT-----------------30,00---------[b:8f62ccb6ee]500,00[/b:8f62ccb6ee]
0111-AT01---------------30,00---------[b:8f62ccb6ee]500,00[/b:8f62ccb6ee] //pertence a outra tabela
02----PS-----------------500,00---------[b:8f62ccb6ee]30,00[/b:8f62ccb6ee]
0211-PS01--------------500,00---------[b:8f62ccb6ee]30,00[/b:8f62ccb6ee]//pertence a outra tabela.

Meio complicado a explicação, mais espero que alguem possa entender e se possivel me mostrar se eh possivel fazer este caminho, pois a ideia seria somente mostrar na tela de um form o resultado das contas somadas

Ja tentei de tudo tipo usar join, union, criar SP criar view e nao consigo unir essas 4 tabelas por isso estou mudando pra ver se assim funciona, eh como se eu fizer 4 selects diferentes e jogar o resultado dentro de 4 grids, mais no caso pra ficar mais bonito e proficional e de facil leitura seria interessante mostrar como acima no listbox. (Isto eh se for possivel)


No aguardo

Obrigado a todos
Adriano.


Adriano_servitec

Adriano_servitec

Responder

Posts

10/02/2007

Nasguone

Naum entendi muito o que vc quer mas acho que a melho maneira e criar uma view caso vc apenas veja os dados e não edite nada.
Abaixo segue uma pequena que tenho rodando em meu sistema ela tem três tabelas ligadas, e retorna os dados corretamente.
De uma olhada nela e veja se vc consegue ter uma solução para seu problema

Espero que te ajude
ECS







CREATE VIEW DBO.KD_VIEW_APONTAMENTO_EXECUTAR_NOVO_BLOCK AS
select a.*,
ULT_APONT.Op_Code Op_Code_Ult1,ULT_APONT.Op_Name Op_Name_Ult1,ULT_APONT.Apont_Date Apont_Date_Ult1,
ULT_APONT.Apont_Status Apont_Status_Ult1,ULT_APONT.Apont_Resp Apont_Resp_Ult1,
CRI.CRI_VEH_KEY, CRI.CRI_PART_KEY,
REP.TOT
from KD_VIEW_APONTAMENTO a
LEFT JOIN KD_VIEW_REPROCESSOS_PECA_SETOR REP ON REP.Apont_Prod_Key = A.Apont_Prod_Key AND REP.Res_Key = A.Res_Key
LEFT JOIN KD_CRITICAS CRI ON CRI.CRI_VEH_KEY = A.Veh_key AND CRI.CRI_PART_KEY = A.part_key
LEFT JOIN dbo.KD_VIEW_ULTIMA_OPERACAO_APONTADA ULT_APONT ON ULT_APONT.Apont_Prod_Key = a.Apont_Prod_Key
INNER JOIN KD_VIEW_PROXIMA_OPERACAO_APONTAR b
ON A.APONT_PROD_KEY = b.APONT_PROD_KEY and a.res_code = b.res_code
where ((CAST(A.RES_CODE AS INTEGER) = 0 OR CAST(A.RES_CODE AS INTEGER) = 11) OR (CAST(a.RES_CODE AS INTEGER) >= 31)and CAST(a.RES_CODE AS INTEGER) <= 999) and
((A.prod_blocked =0 and (A.prod_status = ´P´))OR ( A.prod_blocked =0 AND A.Order_type = ´N´ and A.prod_status = ´S´))
and a.apont_date is null
union

SELECT A.*, ULT_APONT.Op_Code Op_Code_Ult1,ULT_APONT.Op_Name Op_Name_Ult1,ULT_APONT.Apont_Date Apont_Date_Ult1,
ULT_APONT.Apont_Status Apont_Status_Ult1,ULT_APONT.Apont_Resp Apont_Resp_Ult1,
CRI.CRI_VEH_KEY, CRI.CRI_PART_KEY, REP.TOT
FROM KD_VIEW_APONTAMENTO A
LEFT JOIN KD_VIEW_REPROCESSOS_PECA_SETOR REP ON REP.Apont_Prod_Key = A.Apont_Prod_Key AND REP.Res_Key = A.Res_Key
LEFT JOIN KD_CRITICAS CRI ON CRI.CRI_VEH_KEY =A.Veh_key AND CRI.CRI_PART_KEY = A.part_key
LEFT JOIN dbo.KD_VIEW_ULTIMA_OPERACAO_APONTADA ULT_APONT ON ULT_APONT.Apont_Prod_Key = a.Apont_Prod_Key
LEFT JOIN
(SELECT X.APONT_PROD_KEY , X.APONT_KEY,X.Date_Entr, X.Mod_Entr,X.TS_mod_Entr,
X.APONT_DATE, X.APONT_OP_KEY, B.OP_CODE FROM KD_APONT X
INNER JOIN KD_OP B ON B.OP_KEY = X.Apont_Op_Key AND X.APONT_DATE IS NULL
) Z
ON A.APONT_PROD_KEY =Z.APONT_PROD_KEY and CAST(Z.OP_code AS INTEGER) = (Cast(A.OP_code as integer) -10)
LEFT JOIN (SELECT APONT_PROD_KEY , COUNT(*) TOT_AP FROM KD_APONT
WHERE APONT_DATE IS NOT NULL GROUP BY APONT_PROD_KEY ) C ON C.APONT_PROD_KEY = A.APONT_PROD_KEY
where
CAST(A.Res_CODE AS INTEGER) = 10 and (a.Res_Blocked = 0 or a.Res_Blocked is null) AND
(A.prod_blocked =0 and A.prod_status = ´P´ AND A.APONT_DATE IS NULL) AND
(Z.APONT_DATE IS NOT NULL OR Z.APONT_KEY IS NULL) AND C.TOT_AP IS NOT NULL
UNION
SELECT A.*, ULT_APONT.Op_Code Op_Code_Ult1,ULT_APONT.Op_Name Op_Name_Ult1,ULT_APONT.Apont_Date Apont_Date_Ult1,
ULT_APONT.Apont_Status Apont_Status_Ult1,ULT_APONT.Apont_Resp Apont_Resp_Ult1,
CRI.CRI_VEH_KEY, CRI.CRI_PART_KEY, REP.TOT
FROM KD_VIEW_APONTAMENTO A
LEFT JOIN KD_VIEW_REPROCESSOS_PECA_SETOR REP ON REP.Apont_Prod_Key = A.Apont_Prod_Key AND REP.Res_Key = A.Res_Key
LEFT JOIN KD_CRITICAS CRI ON CRI.CRI_VEH_KEY = A.Veh_key AND CRI.CRI_PART_KEY = A.part_key
LEFT JOIN dbo.KD_VIEW_ULTIMA_OPERACAO_APONTADA ULT_APONT ON ULT_APONT.Apont_Prod_Key = a.Apont_Prod_Key
LEFT JOIN
(SELECT X.APONT_PROD_KEY , X.APONT_KEY,X.Date_Entr, X.Mod_Entr,X.TS_mod_Entr,
X.APONT_DATE, X.APONT_OP_KEY, B.OP_CODE FROM KD_APONT X
INNER JOIN KD_OP B ON B.OP_KEY = X.Apont_Op_Key AND X.APONT_DATE IS NULL
) Z
ON A.APONT_PROD_KEY =Z.APONT_PROD_KEY and CAST(Z.OP_code AS INTEGER) = (Cast(A.OP_code as integer) -10)
where
-- colocar em comentario data
(CAST(A.Res_CODE AS INTEGER) = 20 or CAST(A.Res_CODE AS INTEGER) = 30) and (a.Res_Blocked = 0 or a.Res_Blocked is null) AND
(A.prod_blocked =0 and A.prod_status = ´P´ AND A.APONT_DATE IS NULL) AND
(Z.APONT_DATE IS NOT NULL OR Z.APONT_KEY IS NULL)
AND
NOT (SELECT COUNT(*) FROM KD_APONT XX WHERE XX.Apont_Prod_Key =
A.APONT_PROD_KEY AND XX.APONT_DATE IS NULL ) =
(SELECT COUNT(*) FROM KD_APONT XX WHERE XX.Apont_Prod_Key =
A.APONT_PROD_KEY )


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar