Eventos
Nos blocos de eventos podem ser utilizadas variáveis globais, locais, códigos JavaScript, códigos CSS e macros.
onApplicationInit
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
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
onLoadRecord
onLoad
onRefresh
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 é 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 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 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 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 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 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
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 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 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 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 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 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 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 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 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.
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.
- - Aumenta a área ocupada pelo seu editor de codigo.
- - Expande as laterais do editor de código.
- - Ativa a busca no editor de código.
- - Ativa a replace no editor de código.
- - 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.