crax15 Posted March 1, 2014 at 01:12 PM Report #547221 Posted March 1, 2014 at 01:12 PM (edited) Boa tarde, gostava de saber se é possivel fazer um calculo como o seguinte exempo Tenho o Campo VALOR e o Campo TIPO E no campo tipo sei que o valor 1 e 4 é de entrada de fundos e o valor 2 e 3 é de saida Gostava de saber se é possivel fazer uma instruçao que fizesse a soma dos de entrada e dos de saida e depois subtraisse os dois para retornar o total de fundos. Exemplo: total de fundos =soma(Valores onde tipo = x...) - soma(Valores onde tipo = y...) Obrigado! Edited March 1, 2014 at 04:23 PM by crax15 Pedro'O
acao Posted March 1, 2014 at 09:58 PM Report #547244 Posted March 1, 2014 at 09:58 PM (edited) boas estude este cod e adapte com o seu exemplo que colocou. Option Compare Database Dim Con As ADODB.Connection Dim Com As ADODB.Command Private Sub cmdConsulta_Click() Dim Comd As New ADODB.Command Dim rst As New ADODB.Recordset 'comando sem parâmetros Comd.ActiveConnection = CurrentProject.Connection Comd.CommandText = "SELECT *FROM ConsTeste where ID = 2" Comd.CommandType = adCmdText: Set rst = Comd.Execute Texto2.SetFocus Texto2.Text = rst!nome 'amostra o campo nome Comd.Cancel End Sub Private Sub CmdInserir_Click() Dim Comd As New ADODB.Command Dim rst As New ADODB.Recordset Dim sql As String Texto2.SetFocus If Texto2.Value <> "" Then 'insere o valor do campo texto2 na coluna nome da tabela sql = ("INSERT INTO teste (nome) values ('" & Texto2 & "');") Comd.ActiveConnection = CurrentProject.Connection Comd.CommandType = adCmdText Comd.CommandText = sql Comd.Execute MsgBox ("insert com sucesso") Texto2 = "" Else MsgBox ("preencha o campo nome") End If Comd.Cancel Set Comd = Nothing End Sub Private Sub cmdUpdate_Click() Dim com As New Command Texto2.SetFocus Dim texto As Boolean texto = True 'comando sem parâmetros Dim sql As String sql = ("UPDATE teste set moeda = " & texto & " WHERE ID = 20") com.ActiveConnection = CurrentProject.Connection com.CommandType = adCmdText com.CommandText = sql com.Execute MsgBox ("UPDATE com sucesso") Set com = Nothing End Sub cumps acao ou no campo aonde queres que apareçam os dados (total de fundos) na vista de estrutura escolhes o evento e depois e clikas em ...pontos e depois em construtor de código e fazes as contas. utilizas a função me me.nomedocampo.text = me.nomedocampo..x.value + nomedocampo..y.value etc. penso que também deve resultar. cumps acao Edited March 1, 2014 at 10:35 PM by acao
Rui Carlos Posted March 2, 2014 at 01:06 AM Report #547249 Posted March 2, 2014 at 01:06 AM Em SQL, isso deve ficar algo como: select (select sum(valor) from tbl where tipo = 1 or tipo = 4) - (select sum(valor) from tbl where tipo = 2 or tipo = 3); Ou seja, calculas a soma das entradas e a soma das saídas, e depois aplicas a subtracção. Rui Carlos Gonçalves
crax15 Posted March 2, 2014 at 08:32 AM Author Report #547252 Posted March 2, 2014 at 08:32 AM Em SQL, isso deve ficar algo como: select (select sum(valor) from tbl where tipo = 1 or tipo = 4) - (select sum(valor) from tbl where tipo = 2 or tipo = 3); Ou seja, calculas a soma das entradas e a soma das saídas, e depois aplicas a subtracção. Muito, muito obrigado! Resultou! deixo aqui o codigo de como ficou: SELECT Distinct((SELECT SUM(valor) FROM Movimentos WHERE tipo = 1 OR tipo = 4)-(SELECT SUM(valor) FROM Movimentos WHERE tipo = 2 OR tipo = 3)) AS Saldo From Movimentos ; tive de adicionar o distinct pois ele repetia o mesmo valor por todos os campos que tinha. Andei lá perto... 😛 Pedro'O
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now