Feedback

Eventos

Nos blocos de eventos podem ser utilizadas variáveis globais, locais, códigos JavaScript, códigos CSS e macros.

onApplicationInit

Este evento ocorre uma única vez quando a aplicação é carregada.

Primeiro evento executado no formulário, sendo acionado antes mesmo da montagem do SQL e HTML.

Funciona como uma preparação para a aplicação, onde é possível entre outras coisas, manipular variáveis, realizar validações e mudar a conexão com a macro sc_change_connection, por exemplo.

Veja abaixo um exemplo de como utilizá-lo.


No exemplo abaixo, o form_orders será alterado de acordo com o usuário que estiver acessando o sistema.

Caso a variável [usr_login] seja igual a admin, o usuário terá acesso ao formulário com a possibilidade de inserir e excluir um registro.

Caso a variável possua algum outro valor, o usuário ainda terá acesso ao formulário, porém, apenas com a possibilidade de alterar um registro.

Exemplo do Código

if ( [usr_login] == 'admin') {

  sc_apl_conf("form_orders", "insert", "on");

  sc_apl_conf("form_orders", "delete", "on");

} else {

  sc_apl_conf("form_orders", "insert", "off");

  sc_apl_conf("form_orders", "delete", "off");

}

onNavigate

Este evento ocorre ao navegar entre os registros do formulário.

No formulário, este evento sempre é executado ao realizar uma navegação, através dos botões de navegação, navegação por página ou a opção ir para.

OnScriptInit

Este evento ocorre na inicialização do formulário. Este evento ocorre antes da inicialização do formulário, neste momento, as variáveis locais da aplicação não estão disponíveis.

onLoadRecord

Este evento ocorre quando o formulário é carregado. Este evento é executado antes que o formulário seja carregado. Neste momento todas as variáveis da aplicação estão disponíveis.

onLoad

Este evento ocorre quando o formulário é carregado. Este evento é executado antes que o formulário seja carregado. Neste momento todas as variáveis da aplicação estão disponíveis.

onRefresh

Este evento ocorre quando houver recarga do formulário.

Este evento ocorre quando acontece uma recarga no formulário . É possível recarregar o formulário utilizando os campos de seleção (Select, Radio, Checkbox) ou utilizando o botão de Refresh da barra de ferramentas

onValidate

Este evento ocorre durante a validação dos dados do formulário.

Este evento é executado quando o formulário é submetido ao servidor, através dos botões: "incluir", "alterar" ou "excluir"
Nesse evento, é permitido realizar validações antes de que os dados do formulário sejam enviados para o banco de dados.


No exemplo abaixo, utilizando a aplicação form_orders,  iremos validar o campo freight, onde se o valor atribuído ao campo freight for maior que 30 será disparado uma mensagem de erro para o usuário e o envio do formulário será cancelado.

Exemplo do código:

if({freight} > 30){

sc_error_message("Valor do frete é muito alto");

}

onValidateFailure

Este evento ocorre quando existe erro de validação.

Este evento ocorre quando ao submeter, a aplicação no onValidate, tiver erro, gerado pelas macros sc_error_exit, sc_error_message, ou por erro verificado pelo scriptcase (erros relacionados a Banco de dados). 

onValidateSuccess

Este evento ocorre quando não existe erro de validação.

Este evento ocorre após submeter o formulário e executar o evento onValidate, então se a validação for bem sucedida e não contiver erros, gerado pelas macros sc_error_exit ou sc_error_message, o evento onValidateSuccess é executado.

onBeforeInsert

Este evento ocorre antes de uma inclusão.

Este evento ocorre após a validação do formulário (onValidate e onValidateSuccess), ao clicar no botão Inserir, e antes de executar o comando SQL de inclusão do registro no banco de dados.

 


Exemplo: Consultamos uma tabela de privilegios de usuário antes de inserir o registro , caso o mesmo não tenha tal privilégio, mandamos uma mensagem de erro.

sc_lookup(priv_ins ," select priv_ins from tb_privilegios where login = [var_login] ");

if({priv_ins [0][0]} != 'SIM'){

  sc_erro_mensagem(" você nao tem privilégios para executar esta operação ");

}

onAfterInsert

Este evento ocorre após uma inclusão.

Este evento ocorre após clicar no botão Inserir do formulário. O formulário executará então os eventos onValidate, onValidateSuccess e onBeforeInsert, e logo após executar o comando SQL para inserir o registro do banco de dados, ele executará o evento onAfterInsert.

 


Exemplo: Após a inclusão de um registro no banco de dados queremos gravar numa tabela de log a operação de inclusão.

sc_exec_sql(" insert into log values ([glo_usuario],'tabela alvo','insercao',{campo_chave}) "); //inserimos o id do usuário que estava armazenado em uma variável de sessão [glo_usuario] e a chave do registro recém incluído {campo_chave}.

onBeforeInsertAll

Este evento ocorre antes inclusão de registros em formulários do tipo multiplo registro.

Este evento ocorre após clicar no botão Inserir do formulário de múltiplos registros. O formulário executará então os eventos onValidate e onValidateSuccess, em seguida ele executará o evento onBeforeInsertAll antes de iniciar a execução dos comandos SQL de inserção dos registros no banco de dados. 

 

Obs: Este evento é acionado apenas uma vez, independente da quantidade de linhas inseridas em um clique no botão Inserir.


Exemplo: Consultamos uma tabela de privilegios de usuário antes de inserir o registro , caso o mesmo não tenha tal privilégio, mandamos uma mensagem de erro.

sc_lookup(priv_ins ," select priv_ins from tb_privilegios where login = [var_login] ");

if({priv_ins [0][0]} != 'SIM'){

  sc_erro_mensagem(" você nao tem privilégios para executar esta operação ");

}

onAfterInsertAll

Esse evento ocorre após inclusão de um registro no forumulário multiplo registros.

Este evento ocorre após clicar no botão Inserir do formulário de múltiplos registros. O formulário executará então os eventos onValidate, onValidateSuccess e onBeforeInsertAll, e logo após executar todos os comandos SQL para inserir os registros no banco de dados, ele executará o evento onAfterInsertAll.

 


Podemos por exemplo, após inserir os itens de uma nota fiscal, (tb_itens_nf), em um form de múltiplos registros , incluir na tabela "pai" (nota_fiscal), o valor total dos produtos.

sc_lookup(tot," select sum(valor_item) from tb_itens_nf where num_nf = {num_nf} ");

{tmp_tot} = {tot[0][0]};

sc_exec_sql(" update tb_itens_nf set total_itens = {tmp_tot} where num_nf = {num_nf} ");

onBeforeUpdate

Este evento ocorre antes de uma atualização em um formulário.

Este evento ocorre após a validação do formulário (onValidate e onValidateSuccess), ao clicar no botão Salvar, e antes de executar o comando SQL de Update do registro no banco de dados.

 


Exemplo: Consultamos uma tabela de privilegios de usuário antes de atualizar o registro, caso o mesmo não tenha tal privilégio, mandamos uma mensagem de erro.

sc_lookup(priv_upd ," select priv_upd from tb_privilegios where login = [var_login] ");

if({priv_upd [0][0]} != 'SIM'){

  sc_error_message(" você nao tem privilégios para executar esta operação ");

}

onAfterUpdate

Este evento ocorre após uma atualização.

Este evento ocorre após clicar no botão Salvar do formulário. O formulário executará então os eventos onValidate, onValidateSuccess e onBeforeUpdate, e logo após executar o comando SQL para inserir o registro do banco de dados, ele executará o evento onAfterUpdate.

 


Exemplo: Após a atualização de um registro no banco de dados queremos gravar numa tabela de log a operação de atualização.

sc_exec_sql(" insert into log values ([glo_usuario],'tabela alvo','atualização',{campo_chave}) "); //inserimos o id do usuário que estava armazenado em uma variável de sessão [glo_usuario] e a chave do registro recém incluído {campo_chave}.

onBeforeUpdateAll

Este evento ocorre antes atualização de um registro em um formulário do tipo multiplo registro.

Este evento ocorre após clicar no botão Salvar do formulário de múltiplos registros. O formulário executará então os eventos onValidate e onValidateSuccess, e em seguida executará o evento onBeforeUpdateAll antes de iniciar a execução dos comandos SQL de atualização dos registros no banco de dados.

Obs: Este evento é acionado apenas uma vez, independente da quantidade de linhas atualizadas em um clique no botão Salvar.

 


Como exemplos podemos verificar no exemplo abaixo, consultamos uma tabela de privilegios de usuário antes de atualizar o registro, caso o mesmo não tenha tal privilégio, mandamos uma mensagem de erro.

sc_lookup(priv_upd ," select priv_upd from tb_privilegios where login = [var_login] ");

if({priv_upd [0][0]} != 'SIM'){

sc_error_message(" você nao tem privilégios para executar esta operação ");

}

onAfterUpdateAll

Este evento ocorre após atualização de um registro em um formulário multiplo registro.

Este evento ocorre após clicar no botão Salvar do formulário de múltiplos registros. O formulário executará então os eventos onValidate, onValidateSuccess e onBeforeUpdateAll, e logo após executar todos os comandos SQL para atualizar os registros no banco de dados, ele executará o evento onAfterUpdateAll.

 


Podemos por exemplo, após atualizar os itens de uma nota fiscal, (tb_itens_nf), em um form de múltiplos registros , atualizar na tabela "pai" (nota_fiscal), o valor total dos produtos.

sc_lookup(tot," select sum(valor_item) from tb_itens_nf where num_nf = {num_nf} ");

{tmp_tot} = {tot[0][0]};

sc_exec_sql("UPDATE tb_itens_nf SET total_itens = {tmp_tot} WHERE num_nf = {num_nf} ");

onBeforeDelete

Este evento ocorre antes de um registro ser deletado em um formulário.

Este evento ocorre após a validação do formulário (onValidate e onValidateSuccess), ao clicar no botão Excluir, e antes de executar o comando SQL de exclusão do registro no banco de dados.

 


Exemplo: Vamos consultar uma tabela de privilegios de usuário antes de excluir o registro , caso o mesmo não tenha tal privilégio, mandamos uma mensagem de erro.

sc_lookup(priv_del," select priv_del from tb_privilegios where login = [var_login] ");

if({priv_del[0][0]} != 'SIM'){

  sc_erro_mensagem(" você nao tem privilégios para executar esta operação ");

}

onAfterDelete

Este evento ocorre após que algum resgistro tenha sido deletado.

Este evento ocorre após clicar no botão Excluir do formulário. O formulário executará, na sequência, os eventos onValidate, onValidateSuccess e onBeforeDelete, e então, logo após executar o comando SQL de exclusão do registro no banco de dados, ele executará o evento onAfterDelete.

 


Exemplo: Depois da exclusão do registro podemos criar logs com facilidade, conforme o código abaixo:

sc_exec_sql(" insert into tb_log values([glo_usuario],'exclusao','tabela_clientes',{codigo}); //gravamos alem dos literais 'exclusão' e 'tabela_clientes', a variável de sessão [glo_usuario], e a variável local {codigo}, que continha o conteúdo do campo código recém excluído

onBeforeDeleteAll

Este evento ocorre antes de um registro ser deletado em um formulário.

Este evento ocorre após clicar no botão Excluir do formulário de múltiplos registros. O formulário executará então os eventos onValidate e onValidateSuccess, em seguida ele executará o evento onBeforeDeleteAll antes de iniciar a execução dos comandos SQL de exclusão dos registros no banco de dados.

Obs: Este evento é acionado apenas uma vez, independente da quantidade de linhas removidas em um clique no botão Excluir .

 


Como exemplos podemos verificar no exemplo abaixo, consultamos uma tabela de privilegios de usuário antes de excluir o registro , caso o mesmo não tenha tal privilégio, mandamos uma mensagem de erro.

sc_lookup(priv_del," select priv_del from tb_privilegios where login = [var_login] ");

if({priv_del[0][0]} != 'SIM'){

sc_erro_mensagem(" você nao tem privilégios para executar esta operação ");

}

onAfterDeleteAll

Este evento ocorre após algum registro do form multiplo registro seja deletado.

Este evento ocorre após clicar no botão Excluir do formulário de múltiplos registros. O formulário executará então os eventos onValidate, onValidateSuccess e onBeforeDelete, e logo após executar todos os comandos SQL para excluir os registros no banco de dados, ele executará o evento onAfterDeleteAll.

Obs: Este evento ocorre apenas uma vez independentemente da quantidade de registros excluídos por vez.


Ex: Em um form de itens de pedido (multiplos registros), desejamos excluir o pedido caso todos os itens da tela sejam excluídos.

sc_exec_sql(" DELETE FROM adm_pedidos WHERE pedido_id = {pedido} ");

Editor de Código

O editor de códigos do Scriptcase é utilizado dentro dos eventos e conta com uma série de atalhos para ajuda-lo no desenvolvimento de suas aplicações.

Editor de eventos do Scriptcase

Na parte superior do editor existem algumas opções que nos permite por exemplo mudar o tema do editor ou expandi-lo. Estas opções também podem ser ativadas utilizando as teclas de atalho.

  • Full Scream - Aumenta a área ocupada pelo seu editor de codigo.
  • Full Scream - Expande as laterais do editor de código.
  • Search - Ativa a busca no editor de código.
  • replace - Ativa a replace no editor de código.
  • Editor de eventos do Scriptcase - Define o tema de editor de codigo.

As teclas de atalhos estão disponíveis em todos os navegadores compatíveis com o Scriptcase

Clique aqui para visualizar nossa documentação sobre as taclas de atalho do Scriptcase.