[RESOLVIDO] Filtro por eventos - Problema ao utilizar mais de um filtro

Boa Tarde Senhores,
Tenho um relatório no qual utilizo filtros tratados nos eventos, os filtros funcionam perfeitamente quando utilizo apenas um ou outro filtro.
Porém, quando utilizo dois ou mais filtros juntos, apenas um deles funciona.

Evento onScriptIni do menu consulta:

if (!empty([cond_datainicial])){
	sc_select_where(add) = " and [cond_datainicial]";
}
if (!empty([cond_codigo])){
	sc_select_where(add) = " and [cond_codigo]";
}
if (!empty([cond_controle])){
	sc_select_where(add) = " and [cond_controle]";
}
if (!empty([cond_grupoproduto])){
	sc_select_where(add) = " and [cond_grupoproduto]";
}
if (!empty([cond_formula])){
	sc_select_where(add) = " and [cond_formula]";
}

Evento onValidate no menu filtro avançado:

sc_reset_global ([cond_datainicial], [cond_codigo], [cond_controle], [cond_grupoproduto], [cond_formula]);

if (!empty({datainicial}) and ({datainicial} != "0000-00-00 00:00:00")){
	if (empty({datainicial_hor}) and empty({datainicial_min}) and empty({datainicial_seg})){
		switch ({datainicial_cond}){
			case "bw":{
				if (empty({datainicial_input_2_hor}) and empty({datainicial_input_2_min}) and empty({datainicial_input_2_seg})){
					[cond_datainicial] = " convert(varchar(10), BatRI.DataInicioDosagem, 121) between convert(varchar(10), '{datainicial}', 121) and convert(varchar(10), '{datainicial_2}', 121)";
				} else{
					[cond_datainicial] = " convert(varchar(10), BatRI.DataInicioDosagem, 121) between convert(varchar(10), '{datainicial}', 121) and convert(varchar(19), '{datainicial_2}', 121)";
				}
				break;
			}
		}
	}
	else {
		switch ({datainicial_cond}){
			case "bw":{
				if (empty({datainicial_input_2_hor}) and empty({datainicial_input_2_min}) and empty({datainicial_input_2_seg})){
					[cond_datainicial] = " convert(varchar(19), BatRI.DataInicioDosagem, 121) between convert(varchar(19), '{datainicial}', 121) and convert(varchar(10), '{datainicial_2}', 121)";
				} else {
					[cond_datainicial] = " convert(varchar(19), BatRI.DataInicioDosagem, 121) between convert(varchar(19), '{datainicial}', 121) and convert(varchar(19), '{datainicial_2}', 121)";
				}
				break;
			}
		}
	}
}
if (!empty({codigo})){
	switch ({codigo_cond}){
		case "bw":{
			[cond_codigo] = " OPR.NumeroProducao between '{codigo}' and '{codigo_2}'";
			break;
		}	
	}
}
if (!empty({controle})){
	switch ({controle_cond}){
		case "eq": {
			[cond_controle] = " OPR.Controle = '{controle}'";
			break;
		}
	}
}
if (!empty({grupoproduto})){
	switch ({grupoproduto_cond}){
		case "eq": {
			[cond_grupoproduto] = " CPG.Descricao = '{grupoproduto}'";
			break;
		}
	}
}
if (!empty({formula})){
	[cond_formula] = " CF.Descricao = '{formula}'";
}

Como posso contornar esta situação?
Agradeço desde já,

Davi

Faça o seguinte, no onScriptInit

altere seu código por

$w_temp = "";
if (!empty([cond_datainicial])){
	$w_temp .= " and [cond_datainicial]";
}
if (!empty([cond_codigo])){
	$w_temp .= " and [cond_codigo]";
}
if (!empty([cond_controle])){
	$w_temp .= " and [cond_controle]";
}
if (!empty([cond_grupoproduto])){
	$w_temp .= " and [cond_grupoproduto]";
}
if (!empty([cond_formula])){
 	$w_temp .= " and [cond_formula]";
}
	sc_select_where(add) = $w_temp;

Funcionou certinho Rodrigo!

Meus mais sinceros agradecimentos,
namastê!
_/_