Fórum Select com campo quot;calculadoquot; #358149
07/05/2008
0
Tenho um cadastro de apartamentos e outro cadastro das garagens. Um apartamento pode ter quantas garagens quiser e, eu preciso de uma listagem, que me informe em apenas uma linha, o número de todas as vagas.
Então preciso que meu relatório fique assim:
Alguma luz sobre como montar essa select ????
Powerlog Tecnologia
Curtir tópico
+ 0Posts
07/05/2008
Dbergkamps10
Tente assim:
select * from vagas where vagas.apto = Apto group by Apto
Espero ter ajudado.
Att
Dalton
Gostei + 0
07/05/2008
Powerlog Tecnologia
desse jeito eu teria que fazer 1 select para cada linha do meu relatório de apartamentos... fica inviável; seria uma resolução ´na mão´
Ainda continuo no aguardo !!!
Valeu ...
Gostei + 0
08/05/2008
Webjoel
Se as tabelas estiverem relacionadas com o CODAPT, você pode fazer um inner join, ex:
SELECT A.CODAPT, G.NUMVAG FROM GARAGEM INNER JOIN APARTAMENTO A ON (A.CODAPT = G.CODAPT);
Só que ele não mostrará como você precisa, isso você só pode fazer na impressão/visualização deste relatório, vocÇe pode fazer um gbfirst para mostrar desse modo que você quer!
Qualquer duvida post.
Gostei + 0
08/05/2008
Mazzi
Pois q SQL do amigo (up) agrupando por Apto, teria q dar certo em qq Layout de Impressao do tipo QuickReport (coloando os dataSources) e FortesReport , ambos usando agrupamentos.
No Rave tbm.
Qual ferramenta de relatorio vc esta usando?
Pois um SQL , advindo de um componente Dataset, vc nao precisaria informar um pra cada linha nao....
Gostei + 0
08/05/2008
Powerlog Tecnologia
Mas dessa forma o relatório ficaria assim:
Não quero que fique uma vaga por linha e sim todas as vagas na linha do apartamento ...
Gostei + 0
08/05/2008
Webjoel
neste caso tem cuidar disso na hora da impressao, usando o gbFirst, onde atraves de indices e quebras no ClientDataSet você controla os registros de forma que, o indice será o apartamento, entao no laço do ClientDataSet ele confere qual apartamento, se é o mesmo, ele concatena numa variavel e pois mostra, é a única forma que vejo para fazer numa mesma linha.
Dé uma olhada na net sobre o gbFirst na net, é um pouco complicado para se explicar aqui no fórum.
Gostei + 0
08/05/2008
Catunda
CREATE PROCEDURE RELAT_VAGAS
RETURNS (
XVAGAS VARCHAR(100),
XAPT INTEGER,
XNAPT VARCHAR(20))
AS
DECLARE VARIABLE Y INTEGER;
begin
for select codapt,numapt from apartamento into :xapt,:xnapt do
begin
xvagas=´vagas: ´;
for select numvaga from garagem where codapt=:xapt into :y do
begin
xvagas=(:xvagas||:y||´, ´);
end
suspend;
end
suspend;
end
Gostei + 0
08/05/2008
Powerlog Tecnologia
VALEU !!!!!!!!!!!
Gostei + 0
02/06/2011
Powerlog Tecnologia
create or alter procedure SAREL_LISTABOXE_UNID ( PCODEMP integer, PORDEM varchar(100)) returns ( CODBOX integer, CODUNI integer, NUMUNI varchar(20), CODBLOXUNI integer, DESEBLUNI varchar(20), DESEPVUNI varchar(20), ORDENAUNI integer, CODEMPX integer, DESEMP varchar(100), NUMBOX varchar(500), CON_CODIGO integer, CON_NOMRAZ varchar(100), QTDCON integer, DATAATUAL date) AS declare variable SQLTEXT varchar(8192); declare variable xCODBOX INTEGER; declare variable xCODUNI INTEGER; declare variable xNUMUNI VARCHAR(20); declare variable xCODBLOXUNI INTEGER; declare variable xDESEBLUNI VARCHAR(20); declare variable xDESEPVUNI VARCHAR(20); declare variable xORDENAUNI INTEGER; declare variable xCODEMPX INTEGER; declare variable xDESEMP VARCHAR(100); declare variable xNUMBOX VARCHAR(20); declare variable xCON_CODIGO INTEGER; declare variable xCON_NOMRAZ VARCHAR(100); declare variable xQTDCON INTEGER; declare variable xcoduniant integer; begin xcoduniant = 0; CODBOX = 0; CODUNI = 0; NUMUNI = ''; CODBLOXUNI = 0; DESEBLUNI = ''; DESEPVUNI = ''; ORDENAUNI = 0; CODEMPX = 0; DESEMP = ''; NUMBOX = ''; con_codigo = 0; con_nomraz = ''; qtdcon = 0; SQLTEXT = ' select b.codbox, b.coduni, u.numuni, u.codblox as codbloxuni, ebu.desebl as desebluni, epu.desepv as desepvuni, epu.ordena as ordenauni, b.codempx, e.desemp, b.numbox, c.con_codigo, c.con_nomraz, b.qtdcon from emprboxe b inner join empreend e on e.codemp = b.codempx left join emprunid u on u.coduni = b.coduni left join emprbloc ebu on ebu.codebl = u.codblox left join emprpavi epu on epu.codepv = u.codepv left join contatos c on c.con_codigo = b.codco1 where 1 = 1 and b.coduni > 0'; IF ((:pcodemp IS NOT NULL) AND (:pcodemp > 0)) THEN sqltext = sqltext || ' and b.codempx = '|| :pcodemp; sqltext = sqltext || ' order by b.codempx, ebu.codebl, epu.ordena, u.numuni, b.codblox, b.numbox'; FOR EXECUTE STATEMENT sqltext INTO xCODBOX, xCODUNI, xNUMUNI, xCODBLOXUNI, xDESEBLUNI, xDESEPVUNI, xORDENAUNI, xCODEMPX, xDESEMP, xNUMBOX, xcon_codigo, xcon_nomraz, xqtdcon DO BEGIN if (xcoduniant = 0) then xcoduniant = xcoduni; if (xcoduni <> xcoduniant) then begin SUSPEND; CODBOX = 0; CODUNI = 0; NUMUNI = ''; CODBLOXUNI = 0; DESEBLUNI = ''; DESEPVUNI = ''; ORDENAUNI = 0; CODEMPX = 0; DESEMP = ''; NUMBOX = ''; con_codigo = 0; con_nomraz = ''; qtdcon = 0; end if (xqtdcon is null) then xqtdcon = 0; CODBOX = xCODBOX; CODUNI = xCODUNI; NUMUNI = xNUMUNI; CODBLOXUNI = xCODBLOXUNI; DESEBLUNI = xDESEBLUNI; DESEPVUNI = xDESEPVUNI; ORDENAUNI = xORDENAUNI; CODEMPX = xCODEMPX; DESEMP = xDESEMP; if (NUMBOX = '') then NUMBOX = xNUMBOX; else NUMBOX = NUMBOX||', '||xNUMBOX; CON_CODIGO = xCON_CODIGO; CON_NOMRAZ = xCON_NOMRAZ; QTDCON = QTDCON+xQTDCON; DATAATUAL = current_date; xcoduniant = xcoduni; END end
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)