Consultas para serem mostradas no E3Browser

Estou com dificuldades para realizar as consultas em um E3Browser.
Eu iria selecionar os filtros através de checkboxes e listas suspensas.

A minha ideia seria customizar os filtros de acordo com a vontade do usuário.

Abaixo o script:

If Screen.Item("HI").Value > Screen.Item("HF").Value then
	MsgBox ("Impossível realizar tal operação!!! Ponha uma data e hora inicial menor que a data e hora final!!!")
else
	Set cons1 = Screen.Item("E3Browser1").Item("Consulta1")
	
	ini = Screen.Item("HI").Value
	fim = Screen.Item("HF").Value
	MOTIVO = Screen.Item("ComboBox4").Value
	SECAO = Screen.Item("ComboBox5").Value

	cons1.SetVariableValue "HI", ini
	cons1.SetVariableValue "HF", fim
	
	

	If Screen.Item("CheckBox1").Value = true and Screen.Item("CheckBox2").Value = false and Screen.Item("CheckBox3").Value = false and Screen.Item("CheckBox4") = false and Screen.Item("CheckBox5").Value = false then
	cons1.SQL = "SELECT DOWNTIME.E3TimeStamp,DOWNTIME.ID,DOWNTIME.TOTAL_PARCIAL,DOWNTIME.TROCA_DE_CLASSE,DOWNTIME.OP,DOWNTIME.HORA_INICIO,DOWNTIME.HORA_FINAL,DOWNTIME.MINUTOS,DOWNTIME.SECAO,DOWNTIME.ACIONAMENTO,DOWNTIME.EQUIPAMENTO,DOWNTIME.DESCRICAO,DOWNTIME.CAUSA_PARADA,DOWNTIME.CAUSA_PADRAO,DOWNTIME.MOTIVO,DOWNTIME.IMPACTO_QUALIDADE,DOWNTIME.COMENTARIO_QUALIDADE FROM DOWNTIME WHERE DOWNTIME.E3TimeStamp > #<%HI%># and DOWNTIME.E3TimeStamp < #<%HF%># ORDER BY DOWNTIME.E3TimeStamp  ASC"


	Elseif Screen.Item("CheckBox1").Value = true and Screen.Item("CheckBox2").Value = true and Screen.Item("CheckBox3").Value = false and Screen.Item("CheckBox4") = false and Screen.Item("CheckBox5").Value = false then
		cons1.SQL = "SELECT DOWNTIME.E3TimeStamp,DOWNTIME.ID,DOWNTIME.TOTAL_PARCIAL,DOWNTIME.TROCA_DE_CLASSE,DOWNTIME.OP,DOWNTIME.HORA_INICIO,DOWNTIME.HORA_FINAL,DOWNTIME.MINUTOS,DOWNTIME.SECAO,DOWNTIME.ACIONAMENTO,DOWNTIME.EQUIPAMENTO,DOWNTIME.DESCRICAO,DOWNTIME.CAUSA_PARADA,DOWNTIME.CAUSA_PADRAO,DOWNTIME.MOTIVO,DOWNTIME.IMPACTO_QUALIDADE,DOWNTIME.COMENTARIO_QUALIDADE FROM DOWNTIME WHERE DOWNTIME.E3TimeStamp > #<%HI%># and DOWNTIME.E3TimeStamp < #<%HF%># and DOWNTIME.MOTIVO = #<%MOTIVO%># "


	Elseif Screen.Item("CheckBox1").Value = true and Screen.Item("CheckBox2").Value = false and Screen.Item("CheckBox3").Value = true and Screen.Item("CheckBox4") = false and Screen.Item("CheckBox5").Value = false then
		cons1.SQL = "SELECT DOWNTIME.E3TimeStamp,DOWNTIME.ID,DOWNTIME.TOTAL_PARCIAL,DOWNTIME.TROCA_DE_CLASSE,DOWNTIME.OP,DOWNTIME.HORA_INICIO,DOWNTIME.HORA_FINAL,DOWNTIME.MINUTOS,DOWNTIME.SECAO,DOWNTIME.ACIONAMENTO,DOWNTIME.EQUIPAMENTO,DOWNTIME.DESCRICAO,DOWNTIME.CAUSA_PARADA,DOWNTIME.CAUSA_PADRAO,DOWNTIME.MOTIVO,DOWNTIME.IMPACTO_QUALIDADE,DOWNTIME.COMENTARIO_QUALIDADE FROM DOWNTIME WHERE DOWNTIME.E3TimeStamp > #<%HI%># and DOWNTIME.E3TimeStamp < #<%HF%># and DOWNTIME.SECAO = #<%SECAO%># "

	End If

		Screen.Item("E3Browser1").Item("Consulta1").Execute()
		Screen.Item("E3Browser1").Requery()	
	
End If

Olá @Fernando_Weiss,

Para isso vejo duas formas:

  1. Montar a consulta a depender das opções marcados, usando a função IF para verificar.
  2. Criar a consulta com todos os filtros, e criar variáveis para habilitar ou não os filtros.

Para essa ultima, veja o conceito no artigo abaixo:

Olá Gabriel.
Muito obrigado pela ajuda.
Consegui realizer o que precisava.
Segue abaixo a solução:

SQL:

SELECT
DOWNTIME.ID,
DOWNTIME.OP,
DOWNTIME.TOTAL_PARCIAL,
DOWNTIME.IMPACTO_QUALIDADE,
DOWNTIME.COMENTARIO_QUALIDADE,
DOWNTIME.HORA_INICIO,
DOWNTIME.HORA_FINAL,
DOWNTIME.MINUTOS,
DOWNTIME.SECAO,
DOWNTIME.ACIONAMENTO,
DOWNTIME.EQUIPAMENTO,
DOWNTIME.DESCRICAO,
DOWNTIME.CAUSA_PARADA,
DOWNTIME.CAUSA_PADRAO,
DOWNTIME.MOTIVO,
DOWNTIME.E3TimeStamp,
DOWNTIME.TROCA_DE_CLASSE

FROM DOWNTIME

WHERE (<%CBData%>=0 OR (DOWNTIME.E3TimeStamp > #<%HI%># and DOWNTIME.E3TimeStamp < #<%HF%>#))
AND (<%CBMotivo%>=0 OR DOWNTIME.MOTIVO = #<%MOTIVO%>#)
AND (<%CBSecao%>=0 OR DOWNTIME.SECAO = #<%SECAO%>#)
AND (<%CBMinutos%>=0 OR DOWNTIME.MINUTOS > #<%MINUTOS%>#)
AND (<%CBCausaPadrao%>=0 OR DOWNTIME.CAUSA_PADRAO = #<%CAUSA_PADRAO%>#)

ORDER BY DOWNTIME.E3TimeStamp ASC

BOTÃO:

Sub CommandButton6_Click()

	Set cons1 = Screen.Item("E3Browser2").Item("Consulta1")
	
	dim HI, HF, MOTIVO, SECAO, MINUTOS, CAUSA_PADRAO, cbDATA, cbMOTIVO, cbSECAO, cbMINUTOS, cbCAUSA_PADRAO
	cbDATA = Screen.Item("CheckBox1").Value
	cbMOTIVO = Screen.Item("CheckBox2").Value
	cbSECAO = Screen.Item("CheckBox3").Value
	cbMINUTOS = Screen.Item("CheckBox4").Value
	cbCAUSA_PADRAO = Screen.Item("CheckBox5").Value
	
	
	set browser = Screen.Item("E3Browser2")
	set bquery = browser.Item("Consulta1")
	bquery.SetVariableValue "CBData", cbDATA
	bquery.SetVariableValue "CBMotivo", cbMOTIVO
	bquery.SetVariableValue "CBSecao",  cbSECAO
	bquery.SetVariableValue "CBMinutos", cbMINUTOS
	bquery.SetVariableValue "CBCausaPadrao", cbCAUSA_PADRAO
	bquery.SetVariableValue "HI", HI
	bquery.SetVariableValue "HF", HF
	
	bquery.SetVariableValue "MOTIVO", MOTIVO
	bquery.SetVariableValue "SECAO", SECAO
	bquery.SetVariableValue "MINUTOS", MINUTOS
	bquery.SetVariableValue "CAUSA_PADRAO", CAUSA_PADRAO
	
	MOTIVO = Screen.Item("ComboBox4").Value
	SECAO = Screen.Item("ComboBox5").Value

End Sub

1 Like