Chamar blank ao clicar no botão salvar formulario

Olá pessoal tudo bem com todos, espero que estejam bem, estou com uma dúvida com relação a formulário de cadastro, tenho um formulário de abertura de chamados em meu sistema, gostaria que quando eu clicar no botão salvar para salvar a abertura do chamado no banco de dados, ao clicar no botão SALVAR o sistema chamasse pra mim uma blank com os dados para imprimir, sem eu precisar ir na GRID e selecionar o chamado para impressão.

Alguém pode me ajudar.

Bom dia,

Use a macro sc_redir no evento OnValidate para ir para a aplicação que desejas. Veja https://suporte.scriptcase.com.br/index.php?/Knowledgebase/Article/View/146/44/utilizando-a-macro-sc_redir

Ok, amigo vou tentar aqui, depois te falo, obrigado.

Kleyber está dando um erro para acessar o banco de dados, vou postar minha select do mysql vc pode dá uma olhada pra mim.

SELECT
idChamado,
setorResponsavel,
desc_problema,
unidade,
local,
patrimonio_equipamento,
contato,
telefone,
ramal,
NomeUsuario,
data_abertura,
status
FROM
chamados
WHERE [cwhere] AND idChamado = [cod_parametro]
order by data_abertura DESC

O te select está correto. Mas somente olhar o SELECT não dá uma boa pista…

1 - Como está sendo montada a variável [cwhere]?

2 - Qual o erro que está aparecendo?

3 - O que colocaste no OnValidate?

O [cwhere] está configurado conforme abaixo:

if([usr_login] == ‘admin’)
{
[cwhere] = “1=1”;
}
else
{
[cwhere] = “NomeUsuario = ‘[usr_login]’”;
}

Essa é a mensagem de erro ao processar o formulário:

Atenção
Erro ao acessar o banco de dados
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’ at line 1
select count(*) from chamados where

Bem, o que está sendo passado na variável global [cwhere] está errado em algum lugar. Experimente assim:

if([usr_login] == ‘admin’)
{
[cwhere] = “1=1”;
}
else
{
[cwhere] = “NomeUsuario = '”.[usr_login]."’";
}

Ainda não deu, a variavel global esta declarada no onValidate do app_userLogin para exibir todos os chamados quando logado como administrador.

Veja o código do onValidate:

$slogin = sc_sql_injection({login});
$spswd = sc_sql_injection(md5({pswd}));

$sql = “SELECT
priv_admin,
active,
name,
email
FROM sec_usuariousers
WHERE login = $slogin
AND pswd = “.$spswd.””;

sc_lookup(rs, $sql);

if(count({rs}) == 0)
{
sc_log_add(‘login Fail’, {lang_login_fail} . {login});
;
sc_error_message({lang_error_login});
}
else if({rs[0][1]} == ‘Y’)
{
$usr_login = {login};
$usr_priv_admin = ({rs[0][0]} == ‘Y’) ? TRUE : FALSE;
$usr_name = {rs[0][2]};
$usr_email = {rs[0][3]};
sc_set_global($usr_login);
sc_set_global($usr_priv_admin);
sc_set_global($usr_name);
sc_set_global($usr_email);
}
else
{
sc_error_message({lang_error_not_active});
sc_error_exit();
}
if([usr_login] == ‘admin’)
{
[cwhere] = “1=1”;
}
else
{
[cwhere] = “NomeUsuario = '”.[usr_login]."’";
}

Faça assim então:

if($usr_login == ‘admin’)
{
[cwhere] = “1=1”;
}
else
{
[cwhere] = “NomeUsuario = '”.$usr_login."’";
}

Continua dando esse erro:

Atenção
Erro ao acessar o banco de dados
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’ at line 1
select count(*) from chamados where 1=1 AND idChamado =

Esse erro é na exibição da grid, veja o SQL da grid:

SELECT
idChamado,
setorResponsavel,
desc_problema,
unidade,
local,
patrimonio_equipamento,
contato,
telefone,
ramal,
NomeUsuario,
data_abertura,
status
FROM
chamados
WHERE [cwhere] AND idChamado = [cod_parametro]
order by data_abertura DESC

Ok, agora está claro que o problema está na variável [cod_parametro]. Reveja onde ele precisa ser alimentado.

Olá Kleyber foi feito conforme o tutorial desse link que você me enviou, conforme abaixo, não sei se tenho que declarar em algum outro lugar.

https://suporte.scriptcase.com.br/index.php?/Knowledgebase/Article/View/146/44/utilizando-a-macro-sc_redir

Bom dia,

A questão não é essa, e sim a variável [cod_parametro] que não tem nada dentro dela quando você manda executar o SELECT. É isso que precisa ser revisto. Onde estás alimentando essa variável?

1 Curtida

Essa variável foi criada dentro do onAfterInsert da seguinte forma:

sc_redir(grid_chamados, cod_parametro = {idChamados});

Então cheque o que está sendo passado, pois no SELECT essa variável está vazia. Dê um ECHO no campo {idChamados} no onAfterInsert pra ver se de fato tem dados nesse campo.

Dados tem, tenho declarar essa variável em algum outro lugar dentro do SC?

Na verdade não, o que fizeste está correto… pra ter certeza, eu daria um echo no campo {idChamados} no OnAfterInsert, logo antes do sc_redir, pra ver se esse campo está realmente preenchido.

O Formulário quando clico em incluir ele conclui o cadastro e redireciona para a grid exibindo todos os dados na grid, mas não exibe apenas aquela cadastro. Acho que vou deixar assim por enquanto. Mas de qualquer forma obrigado pela ajuda.