MUDAR SINAL EM RESULTADO DE SOMA

ARES 09/07/2012 17:48:57
#405738
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



MARCELO.TREZE 09/07/2012 19:00:28
#405739
Resposta escolhida
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.

FEDERHEN 10/07/2012 08:02:26
#405770
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
ARES 11/07/2012 10:12:53
#405845
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
CAIO.FR.SP 11/07/2012 10:50:45
#405848
Pelo que entendi isso bastaria

Me.txtsaldobase = Empty & replace((rs!credito - rs!debito),[Ô]-[Ô],[Ô][Ô])


MARCELO.TREZE 11/07/2012 11:04:08
#405850
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



FEDERHEN 11/07/2012 11:45:35
#405855
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.
Tópico encerrado , respostas não são mais permitidas