Ir para conteúdo
Fórum Script Brasil
  • 0

Unir Tabelas Paradox


Eder

Pergunta

Ola..

tenho que fazer um relatorio com este layout:

PNEU-KMRODADO-VALOR-CUSTO P/ KM RODADO

----------------------------------------------------------

para pegar dados do:

Pneu uso a tabela: PNEU.DB

da Movimentação para achar o KmRodado uso a tabela: MOVI.DB

do custo do pneu uso a tabela: RECONST.DB

Eu consigo trazer o resultado separadamente, tipo primeiro o kmrodado e depois o custo, porem tenho que trazer estes numeros conforme layout...e não to conseguindo..

tentei usar um Union all mas parece que o paradox não suporta:

assim:

//CUSTO INICIO
SELECT Sum(Reconst.RCusto) as Total1,
Pneu.Numero, Pneu.Marca, Pneu.Modelo, Pneu.Tipo, Pneu.Serie, 
Pneu.Tamanho, Pneu.Lona
FROM PNEU, RECONST
WHERE Reconst.Data > "01/01/2009"
And Reconst.CodPen = Pneu.Codigo
Group By Pneu.Numero, Pneu.Marca, Pneu.Modelo, Pneu.Tipo,  
Pneu.Serie, Pneu.Tamanho, Pneu.Lona, Pneu.Custo
Order By Pneu.Numero
//CUSTO FIM
Union all
//KM RODADO INICIO
SELECT Sum(Movi.KmRodado) as Total2,
Pneu.Numero, Pneu.Marca, Pneu.Modelo, Pneu.Tipo, Pneu.Serie, 
Pneu.Tamanho, Pneu.Lona
FROM PNEU, MOVI
WHERE MOVI.Data > "01/01/2009"
And MOVI.CodPen = Pneu.Codigo
Group By Pneu.Numero, Pneu.Marca, Pneu.Modelo, Pneu.Tipo,  
Pneu.Serie, Pneu.Tamanho, Pneu.Lona, Pneu.Custo
Order By Pneu.Numero
//KM RODADO FIM

alguém teria alguma ideia de como fazer?

Grato

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
tentei usar um Union all mas parece que o paradox não suporta:
Suporta sim Eder (claro que pode não ser 100%). Apenas você tem que observar que as colunas das duas consultas devem ser iguais (nome e quantidade). Assim, você poderia modificar a consulta para:

//CUSTO INICIO
SELECT P.Numero, P.Marca, P.Modelo, P.Tipo, P.Serie, P.Tamanho, P.Lona, Sum(R.RCusto) as Total1, 0 as Total2
FROM PNEU P, RECONST R
:
:
Union all
//KM RODADO INICIO
SELECT P.Numero, P.Marca, P.Modelo, P.Tipo, P.Serie, P.Tamanho, P.Lona, 0 as Total1, Sum(M.KmRodado) as Total2
FROM PNEU P, MOVI M
:
:
Order By Pneu.Numero

Se não me falha a memória, a cláusula Order By aparece apenas uma vez no final (após todos os unions) e não esqueça que na cláusula group by, todas as colunas do select devem ser colocadas - exceto as que usam as funções de agregação.

Experimente a consulta e veja se funciona mesmo (99% de certeza). Mas vai ocorrer que você terá linhas onde uma das duas colunas estará com o valor 0 (já que assim o fixamos).

Não chega a ser um problema se você usar as bandas de agrupamento no seu relatório, porque os valores serão somados baseado neste agrupamento e então, visualmente você não perceberá este "detalhe".

Ainda acredito que haja outra possibilidade, utilizando Joins, mas teria que criar umas tabelas de teste e populá-las para ter certeza de lhe passar o sql correto. Se eu simplesmente postá-lo aqui, poderá estar errado e não irá lhe ajudar muito.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Ola..

Micheus...

o codigo ficou assim dentro das suas dicas:

SELECT P.Numero, P.Marca, P.Modelo, P.Tipo, P.Serie, P.Tamanho, P.Lona, Sum(R.RCusto) as Total1, 0 as Total2
FROM PNEU P, RECONST R
WHERE R.Data > "01/01/2009"
And R.CodPen = P.Codigo
Group By P.Numero, P.Marca, P.Modelo, P.Tipo,P.Serie, P.Tamanho, P.Lona
Union all
SELECT P.Numero, P.Marca, P.Modelo, P.Tipo, P.Serie, P.Tamanho, P.Lona, 0 as Total1, Sum(M.KmRodado) as Total2 
FROM PNEU P, MOVI M
WHERE M.Data > "01/01/2009"
And M.CodPen = P.Codigo
Group By P.Numero, P.Marca, P.Modelo, P.Tipo,P.Serie, P.Tamanho, P.Lona
Order By Pneu.Numero
deu quase tudo certo.... exceto:
Experimente a consulta e veja se funciona mesmo (99% de certeza). Mas vai ocorrer que você terá linhas onde uma das duas colunas estará com o valor 0 (já que assim o fixamos). Não chega a ser um problema se você usar as bandas de agrupamento no seu relatório, porque os valores serão somados baseado neste agrupamento e então, visualmente você não perceberá este "detalhe".
R.: aconteceu exatamente como preveu... o relatorio saiu assim:
pneu----custo----kmrodado
5000-----222---------------0
5000-------0----------15000
6000------345--------------0
6000-------0----------22878
teria que juntar como menciona... Como estou ultimamente usando FR-Free Report....não consigui fazer rodar diferente do acima. Ai tentei montar no quick e não estou conseguindo. Como sei que você não manja muito de FR como havia me dito no passado, pergunto: Quais as bandas devo inserir no quickreport para juntar os dados?....ficando assim:
pneu----custo----kmrodado
5000-----222---------15000
6000-----345---------22878

muito Grato mais uma vez pela ajuda. :)

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Eder, você usa uma banda de agrupamento (Group) "vazia" onde o campo de agrupamento (expression) deverá ser o código do Pneu. Já os dados a serem mostrados, como correspondem a totais, você coloca na banda Group Footer, onde as colunas a serem somadas você usa TQRExpr.

A banda detalhe é necessária, mas também não conterá nada e pode ter tamanho inicializado para zero antes da impressão do relatório (via código).

Talvez alguém saiba como fazer isto no Free-Report e lhe ajude. Seria mais interessante do que fazer uma salada no seu projeto.

A outra opção que lhe falei, possivelmente resolveria este problema, mas como disse, preciso de uma base de teste para tentar montar corretamente a consulta, já que raramente uso o Paradox. Se interessar, me envie uma pequena fração das tabelas em questão.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Beleza...Micheus..deu certo no quickreport.

Fiz conforme sua dica...

Eu tava no caminho certo, apenas não tinha inserido a bandaDetalhe.

só joguei a banda detalhe coloquei os QRExpr´s ResetAfterPrint=True e tudo rodou certinho

quanto a usar o FR, vou dar uma pesquisada para ver como funciona...mas não deve ser dificil não, pois na minha opnião o FR é mais facil de trabalhar que o quick...é mais maleável, acho eu, só não descobri como funciona nesta situação.

Bom....muito Grato.

Grande Abraço

:)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...