|
Postada em 11/04/2006 23:52 hs
Bom Noite. Referênte à programação abaixo tenho a soma correta. A subtração não subtrai, mas soma dando o resultado na negativa. A multiplcação dá erro 6 overflow (no baco da dados são 8 dezenas somente). Com isso já me perco na divisão que nem fiz ainda. Alquém pode me ajudar a identificar os erros. Muito obrigado
Option Explicit Dim Areadados As Database Dim Lista As Recordset Dim soma, subtracao, multiplicacao As Integer Dim divisao As Currency Dim total As Currency
Public Sub Abrir_Bancodados() Set Areadados = DBEngine.Workspaces(0).OpenDatabase(App.Path & "MSF.mdb") Set Lista = Areadados.OpenRecordset("Lista", dbOpenTable) Lista.Index = "PrimaryKey" End Sub
Private Sub cmdokmultiplicao_Click() Call Abrir_Bancodados multiplicacao = 0 While Not Lista.EOF total = total * Lista("numeros") Lista.MoveNext Wend Lbrespostac.Caption = total End Sub
Private Sub cmdoksoma_Click() Call Abrir_Bancodados soma = 0 While Not Lista.EOF total = total + Lista("numeros") Lista.MoveNext Wend LbrespostaA.Caption = total End Sub
Private Sub cmdoksubtracao_Click() Call Abrir_Bancodados subtracao = 0 While Not Lista.EOF total = total - Lista("numeros") Lista.MoveNext Wend LbrespostaB.Caption = total End Sub
|
TÓPICO EDITADO
|
|
|
|
|
|
Postada em 12/04/2006 09:50 hs
Multiplicação: O erro Overflow é pq vc definiu a variavel como INTEGER, que é limitada a 2x10^16... isso pouco mais q 30000... toca por LONG... se continuar dando esse erro, troca por DOUBLE
Subtração: Nesse caso, o erro é de logica... vamso fazer uma simulação com valores: inicialmente vc tem a variavel com 0. Ai subtrai o primeiro valor (2, por exemplo), entao fica com -2... Ai subtrai o segundo valor (4, por exemplo), entao fica com -6... assim por diante... Sinceramete nao entendi o q vc quer fazer com essa subtração... para subtrair, vc precisa subtrair de ALGO... vc ta iniciando com ZERO... esse é o erro.
Divisao: Bem, vou adiantar já o q vai dar erro na sua subtração... vc vai precisar de algo do que dividir... vai acontecer o mesmo q na subtração...
Posso fazer uma pergunta: PRA Q VC QUER ISSO TUDO ?????
Elieser Carlos Topassi Analista de Sistemas - Desenvolvedor VB/ASP/.Net
e-mail/msn: elieser_topassi@yahoo.com.br
São José do Rio Preto,SP - Brasil _____________________________________________________ "O caminho do tolo aos seus prórios olhos lhe parece reto, mas o sábio ouve conselhos" (Pv 12:15)
|
|
|
Alê35
|
SÃO PAULO SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 12/04/2006 10:03 hs
Olá Kayowa, bom dia. Aparentemente são erros simples e distintos: 1 - Na Sub cmdokmultiplicao_Click() você inicializa a variável "multiplicacao" com zero mas não a utiliza, pelo contrário você está utilizando a variável "total" que a cada loop na sua lista, agrega a multiplicação do campo "numeros". Isto está gerando um resultado exponencial que está excedendo o limite que a memória suporta. 2 - Na Sub cmdoksoma_Click() você inicializa a variável "soma" com zero mas não a utiliza, pelo contrário você está utilizando a variável "total" que a cada loop na sua lista, agrega a soma do campo "numeros". Você obtem o resultado esperado por que é exatamente isso que a rotina está fazendo. Acumulando valores numa variável.
3 - Na Sub cmdoksubtracao_Click() você inicializa a variável "subtracao" com zero mas não a utiliza, pelo contrário você está utilizando a variável "total" que a cada loop na sua lista, subtrai o valor do campo "numeros". Como a variavel "Total" começa com zero, você obtem o resultado negativo por que é exatamente isso que a rotina está fazendo. Acumulando valores numa variável com o sinal negativo. Minha sugestão é que você reveja suas fórmulas. Espero ter colaborado. Boa sorte!
|
|
|
Kayowa
|
SÃO GONÇALO RJ - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 12/04/2006 18:09 hs
Muito obrigado em responderem. Comecei a pouco tempo, três meses, num curso de VB e logo de cara tive esse exercício de casa para fazer e estou tentando resolver para entregar esta semana. Estou ainda com muita dúvida e só vou estar com o professor, na seg, e não poderi tirar as dúvidas. Novamente agradeço.
|
|
|
|