Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcelo Leite

Calcular valores

Recommended Posts

Olá pessoal sou novo por aqui e em pragramação tambemEu preciso de fazer um calculo de alguns campos + - assimquantidade1 x valor unitario1 = valor total1quantidade2 x valor unitario2 = valor total2total = valor total1 + valor total 2essa pag está em aspSe alguem conhecer um script que eu possa usar para fazer isso eu agradeço.Ah será que é possivel esse script funcionar quando eu mudar de campo?Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal sou novo por aqui e em pragramação tambemEu preciso de fazer um calculo de alguns campos + - assimquantidade1 x valor unitario1 = valor total1quantidade2 x valor unitario2 = valor total2total = valor total1 + valor total 2essa pag está em aspSe alguem conhecer um script que eu possa usar para fazer isso eu agradeço.Ah será que é possivel esse script funcionar quando eu mudar de campo?Vlw

Colega,cria um form com 2 campos:campo1campo2na hora que você der o submit você faz um request.form destes camposcampo1 = request.Form("campo1")campo2 = request.Form("campo")'calcula o resultadoresultado = cint(campo1) * cint(campo2)response.write(FormatNumber(resultado))

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se entendi direito, isso deve funcionario (fiz rapido hehe)

Nome do arquivo: teste.asp

<%@ Language=VBScript %><form name="form1" method="post" action="teste.asp?i=i"> Valor 1: <input type="text" name="valor1" value="<%=request("valor1")%>">  <input type="text" name="valor12" value="<%=request("valor12")%>"><br> Valor 2: <input type="text" name="valor2" value="<%=request("valor2")%>">  <input type="text" name="valor22" value="<%=request("valor22")%>"><br> <input type="submit" value="Calcular"></form><%if request("i") = "i" then	'declara as variaveis	dim vx,vy,tot	'calcula o valor 1 (replace para o programa funcionar tanto com "." como com ","	vx = replace(request("valor1"),".",",") * replace(request("valor12"),".",",")	'calcula o valor 2	vy = replace(request("valor2"),".",",") * replace(request("valor22"),".",",")	'calcula seu total	tot = vx + vy	'printa os valores calculados dos campos 1 e 2	response.write "Total 1 = " & vx & "<br>" & "Total 2 = " & vy & "<br>"	'printa o total geral	response.write formatnumber(tot,2)  end if%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcelo, por que você não faz em JavaScript? Assim você não precisaria ficar carregando uma página ASP toda vez que o cliente quisesse verificar um valor. Com JavaScript ficaria muito, mas muito mais rápido! Embora eu seja um fã de carteirinha do ASP, eu devo reconhecer que, em algumas ocasiões, o JScript se sai muito melhor.Para fazer um código em JScript você utilizaria poucas linhas... poderia validar os campos.. etc...Fica aí a sugestão...Um abraço e boa sorte!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vasculhando achei uma coisa interessante: como calcular o salario por hora só que em javascript. basta copiar,colar e salvar como html que ta rodando segue o codigo:

 

<!DOCTYPE html>
<html>
<head>
<title>Cálculo de salário</title>
<meta charset="UTF-8" />
<script type="text/javascript">
function calculaSalario(){
var valor = document.getElementById("valor").value;
var quantidade = document.getElementById("quantidade").value;
var salario = valor*quantidade;
alert(salario);
}
</script>
</head>
<body>
<fieldset>
<legend>Cálculo do salário</legend>
<label>Valor da hora:</label>
<input id="valor" type="text"/>
<label>Quantidade de horas trabalhadas:</label>
<input id="quantidade" type="text"/>
<button id="calcular" onclick="calculaSalario()">Calcular salário</button>
</fieldset>
</body>
</html>
mas..... como nem tudo é perfeito esse codigo nao calcula casas decimais e outra pergunta como faria para calcular um locação tipo aquelas de dvd mesmo.
Exe:. o valor mensal é 85 reais logo o diario é 2,833333 como faço para fazer um calculo mensal caso o cara tenha alugado 4 dvds?
as variaveis em dias destintos do mes um dia 1 outro dia 10 outro dia 21 e o mais dificil uma locaçao do dia 1-5 e no mesmo mes 20-30?
se poderem me dar uma luz

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for no ASP fica assim:

 

'Inicio do Loop
valor_total = var("valor_unitario") * var("quantidade")
response.write FormatNumber(valor_total,2)

total_geral = total_geral + valor_total
' Término do Loop

 

response.write FormatNumber(total_geral,2)

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for no ASP fica assim:

 

'Inicio do Loop

valor_total = var("valor_unitario") * var("quantidade")

response.write FormatNumber(valor_total,2)

 

total_geral = total_geral + valor_total

' Término do Loop

 

response.write FormatNumber(total_geral,2)

 

Abraços!

fabio mesmo para numero com casas decimais??? 85/30 da 2,83333 na logica primeiro eu tenho que saber a qnt de dias que fico alugado certo? como posso fazer isso td mes? vc tema lguma ideia eu pensei pela data no mes mas a ultima vez que mexi com data quase dei um nó no cerebro rsrsr pensei em tipo enquanto status ativo +1 e criar outra pagina so para calcular qntd dias x 2,833

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, primeiramente para calcular entre datas, os campos precisam estar no formato data que fica mais fácil.

 

A primeira coisa a fazer é gravar a data de locação de cada filme.

 

- No ato da entrega do filme, você pega a data de locação, e faz um loop adicionando + 1 dia na data de locação e coloca um contador dentro do loop, quando a data for igual a data atual você finaliza o Loop e saberá quantos dias ficou locado, assim você pode facilmente calcular o preço.

 

Exemplo:

 

Data_Locacao = var("data_locacao")
Data_Entrega = now

 

While Data_Locacao <> Data_Entrega

Data_Locacao = DateAdd("d",1,Data_Locacao)

quantidade = quantidade + 1

Wend

 

valor_diario = var("valor_mensal") / 30

 

valor_diario = valor_diario * quantidade

 

'Exibe valor

response.write FormatNumber(valor_diario,2)

 

- Devem existir outros métodos mais fácil de calcular um intervalo entre datas, mas essa minha lógica acima creio funcionar.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, primeiramente para calcular entre datas, os campos precisam estar no formato data que fica mais fácil.

 

A primeira coisa a fazer é gravar a data de locação de cada filme.

 

- No ato da entrega do filme, você pega a data de locação, e faz um loop adicionando + 1 dia na data de locação e coloca um contador dentro do loop, quando a data for igual a data atual você finaliza o Loop e saberá quantos dias ficou locado, assim você pode facilmente calcular o preço.

 

Exemplo:

 

Data_Locacao = var("data_locacao")

Data_Entrega = now

 

While Data_Locacao <> Data_Entrega

Data_Locacao = DateAdd("d",1,Data_Locacao)

quantidade = quantidade + 1

Wend

 

valor_diario = var("valor_mensal") / 30

 

valor_diario = valor_diario * quantidade

 

'Exibe valor

response.write FormatNumber(valor_diario,2)

 

- Devem existir outros métodos mais fácil de calcular um intervalo entre datas, mas essa minha lógica acima creio funcionar.

 

Abraços!

Fabio entendi a sua logica mas tenho outra duvida como poderia fazer para zerar e recomeçar td ms isso? ou sei la atingir o limite de 85 e parar nesse valor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

um if ou select case resolve

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi.

 

Para parar o código, faz assim:

 

Data_Locacao = var("data_locacao")
Data_Entrega = now

 

While Data_Locacao <> Data_Entrega

Data_Locacao = DateAdd("d",1,Data_Locacao)

quantidade = quantidade + 1

 

 

'Se valor diário for maior ou igual a 85, faz a data de locação igual a hoje para encerrar o loop.

if valor_diario >= 85 then

Data_Locacao = now

ent if

 

Wend

 

valor_diario = var("valor_mensal") / 30

 

valor_diario = valor_diario * quantidade

 

 

'Exibe valor

response.write FormatNumber(valor_diario,2)

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem um exemplo que postei, de cálculo trabalhista, onde dependendo dos anos, anuênio, tempo ele vai paras uma determinado laço se atingir determinados limites, dá uma olhada pode te ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera to tentando fazer o fechamento mensal em cima da dica do fabio mas ta tenso tenho varias condicionais e queria a ajuda de vcs: para fazer o calculo vou usar data inicio e data fim o usuario responsavel pelo fechamento vai todo dia 30 clicar no botao gerar fechamento e o mesmo vai dar um update onde a data fim estiver vazia(em branco) e vai gravar a data atual ou seja o dia 30 do mes corrente. até ae blz mas e a data inicio??? como fazer para atualizar a data inicio que estiver em branco com a data 01 do mes corrente sendo que estaremos no dia 30??

outra duvida uma variavel com valor 0 é o mesmo que vazia, em branco etc...???

var_data = date ()

var_zero = (0)

 

vSql="UPDATE TAB_QUADRO_BRASFELS SET DATA_FIM = '"&var_DATA&"' WHERE DATA_FIM='"&var_zero&"'"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Continuo coma duvida acima mas fui escrevendo o codigo como teoricamente ficaria segue o mesmo:

 

<!-- #include file="conntest.asp" -->
<%
DIM var_valordiario,var_quantidade,var_customensal
var_data = date ()
VAR_zero = ("")
var_valordiario_desktop = 85/29
var_valordiario_monitor = 17/29
var_valordiario_notebook = 170/29
var_valordiario_projetor = 255/29
var_valordiario_nobreak = 25/29
var_valordiario_impressora = 59/29
vSql="UPDATE TAB_QUADRO_BRASFELS SET DATA_FIM = #"&var_DATA&"# WHERE DATA_FIM='"&var_data&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
vSql = "SELECT * from TAB_QUADRO_BRASFELS where valor<>'"&var_zero&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
do while not myRst.EOF
var_codigo = myrst.fields("CODIGO")
var_datainicio = myrst.fields("data_inicio")
var_datafim = myrst.fields("data_fim")
var_valor= myrst.fields("valor")
var_descricao = myrst.fields("descricao")
select case var_descricao
case "DESKTOP"
while var_datainicio<>var_datafim
var_datainicio=DateAdd("d",1,var_datainicio)
var_quantidade=var_quantidade + 1
if var_valor<= ("85") then
var_customensal=var_valordiario_desktop * var_quantidade
end if
vSql="UPDATE TAB_QUADRO_BRASFELS SET valor = '"&var_customensal&"', DATA_INICIO='"&VAR_zero&"', DATA_FIM = '"&VAR_zero&"' WHERE codigo='"&var_codigo&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
wend
CASE "MONITOR"
while var_datainicio<>var_datafim
var_datainicio=DateAdd("d",1,var_datainicio)
var_quantidade=var_quantidade + 1
if var_valor<= ("17") then
var_customensal=var_valordiario_monitor * var_quantidade
end if
vSql="UPDATE TAB_QUADRO_BRASFELS SET valor = '"&var_customensal&"', DATA_INICIO='"&VAR_zero&"', DATA_FIM = '"&VAR_zero&"' WHERE codigo='"&var_codigo&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
wend
CASE "NOTEBOOK"
while var_datainicio<>var_datafim
var_datainicio=DateAdd("d",1,var_datainicio)
var_quantidade=var_quantidade + 1
if var_valor<= ("170") then
var_customensal=var_valordiario_NOTEBOOK * var_quantidade
end if
vSql="UPDATE TAB_QUADRO_BRASFELS SET valor = '"&var_customensal&"', DATA_INICIO='"&VAR_zero&"', DATA_FIM = '"&VAR_zero&"' WHERE codigo='"&var_codigo&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
wend
CASE "PROJETOR"
while var_datainicio<>var_datafim
var_datainicio=DateAdd("d",1,var_datainicio)
var_quantidade=var_quantidade + 1
if var_valor<= ("255") then
var_customensal=var_valordiario_PROJETOR * var_quantidade
end if
vSql="UPDATE TAB_QUADRO_BRASFELS SET valor = '"&var_customensal&"', DATA_INICIO='"&VAR_zero&"', DATA_FIM = '"&VAR_zero&"' WHERE codigo='"&var_codigo&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
wend
CASE "NOBREAK"
while var_datainicio<>var_datafim
var_datainicio=DateAdd("d",1,var_datainicio)
var_quantidade=var_quantidade + 1
if var_valor<= ("25") then
var_customensal=var_valordiario_NOBREAK * var_quantidade
end if
vSql="UPDATE TAB_QUADRO_BRASFELS SET valor = '"&var_customensal&"', DATA_INICIO='"&VAR_zero&"', DATA_FIM = '"&VAR_zero&"' WHERE codigo='"&var_codigo&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
wend
CASE "IMPRESSORA"
while var_datainicio<>var_datafim
var_datainicio=DateAdd("d",1,var_datainicio)
var_quantidade=var_quantidade + 1
if var_valor<= ("59,5") then
var_customensal=var_valordiario_IMPRESSORA * var_quantidade
end if
vSql="UPDATE TAB_QUADRO_BRASFELS SET valor = '"&var_customensal&"', DATA_INICIO='"&VAR_zero&"', DATA_FIM = '"&VAR_zero&"' WHERE codigo='"&var_codigo&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
wend
CASE "IMP"
while var_datainicio<>var_datafim
var_datainicio=DateAdd("d",1,var_datainicio)
var_quantidade=var_quantidade + 1
if var_valor<= ("17") then
var_customensal=var_valordiario_monitor * var_quantidade
end if
vSql="UPDATE TAB_QUADRO_BRASFELS SET valor = '"&var_customensal&"', DATA_INICIO='"&VAR_zero&"', DATA_FIM = '"&VAR_zero&"' WHERE codigo='"&var_codigo&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
wend
END SELECT
myRst.MoveNext
loop
%>
ta me voltando erro no primeiro update:

Tipo de dados imcompatível na expressão de critério.

/calculo_teste.asp, line 15

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual é a linha 15

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual é a linha 15

vSql="UPDATE TAB_QUADRO_BRASFELS SET DATA_FIM = '"&var_data&"' WHERE DATA_FIM='"&var_zero&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conntest, 3, 3
xanburzum "fiz um step by step" no erro com o response.write e tinha visto que o erro inicial esta na ultima

linha myRst.Open vSql, conn, 3, 3

o erro era no conn ja que criei um banco de teste e o nome mudou para conntest mudei ae o erro que deu agora foi este quando chega na mesma linha
Os argumentos são incorretos, estão fora do intervalo aceitável ou estão em conflito.
/calculo_teste.asp, line 15
alinha 15 é
myRst.Open vSql, conntest, 3, 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

os dados estão com os tipos corretos, pois você esta passando todos eles como string. e mude apenas para teste o cursortype para 1

 

myRst.Open vSql, conntest, 1, 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

os dados estão com os tipos corretos, pois você esta passando todos eles como string. e mude apenas para teste o cursortype para 1

 

myRst.Open vSql, conntest, 1, 3

 

xanbur oke significa esse 1,3 e oque muda do 3,3???

Compartilhar este post


Link para o post
Compartilhar em outros sites

CursorType

0 : Somente leitura (o mais rápido entre todos)
1 : Não permite visualizar registros incluídos ou excluídos por outros usuários
2 : Exclusões, inclusões e alterações nos registros são visíveis (o mais lento de todos)
3 : Permite somente adicionar um registro, inclusões, alterações e exclusões feitas por outros não são visíveis

 

LockType

1 : Somente leitura, não permite alterações
2 : Bloqueia os registros na fonte após a edição
3 : Bloqueia os registros somente quando se chama o método “Update”
4 : Requerido quando se usa o modo “Batch Update”

Compartilhar este post


Link para o post
Compartilhar em outros sites

como posso dar um update de um valor em branco para um campo data? outra duvida como posso fazer um update so nos campos datas que estiverem em branco??
vSql="UPDATE TAB_QUADRO_BRASFELS SET DATA_FIM = '"&var_data&"' where data_fim="" "

tipo isso so quero atualizar onde o campo data_fim estiver em branco no meu banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.