Ir para conteúdo

POWERED BY:

Arquivado

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

Ambrosio

Função de Cálculo

Recommended Posts

Olá a todos,

 

Já faz uns bons meses que não posto aqui, mas devido a necessidade do trabalho volto a implorar ajuda aqui onde muito já me ajudaram!!!!!

 

Estou melhorando um sistema que fiz um tempo atrás pra uma fábrica e esse sistema simplesmente calcula um indicador de produção que se chama OEE e é dado em porcentagem.

 

Porém é uma conta muito complexa.

 

Vamos lá...

 

Através de um formulário é inserido em um banco de dados Access os dados necessários para o cálculo. São ao todo 23 números que são armazenados cada um em uma coluna. Tudo isso relacionado a uma máquina.

 

Quando é pedido o cálculo desse indicador eu uso essa Function que eu mesmo criei:

 

Function CalculoOEE(calculo, maquina, anoatual, mesatual, diatual, turno)
	On Error resume next
	Select Case calculo
		Case "t24hx7d"
			colunaBD = "tempo"
			ashow = "tt"
		Case "Weekend" 
			colunaBD = "cp00"
			ashow = "us"
		Case "Unused" 
			colunaBD = "cp01"
			ashow = "us"
		Case "Planned" 
			colunaBD = "cp02"
			ashow = "pm"
		Case "Downtime" 
			colunaBD = "downtime"
			ashow = "dt"
		Case "TempoPadraoP" 
			colunaBD = "pbxt"
			ashow = "shpp"
		Case "TempoRealP"
			t_t24hx7d = CalculoOEE("t24hx7d", maquina, anoatual, mesatual, diatual, turno)
			t_weekend = CalculoOEE("Weekend", maquina, anoatual, mesatual, diatual, turno)
			t_unused = CalculoOEE("Unused", maquina, anoatual, mesatual, diatual, turno)
			t_planned = CalculoOEE("Planned", maquina, anoatual, mesatual, diatual, turno)
			t_downtime = CalculoOEE("Downtime", maquina, anoatual, mesatual, diatual, turno)
			resultado = (t_t24hx7d - t_weekend - t_unused - t_planned - t_downtime)
		Case "PcsBoas" 
			colunaBD = "pcs_boas"
			ashow = "pcsb"
		Case "PcsSuc" 
			colunaBD = "pcs_suc"
			ashow = "pcss"
		Case "Disponibilidade"
			d_t24hx7d = CalculoOEE("t24hx7d", maquina, anoatual, mesatual, diatual, turno)
			d_weekend = CalculoOEE("Weekend", maquina, anoatual, mesatual, diatual, turno)
			d_unused = CalculoOEE("Unused", maquina, anoatual, mesatual, diatual, turno)
			d_planned = CalculoOEE("Planned", maquina, anoatual, mesatual, diatual, turno)
			d_downtime = CalculoOEE("Downtime", maquina, anoatual, mesatual, diatual, turno)
			resultado = (d_t24hx7d - d_weekend - d_unused - d_planned - d_downtime)/(d_t24hx7d - d_weekend - d_unused - d_planned)
		Case "Desempenho"
			p_pbxt = CalculoOEE("TempoPadraoP", maquina, anoatual, mesatual, diatual, turno)
			p_t24hx7d = CalculoOEE("t24hx7d", maquina, anoatual, mesatual, diatual, turno)
			p_weekend = CalculoOEE("Weekend", maquina, anoatual, mesatual, diatual, turno)
			p_unused = CalculoOEE("Unused", maquina, anoatual, mesatual, diatual, turno)
			p_planned = CalculoOEE("Planned", maquina, anoatual, mesatual, diatual, turno)
			p_downtime = CalculoOEE("Downtime", maquina, anoatual, mesatual, diatual, turno)
			resultado = (p_pbxt)/(p_t24hx7d - p_weekend - p_unused - p_planned - p_downtime)
		Case "Qualidade"
			q_pcsboas = CalculoOEE("PcsBoas", maquina, anoatual, mesatual, diatual, turno)
			q_pcssuc = CalculoOEE("PcsSuc", maquina, anoatual, mesatual, diatual, turno)
			resultado = (q_pcsboas)/(q_pcsboas+(q_pcssuc))
		Case "OEE"
			o_pbxt = CalculoOEE("TempoPadraoP", maquina, anoatual, mesatual, diatual, turno)
			o_t24hx7d = CalculoOEE("t24hx7d", maquina, anoatual, mesatual, diatual, turno)
			o_weekend = CalculoOEE("Weekend", maquina, anoatual, mesatual, diatual, turno)
			o_unused = CalculoOEE("Unused", maquina, anoatual, mesatual, diatual, turno)
			o_planned = CalculoOEE("Planned", maquina, anoatual, mesatual, diatual, turno)
			o_downtime = CalculoOEE("Downtime", maquina, anoatual, mesatual, diatual, turno)
			o_pcsboas = CalculoOEE("PcsBoas", maquina, anoatual, mesatual, diatual, turno)
			o_pcssuc = CalculoOEE("PcsSuc", maquina, anoatual, mesatual, diatual, turno)
			resultado = (o_t24hx7d - o_weekend - o_unused - o_planned - o_downtime)/(o_t24hx7d - o_weekend - o_unused - o_planned) * ((o_pbxt)/(o_t24hx7d - o_weekend - o_unused - o_planned - o_downtime)) * ((o_pcsboas)/(o_pcsboas+(o_pcssuc)))
	End Select

	IF maquina = "rep" THEN
		IF maquina = "rep" AND diatual = "all" AND turno = "all" THEN
			SET gknRS_calc = gknCON.execute("SELECT SUM("&colunaBD&") AS "&ashow&" FROM oee WHERE data_a = '"&anoatual&"' AND data_m = '"&mesatual&"' AND report = true")
			if gknRS_calc(ashow) <> "" then resultado = CDBL(gknRS_calc(ashow)) else resultado = 0 end if
		ELSE
			IF maquina <> "rep" AND diatual = "all" AND turno = "all" THEN
				SET gknRS_calc = gknCON.execute("SELECT SUM("&colunaBD&") AS "&ashow&" FROM oee WHERE data_a = '"&anoatual&"' AND data_m = '"&mesatual&"' AND maquina = '"&maquina&"' AND report = true")
				if gknRS_calc(ashow) <> "" then resultado = CDBL(gknRS_calc(ashow)) else resultado = 0 end if
			ELSE
				IF maquina <> "rep" AND diatual = "all" AND turno <> "all" THEN
					SET gknRS_calc = gknCON.execute("SELECT SUM("&colunaBD&") AS "&ashow&" FROM oee WHERE data_a = '"&anoatual&"' AND data_m = '"&mesatual&"' AND maquina = '"&maquina&"' AND turno = '"&turno&"' AND report = true")
					if gknRS_calc(ashow) <> "" then resultado = CDBL(gknRS_calc(ashow)) else resultado = 0 end if
				ELSE
					IF maquina <> "rep" AND diatual <> "all" AND turno = "all" THEN
						SET gknRS_calc = gknCON.execute("SELECT SUM("&colunaBD&") AS "&ashow&" FROM oee WHERE data_a = '"&anoatual&"' AND data_m = '"&mesatual&"' AND maquina = '"&maquina&"' AND data_d = '"&diatual&"' AND report = true")
						if gknRS_calc(ashow) <> "" then resultado = CDBL(gknRS_calc(ashow)) else resultado = 0 end if
					ELSE
						IF maquina = "rep" AND diatual = "all" AND turno <> "all" THEN
							SET gknRS_calc = gknCON.execute("SELECT SUM("&colunaBD&") AS "&ashow&" FROM oee WHERE data_a = '"&anoatual&"' AND data_m = '"&mesatual&"' AND turno = '"&turno&"' AND report = true")
							if gknRS_calc(ashow) <> "" then resultado = CDBL(gknRS_calc(ashow)) else resultado = 0 end if
						ELSE
							SET gknRS_calc = gknCON.execute("SELECT SUM("&colunaBD&") AS "&ashow&" FROM oee WHERE data_a = '"&anoatual&"' AND data_m = '"&mesatual&"' AND maquina = '"&maquina&"' AND data_d = '"&diatual&"' AND turno = '"&turno&"' AND report = true")
							if gknRS_calc(ashow) <> "" then resultado = CDBL(gknRS_calc(ashow)) else resultado = 0 end if
						END IF
					END IF
				END IF
			END IF
		END IF
	  ELSE
		IF maquina = "all" AND diatual = "all" AND turno = "all" THEN
			SET gknRS_calc = gknCON.execute("SELECT SUM("&colunaBD&") AS "&ashow&" FROM oee WHERE data_a = '"&anoatual&"' AND data_m = '"&mesatual&"' ")
			if gknRS_calc(ashow) <> "" then resultado = CDBL(gknRS_calc(ashow)) else resultado = 0 end if
		ELSE
			IF maquina <> "all" AND diatual = "all" AND turno = "all" THEN
				SET gknRS_calc = gknCON.execute("SELECT SUM("&colunaBD&") AS "&ashow&" FROM oee WHERE data_a = '"&anoatual&"' AND data_m = '"&mesatual&"' AND maquina = '"&maquina&"' ")
				if gknRS_calc(ashow) <> "" then resultado = CDBL(gknRS_calc(ashow)) else resultado = 0 end if
			ELSE
				IF maquina <> "all" AND diatual = "all" AND turno <> "all" THEN
					SET gknRS_calc = gknCON.execute("SELECT SUM("&colunaBD&") AS "&ashow&" FROM oee WHERE data_a = '"&anoatual&"' AND data_m = '"&mesatual&"' AND maquina = '"&maquina&"' AND turno = '"&turno&"' ")
					if gknRS_calc(ashow) <> "" then resultado = CDBL(gknRS_calc(ashow)) else resultado = 0 end if
				ELSE
					IF maquina <> "all" AND diatual <> "all" AND turno = "all" THEN
						SET gknRS_calc = gknCON.execute("SELECT SUM("&colunaBD&") AS "&ashow&" FROM oee WHERE data_a = '"&anoatual&"' AND data_m = '"&mesatual&"' AND maquina = '"&maquina&"' AND data_d = '"&diatual&"' ")
						if gknRS_calc(ashow) <> "" then resultado = CDBL(gknRS_calc(ashow)) else resultado = 0 end if
					ELSE
						IF maquina = "all" AND diatual = "all" AND turno <> "all" THEN
							SET gknRS_calc = gknCON.execute("SELECT SUM("&colunaBD&") AS "&ashow&" FROM oee WHERE data_a = '"&anoatual&"' AND data_m = '"&mesatual&"' AND turno = '"&turno&"' ")
							if gknRS_calc(ashow) <> "" then resultado = CDBL(gknRS_calc(ashow)) else resultado = 0 end if
						ELSE
							SET gknRS_calc = gknCON.execute("SELECT SUM("&colunaBD&") AS "&ashow&" FROM oee WHERE data_a = '"&anoatual&"' AND data_m = '"&mesatual&"' AND maquina = '"&maquina&"' AND data_d = '"&diatual&"' AND turno = '"&turno&"' ")
							if gknRS_calc(ashow) <> "" then resultado = CDBL(gknRS_calc(ashow)) else resultado = 0 end if
						END IF
					END IF
				END IF
			END IF
		END IF
	END IF
	CalculoOEE = resultado
End Function

 

 

Na página de resultados eu chamo assim a conta:

 

<%=FormatNumber((CalculoOEE("OEE",OMaq,paga,pagm,"all","all")*100),1)%>%

Porém numa página só preciso calcular no mínimo 100 vezes isso, sendo que as vezes posso pedir vários tipos de resultados como por exemplo:

 

<%=FormatNumber((CalculoOEE("t24hx7d",OMaq,paga,pagm,"all","all")/60),1)%>
<%=FormatNumber((CalculoOEE("Weekend",OMaq,paga,pagm,"all","all")/60),1)%>
<%=FormatNumber((CalculoOEE("Unused",OMaq,paga,pagm,"all","all")/60),1)%>
<%=FormatNumber((CalculoOEE("Planned",OMaq,paga,pagm,"all","all")/60),1)%>
<%=FormatNumber((CalculoOEE("Downtime",OMaq,paga,pagm,"all","all")/60),1)%>
<%=FormatNumber((CalculoOEE("TempoPadraoP",OMaq,paga,pagm,"all","all")/60),1)%>
<%=FormatNumber((CalculoOEE("TempoRealP",OMaq,paga,pagm,"all","all")/60),1)%>
<%=FormatNumber((CalculoOEE("PcsBoas",OMaq,paga,pagm,"all","all")),0)%>
<%=FormatNumber((CalculoOEE("PcsSuc",OMaq,paga,pagm,"all","all")),0)%>
<%=FormatNumber((CalculoOEE("Disponibilidade",OMaq,paga,pagm,"all","all")*100),1)%>%
<%=FormatNumber((CalculoOEE("Desempenho",OMaq,paga,pagm,"all","all")*100),1)%>%
<%=FormatNumber((CalculoOEE("Qualidade",OMaq,paga,pagm,"all","all")*100),1)%>%
<%=FormatNumber((CalculoOEE("OEE",OMaq,paga,pagm,"all","all")*100),1)%>%

Ae acontece o problema. As vezes demora tanto tempo pra calcular tantas coisas que a página nem sequer é exibida..

 

Como posso otimizar esse calcúlo???????

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

e precisa de todos estes resultados ou esta exagerando mesmo?

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.