[RESOLVIDO]Ambiente "trava" após submeter

Boa Tarde!

Tenho um formulário que após a inclusão o scriptcase não responde e é necessário reiniciar a máquina para o servidor local voltar a funcionar.

No AfterInsert quando deixado em branco, ele executa normalmente a inserção, quando colocado algum código ele trava.

Obs: o código inserido não possui nenhum loop, apenas um if e um sc_exec_sql nativo.

Alguma idéia?

Qual o sql?
Ja tentou rodar esse sql direto no banco?

Poste o código, pois quando acontece isto é falta de alguma } ou algum outro finalizador de linha, ou até executar alguma udf e não ter habilitado para a app

Att,

Jocimar

Tentei sim, tirei tudo e coloquei um ‘echo = “teste”;’ e não rodou, reiniciei a maquina, rodou e na segunda tentativa nao rodou mais.

Me parece ser um erro do ambiente instalado.

Para agilizar irei tirar o botão insert do formulario e faze-lo manualmente em botão.

Novamente parada a produção por questão de bug…complicado

Att.

Não acredito que seja um bug, pois ninguém relatou esse tipo de problema aqui.

Coloque no modo debug e exponha o que é mostrado aqui.

A Tabela possui trigger?

Isso ocorre em desenvolvimento e produção?

Comente o sc_exec_sql e teste.

Copie o codigo do evento aqui.

Obrigado pela resposta!

Segue o código e um print da tela

[code]//se algum modulo padrao foi selecionado
if({modulos_padrao} != ‘’){

//pega idTurma cadastrada anteriormente
$_sql_max = "SELECT MAX(IdTurma) FROM Turmas WHERE Id_Empresa = [id_empresa] ";
sc_lookup(rs_max, $_sql_max);
$id_turma = {rs_max[0][0]};

//quebra modulos em array para loop
$modulos = explode(';', {modulos_padrao});

//zera contador de aulas da turma
$aulas = 0;

//====================== PERCORRE MODULOS ======================

//primeira data = inicio do curso
$data_corrente = {DataInicio};

//inicia loop modulos
foreach($modulos as &$value){
	//zera contador aulas do modulo
	$aulas_mod = 0;

	//dados do curso importado
	$_mod_padrao = "
		SELECT IdApostila, QtdeAulas, Sequencia 
		FROM CursoModulos 
		WHERE IdCurso = '{id_curso_padrao}' AND IdModulo = '$value' 
	";
	sc_select(rs_mod, $_mod_padrao);
	
	$id_apostila = $rs_mod->fields[0];
	$qtde_aulas  = $rs_mod->fields[1];
	$sequencia   = $rs_mod->fields[2];
	
	//data inicio do modulo = data atual loop
	$data_inicio = $data_corrente;
	
	//insercao modulo
	$_sql_insert_mod = "INSERT INTO TurmaModulos VALUES(
		NULL,
		'$id_turma',
		'$value',
		'{IdInstrutor}',		
		'$id_apostila',
		'{IdLaboratorio}',
		'$data_inicio',
		'', 
		'$qtde_aulas',
		'{MaxAlunos}',
		'$sequencia',
		'PI',
		'[id_empresa]'
	)";
	
	sc_exec_sql($_sql_insert_mod);
	
	//====================== GRADE =======================
	
	//pega IdTurmaModulo do modulo inserido anteriormente
	$_sql_max_mod = "SELECT MAX(IdTurmaModulo) FROM TurmaModulos WHERE id_empresa = '[id_empresa]' ";
	sc_select(rs_max, $_sql_max_mod);
	$numero_modulo = $rs_max->fields[0];
	
	//seta timezone para o brasil
	date_default_timezone_set('America/Sao_Paulo');
	
	$DiaSemana = {DiaSemana};

	//array dias da semana (dom=1, seg=2, ter=3, ...)
	$dias_num = array(1,2,3,4,5,6,7);

	//array dias da semana selecionados
	$dia_explode = explode(";", $DiaSemana);

	$_qtd_aulas = COUNT($dia_explode);	
	$aula_mod = 1;
	$i = 1;

	while  ($aula_mod <= $qtde_aulas) {

		//====================== PERCORRE DIAS SEMANA =======================
				
		if(in_array($dias_num[$i], $dia_explode)){ //existe aula no dia
			
			//if($dias_num[$i] == '1'){
				$inicio_aula = '13:00';
				$fim_aula = '14:00';
				$IdInstrutor = 3;
				$IdLaboratorio = 2;
			//}
			
			$_sql_aulas = "
				INSERT INTO TurmaAulas VALUES(
					NULL,
					'$numero_modulo',
					'$data_corrente',
					'$inicio_aula',
					'$fim_aula',
					'$IdInstrutor',				
					'$IdLaboratorio',
					'$aula_mod',
					'$aulas',
					0,
					'[id_empresa]'
				)
			";
		
			sc_exec_sql($_sql_aulas);
			$aula_mod++;
			$aulas++;
		}

		$i++;
		if ($i >= 7) {
			$i=1;
		}
		
		$data_corrente = sc_date($data_corrente, 'yyyy-mm-dd', '+', 1, 0, 0);
		
	}

}

sc_redir('form_turmas',param_id_turma=$id_turma);	   

}//fim if modulos_padrao[/code]

Ativa o mode debug e coloca alguns “echo” pra ver onde trava.

Acredito que seu código esteja travando.

Comente todo o código, teste.

Descomente as primeiras linhas e execute, e vá testando até chegar no ponto do travamento.

Faça em modo debug.

Bom dia Allan e Haroldo, obrigado pela resposta.

Já coloquei echo e modo debug em tudo, o problema é que isso está no AfterInsert, se eu colocar qualquer código ele trava o ambiente local, tanto é que tenho uma validação ajax no OnBlur e trava lá também caso verdadeira.

Estava funcionando 100% antes.

Já aconteceu isso antes, eu tive q refazer o formulário.

Vocês sabem alguma coisa que possa ser além do código?

Obs: Cada erro ele trava o serviço local e é necessário reiniciar a máquina.

Isso tem cara de loop.

Se remover o código funciona,então o problema está no código.

Se eu colocar um “if” ele trava, não é loop.

Exato Haroldo, o problema é que independente do comando ele trava, tanto que no Onblur que não tem nada apenas um if.

Mas obrigado pelas respostas

coloque o echo {campo}; no evento e veja se trava?

Se não travar não é valido sua afirmação que qualquer comando trava.

Obrigado pela paciencia Haroldo rs

Coloquei e travou novamente, como disse antes tinha colocado ‘echo “teste”;’ e tinha travado…

Estou pensando em reinstalar o scriptcase, existe a possibilidade de estar com problema na minha instalação talvez? já que está com problema também no Onblur no mesmo formulário

publique e veja se em outro ambiente trava.

[RESOLVIDO]

Importei em outra máquina com scriptcase e o problema continuou, então criei o formulário novamente do zero com os mesmo comandos e funcionaram.

Não entendi o porque mas tudo bem.

Obrigado a todos!

Olá Thiago,

Pena não ter visto teu POST antes. Se serve de consolo, tive exatamente o mesmo problema e recorri exatamente à mesma solução.

Inexplicável, mas foi isso. É como “anestesia geral”: Todo mundo sabe que funciona, mas ninguém sabe dizer porque.

Abraço.

Isso acontece porque as vezes o SC gera a aplicação corrompida. E resolve refazendo. Dica: Para quem gosta de fazer as aplicações e antes de “gerar-las” ir logo mexendo no Layout (Blocos, Cabeçalhos, ect…), recomendo que assim que criar a app gere-as. Depois que vá mexer no layout. Pois caso venha corrompida não se perde tempo.