[ONLY EXPERT] UNIR TABELAS POR DATA SOMAR VALOR

WEBIER 19/10/2010 17:01:03
#355489
Tenho 02 tabelas tabelas uma chama-se CAIXA_DIA e a outra CAIXA_SALDO_RETIRADA

na tabela CAIXA_DIA tenho os campos DATA e SALDO
para cada fechamento de caixa é criado um registro com a data do dia que o caixa foi fechado(DATA) e o valor do caixa (SALDO)

exemplo:
01/10 10,00
02/10 22,00
03/10 17,50


na tabela CAIXA_SALDO_RETIRADA tem o campo DATA e VALOR
faço varios registos para uma mesma data, ou seja, pode ter um, dois, tres ou mais registros com valores diferentes(VALOR) para uma mesma data (DATA)

exemplo:
02/10 5,00
02/10 7,00
03/10 6,50


To precisando preencher um flexgrid com essas informações, ou seja, mostrar a DATA, SALDO, SOMA_RETIRADAS

Quero montar assim:
exemplo:

DATA VALOR RETIRADAS
01/10 10,00 0,00
02/10 22,00 12,00 (é a soma dos 2 registros com essa data)
03/10 17,50 6,50


ai tentei fazer assim:

[ô]pegar os dados da tabela CAIXA_DIA
    Call ABRIR_BD_SEM_DATA1
SQL = [Ô]SELECT * FROM CAIXA_DIA ORDER BY DATA desc[Ô]
Set RS = BD.OpenRecordset(SQL)

FormatarGrid_Lancamentos


[ô]mostrar os dados no flexgrid
Private Sub FormatarGrid_Lancamentos()
With Grid
.Clear
.Cols = 5
.Rows = 2

.ColWidth(0) = 0
[ô] .ColWidth(1) = 400
.ColWidth(2) = 950
.ColWidth(3) = 1350
.ColWidth(4) = 1350


[ô] .TextMatrix(0, 1) = [Ô]CÓD[Ô]
.TextMatrix(0, 2) = [Ô]DATA[Ô]
.TextMatrix(0, 3) = [Ô]SALDO[Ô]
.TextMatrix(0, 4) = [Ô]RETIRADAS[Ô]


Do Until RS.EOF
Grid.Redraw = False

[ô]If Not IsNull(RS!CODIGO) Then .TextMatrix(.Rows - 1, 1) = RS!CODIGO
If Not IsNull(RS!Data) Then .TextMatrix(.Rows - 1, 2) = Format(RS!Data, [Ô]dd/mm/yy[Ô])
If Not IsNull(RS!SALDO) Then .TextMatrix(.Rows - 1, 3) = Format(RS!SALDO, [Ô]##,##0.00[Ô])
[ô]If Not IsNull(RS!SOMA_RETIRADA) Then .TextMatrix(.Rows - 1, 4) = Format(RS!SOMA_RETIRADA, [Ô]##,##0.00[Ô])

RS.MoveNext
.Rows = .Rows + 1

Loop
.Rows = .Rows - 1
Grid.Redraw = True
End With
End Sub


como esse código acima consigo mostrar o campo DATA, SALDO da tabela CAIXA_DIA no flexgrid
não conseguir unir as 2 tabelas e somar os valores das retiradas que tiver a mesma data para exibir no grid.
MAUMAU 19/10/2010 17:49:24
#355493
Resposta escolhida
tenta assim:

SQL = [Ô]SELECT T0.Data,T0.Saldo,(Select Sum(Valor) From CAIXA_SALDO_RETIRADA Where Data = T0.Data) as Soma_Retirada
FROM CAIXA_DIA T0 ORDER BY DATA desc[Ô]

Abraços
Tópico encerrado , respostas não são mais permitidas