MUDAR SINAL EM RESULTADO DE SOMA
Amigos, boa tarde!
Estou colocando em meu programa uma modulo básico de contabilidade. Fiz uma tabela onde os movimentos de débito e crédito são lançados da seguinte forma:
Venda de mercadoria: 10,00
D: Cliente 10,00
C: Receita com vendas 10,00
Onde, na tabela tenho os campos
Conta_contábil; débito; crédito
1.1.1.1.01 10,00 0,00
5.1.1.2.04 0,00 10,00
E assim por diante.
Bom, quanto estou fechando o balanço e faço a apuração das contas estou ficando com números negativos, ou seja o cálculo é feito da forma correta
entretanto, as contas de débito estão ficando negativas ou caso inverto os sinais a conta de crédito é quem fica.
Estou usando o seguinte código para atualizar os dados (neste modelo o débito está ficando negativo)
Private Sub balanco()
[ô]On Error GoTo errlocalizacao
Dim rs As New ADODB.Recordset
Dim mycon1 As New ADODB.Connection
mycon1.Open [Ô]dsn=est1112[Ô]
Dim sSQL As String
sSQL = [Ô] select tblplanoconta1.conta_credora, sum(tblplanoconta1.credito) as credito, sum(tblplanoconta1.debito) as debito, tblplanoconta1.consolidado from tblplanoconta1 where tblplanoconta1.consolidado = 0 group by tblplanoconta1.conta_credora, tblplanoconta1.consolidado [Ô]
rs.CursorLocation = adUseClient
rs.Open sSQL, mycon1, adOpenKeyset, adLockOptimistic, adCmdText
rs.ActiveConnection = Nothing
Do While Not rs.EOF
Me.txtcontabase = Empty & rs!Conta_credora
Me.txtsaldobase = Empty & (rs!credito * 1 - (rs!debito))
atubalanco
rs.MoveNext
Loop
Saida:
Set rs = Nothing
[ô] Set mycmd = Nothing
mycon1.Close
Exit Sub
errlocalizacao:
With Err
If .number <> 0 Then
MsgBox [Ô]Ocorreu um erro, favor verificar com o administrador.[Ô], vbInformation, [Ô]Objetivo[Ô]
.number = 0
GoTo Saida
End If
End With
End Sub
Teriam uma sugestão para resolver este problema?
Desde já agradeço
Estou colocando em meu programa uma modulo básico de contabilidade. Fiz uma tabela onde os movimentos de débito e crédito são lançados da seguinte forma:
Venda de mercadoria: 10,00
D: Cliente 10,00
C: Receita com vendas 10,00
Onde, na tabela tenho os campos
Conta_contábil; débito; crédito
1.1.1.1.01 10,00 0,00
5.1.1.2.04 0,00 10,00
E assim por diante.
Bom, quanto estou fechando o balanço e faço a apuração das contas estou ficando com números negativos, ou seja o cálculo é feito da forma correta
entretanto, as contas de débito estão ficando negativas ou caso inverto os sinais a conta de crédito é quem fica.
Estou usando o seguinte código para atualizar os dados (neste modelo o débito está ficando negativo)
Private Sub balanco()
[ô]On Error GoTo errlocalizacao
Dim rs As New ADODB.Recordset
Dim mycon1 As New ADODB.Connection
mycon1.Open [Ô]dsn=est1112[Ô]
Dim sSQL As String
sSQL = [Ô] select tblplanoconta1.conta_credora, sum(tblplanoconta1.credito) as credito, sum(tblplanoconta1.debito) as debito, tblplanoconta1.consolidado from tblplanoconta1 where tblplanoconta1.consolidado = 0 group by tblplanoconta1.conta_credora, tblplanoconta1.consolidado [Ô]
rs.CursorLocation = adUseClient
rs.Open sSQL, mycon1, adOpenKeyset, adLockOptimistic, adCmdText
rs.ActiveConnection = Nothing
Do While Not rs.EOF
Me.txtcontabase = Empty & rs!Conta_credora
Me.txtsaldobase = Empty & (rs!credito * 1 - (rs!debito))
atubalanco
rs.MoveNext
Loop
Saida:
Set rs = Nothing
[ô] Set mycmd = Nothing
mycon1.Close
Exit Sub
errlocalizacao:
With Err
If .number <> 0 Then
MsgBox [Ô]Ocorreu um erro, favor verificar com o administrador.[Ô], vbInformation, [Ô]Objetivo[Ô]
.number = 0
GoTo Saida
End If
End With
End Sub
Teriam uma sugestão para resolver este problema?
Desde já agradeço
bom colega ainda ficou meio dificil de entender o problema, vou explicar o que eu entendi.
no visual basic, se você fizer 10-20 vc ficará com (-10), ou se fizer 0-20 ficara com (-20), porém se fizer o contrário 20-10, ou 20-0 var ter sucessivamente 10 e 20,
agora se o problema for você quere que este calculo (10-20) fique = a 10 então use o abs assim
Abs(10-20), e isso vai resolver o problema se o problema for esse.
no visual basic, se você fizer 10-20 vc ficará com (-10), ou se fizer 0-20 ficara com (-20), porém se fizer o contrário 20-10, ou 20-0 var ter sucessivamente 10 e 20,
agora se o problema for você quere que este calculo (10-20) fique = a 10 então use o abs assim
Abs(10-20), e isso vai resolver o problema se o problema for esse.
Para inverter um sinal basta multiplicar por -1
Exemplo:
a) Se 10-15 igual a -5 e você quer o resultado 5, pode fazer assim: 10-15 = -5 e depois -5 * -1 = 5
b) Se 15-10 igual a 5 e você quer o resultado -5, pode fazer assim: 15-10 = 5 e depois 5 * -1 = -5
Exemplo:
a) Se 10-15 igual a -5 e você quer o resultado 5, pode fazer assim: 10-15 = -5 e depois -5 * -1 = 5
b) Se 15-10 igual a 5 e você quer o resultado -5, pode fazer assim: 15-10 = 5 e depois 5 * -1 = -5
Amigos, bom dia!
Obrigado pela resposta. Contudo já havia feito o testes das duas formas e não resolveu o problema.
Segue maior elucidação:
Quando estou apurando as contas contábeis tenho a seguinte situação:
Conta: Débito Crédito
1.1.1.1.01 1.000,00 0,00
1.1.1.1.01 0,00 100,00
1.1.1.1.01 0,00 150,00
Resultado:
1.1.1.1.01 1.000,00 - 250,00
1.1.1.1.01 750,00
Sendo assim, com resultado positivo, contudo quanto tenho esta situação:
Conta: Débito Crédito
2.1.1.1.01 0,00 1.000,00
2.1.1.1.01 100,00 0,00
2.1.1.1.01 150,00 0,00
Resultado: 250,00 - 1.000,00
2.1.1.1.01 -750,00
Neste ponto que preciso de uma orientação de como o número ficar positivo, pois quando mudo o sinal do cálculo
os multiplico por um número negativo a conta invertida (débito ou crédito) da problema.
Teriam uma outra ideia para compartilhar.
Desde já agradeço
Obrigado pela resposta. Contudo já havia feito o testes das duas formas e não resolveu o problema.
Segue maior elucidação:
Quando estou apurando as contas contábeis tenho a seguinte situação:
Conta: Débito Crédito
1.1.1.1.01 1.000,00 0,00
1.1.1.1.01 0,00 100,00
1.1.1.1.01 0,00 150,00
Resultado:
1.1.1.1.01 1.000,00 - 250,00
1.1.1.1.01 750,00
Sendo assim, com resultado positivo, contudo quanto tenho esta situação:
Conta: Débito Crédito
2.1.1.1.01 0,00 1.000,00
2.1.1.1.01 100,00 0,00
2.1.1.1.01 150,00 0,00
Resultado: 250,00 - 1.000,00
2.1.1.1.01 -750,00
Neste ponto que preciso de uma orientação de como o número ficar positivo, pois quando mudo o sinal do cálculo
os multiplico por um número negativo a conta invertida (débito ou crédito) da problema.
Teriam uma outra ideia para compartilhar.
Desde já agradeço
Pelo que entendi isso bastaria
Me.txtsaldobase = Empty & replace((rs!credito - rs!debito),[Ô]-[Ô],[Ô][Ô])
Bom colega a situação ta meio estranha, a conta correta a se fazer é (credito - debito) não o contrário
então
se você tem um débito de 1000,00 e dois créditos de 100,00 e 150,00 é correto que o valor fique -750,00, isto é certo
no caso inverso ficaria, o valor positivado, então em meu ver o valor negativado é correto.
agora a questão do calculo estar gerando erro se dá pelo método que está usando, o tipo de campo no banco de dados, etc
meu conselho é fazer todo calculo direto no vb buscando a penas os dados no banco.
eu anexei um exemplo basico para entendimento
então
se você tem um débito de 1000,00 e dois créditos de 100,00 e 150,00 é correto que o valor fique -750,00, isto é certo
no caso inverso ficaria, o valor positivado, então em meu ver o valor negativado é correto.
agora a questão do calculo estar gerando erro se dá pelo método que está usando, o tipo de campo no banco de dados, etc
meu conselho é fazer todo calculo direto no vb buscando a penas os dados no banco.
eu anexei um exemplo basico para entendimento
Acho que o teu problema está apenas na mascara de exibição dos dados.
Você deve fazer os calculos normalmente e eliminar o sinal no gerador de relatórios.
Você deve fazer os calculos normalmente e eliminar o sinal no gerador de relatórios.
Tópico encerrado , respostas não são mais permitidas