AJUDA EM SELECT

JILNEY 10/04/2010 09:35:52
#338994
Pessoal, tenho o select abaixo que retorna dados da tabela PRODUTO e ENTRADA no estoque, mas quero que retorne o estoque atual, que deve ser o somatorio do campo QUANT da tabela ENTRADA menos o somatorio do campo quant da tabela VENDA

With cmd
.ActiveConnection = cnn
.CommandType = adCmdText
.CommandText = [Ô]select Produto.cod, Produto.nome, [Ô] & _
[Ô]entrada.cod_prod, sum(quant) as TOTAL from produto [Ô] & _
[Ô]left join entrada [Ô] & _
[Ô]on produto.cod = entrada.cod_prod [Ô] & _
[Ô]group by produto.cod, produto.nome, entrada.cod_prod[Ô]
Set rs = .Execute
End With
EDERMIR 10/04/2010 18:31:31
#339037
JILNEY.

Sua dúvida é em VB ou SQL?

São duas linguagens diferentes.
MAXGUIMEL 10/04/2010 18:39:31
#339039
Amigo, faça a abertura das duas tabelas normalmente.

Depois declare tres variaveis do tipo double

dim Valor1 as double
dim Valor2 as double
dim Valor3 as double

depois coloque o valor de cada campo em uma variavel
valor1 = tabela1!campo
valor2 = tabela2!campo

valor3 = valor1 - valor2

ou txtvalor = valor1 - valor 2

Espero ter ajudado!
Abraços!
JILNEY 10/04/2010 21:05:14
#339043
O problema e que tô usando isto para preencher um MsHflexGrid e com variavel fica dificil, eu consegui o resultado usando um FOR mas gostaria de achar uma maneira de trazer direto do BD atraves do Select

Puxo os Campos COD do produto, NOME, TOTAL das ENTRADAS

Private Sub Todos_produtos_rs()

With cmd
.ActiveConnection = cnn
.CommandType = adCmdText
.CommandText = [Ô]select Produto.cod, Produto.nome, [Ô] & _
[Ô]entrada.cod_prod, sum(quant) as TOTAL from produto [Ô] & _
[Ô]inner join entrada [Ô] & _
[Ô]on produto.cod = entrada.cod_prod [Ô] & _
[Ô]group by produto.cod, produto.nome, entrada.cod_prod[Ô]
Set rs = .Execute
End With

End Sub

Jogo no Flex:

Private Sub preenche_hflex1()

If rs.RecordCount > 0 Then
With HFlex1
.Enabled = True
.Clear
.Cols = 5
.AllowUserResizing = flexResizeColumns
.SelectionMode = flexSelectionByRow
.ColWidth(0) = 600
.ColWidth(1) = 0
.ColWidth(2) = 3000
.ColWidth(3) = 800
.ColWidth(4) = 1200
.ColAlignment(4) = 6
.SelectionMode = flexSelectionByRow
.TextMatrix(0, 1) = [Ô]Cod[Ô]
.TextMatrix(0, 2) = [Ô]Produto[Ô]
.TextMatrix(0, 3) = [Ô]Estoque[Ô]
.TextMatrix(0, 4) = [Ô]Valor Unitário[Ô]
.Rows = rs.RecordCount + 1
rs.MoveFirst
For i = 1 To rs.RecordCount
.TextMatrix(i, 1) = IIf(IsNull(rs!cod), [Ô][Ô], rs!cod)
.TextMatrix(i, 2) = IIf(IsNull(rs!nome), [Ô][Ô], rs!nome)
.TextMatrix(i, 3) = IIf(IsNull(rs!total), [Ô][Ô], rs!total)
rs.MoveNext
Next i
End With
rs.Close
Else
HFlex1.Clear
HFlex1.Enabled = False
End If

End Sub

Depois atualizo o estoque com o codigo abaixo diminuindo a QUANTIDADE das das vendas da QUANTIDADE das entradas que ja esta lancada no GRID:

Private Sub atualizar_estoque()

With cmd
.ActiveConnection = cnn
.CommandType = adCmdText
.CommandText = [Ô]select cod_prod, sum(quant) as vendidos from vendas [Ô] & _
[Ô]group by cod_prod[Ô]
Set rs2 = .Execute
End With
With rs2
If rs2.RecordCount <> 0 Then
.MoveFirst
With HFlex1
Do While Not rs2.EOF
For i = 1 To HFlex1.Rows - 1
If .TextMatrix(i, 1) = rs2!cod_prod Then
.TextMatrix(i, 3) = .TextMatrix(i, 3) - rs2!vendidos
End If
Next i
rs2.MoveNext
Loop
End With
End If
End With

End Sub


Mas assim ta GAMBIARRA né ?
Tópico encerrado , respostas não são mais permitidas