olá pessoal tudo bem? espero que sim. Tenho uma aplicação de formulario em uma tabela_master que contem um campo uploadfile que insere arquivos documentos pdf em uma tabela_detalhe. ao inserir arquivos duplicados na table detalhe, o banco de dados gera uma mensagem de exception e o scriptcase apresenta a mensagem na tela. Bem, até aqui tudo certo. Na verdade eu gostaria de manipular o texto da mensagem antes que ela fosse apresentada na tela para que fique mais claro para o usuario.
ou que eu pudesse ter acesso aos documentos que foram selecionados para serem gravados no banco de dados antes de serem enviados de forma que eu pudesse tratá-los no client e nao no server como esta hoje.
Outra coisa, as macros sc_error_message somente tratam erros na tabela master e o problema ocorre na tabela detalhe.
tem alguma ideia de como poderia fazer isso? desde ja obrigado.
Ajuste em Idiomas o texto desejado.
O problema nao é o texto é o texto da mensagem e sim onde (em qual evento) ocorre para que u possa tratar a mensagem padrao por outro alert por exemplo.
A janela de erro que aparece é de javascript?
Eu não tenho como simular essa opção.
Haroldo, no manual do sc temos:
Ex. 1: Utilizando o evento onInsert para tratamento de mensagem devolvida por uma trigger do mssql, que cancela a inclusao do registro e manda uma mensagem de erro no formato: [Microsoft][ODBC SQL Server Driver][SQL Server] Você não pode incluir este registro.
sc_error_continue(“inserir”);
if (!empty({sc_erro_insert}))
{
$tmp = strrpos({sc_erro_insert}, “]”);
if ($tmp !== false)
{
{sc_erro_insert} = substr({sc_erro_insert}, $tmp + 1);
}
sc_error_message({sc_erro_insert});
sc_erro_exit;
isso nao deveria funcionar? pelo que entendi lendo o manual, a sc_error_continue recupera a mensagem de erro retornada por uma exception no banco de dados, armazena a mensagem na variavel sc_erro_insert e ai ou modifico a mensagem e apresento da minha forma seja até mesmo utilizando um alertifyJS. nao seria assim?
Haroldo, me ajude ai por favor …
Existem os eventos onbeforeinsert e onafterinsert. Desconheço evento oninsert no SC.
Seu banco de dados é MSSQL?
Você utiliza triggers para validação?
Haroldo obrigado por responder.
O banco de dados é PostGres e uso uma trigger para testar a duplicidade de arquivos inseridos no multi upload.
quando ocorre uma duplicidade a trigger gera um exception. Dai acredito que não tem
relevancia o tipo de banco de dados.
att
carlos
Então, a documentação não diz claramente para quais bancos esse macro funciona mas tenho a impressão de estar subentendido que seria somente para MSSQL.
Veja com atenção:
https://www.scriptcase.com.br/docs/pt_br/v9/manual/14-macros/01-visao-geral/#sc_error_delete
Na quarta linha escrita:
Ex. 1: Conteúdo da variável {sc_error_delete}, retornando uma mensagem de erro gerada por uma triger do banco de dados usando MsSQL.
É bem verdade que a documentação não explicita a utilização desse recurso e para quais bancos de dados funcionam.
Vale solicitar a Netmake melhorias na documentação do SC.
Olá Harold.
consegui falar com o suporte NMake. Realmente há um erro no manual, poir nao é inserir e sim insert.
Em relação ao banco de dados, a macro sc_error_continue , pode ser utilizada em qualquer um.
o que ela faz é somente guardar a mensagem de erro na variavel global correspondente a operação no banco de dados e assim podemos tratar a mensagem da forma que quisermos nos eventos afterinsert, update ou delete…
obrigado pelo apoio.
ainda continuo sem saber como utilizar as bibliotecas de mensagens customizadas, como alertfifyJS, SweetAlert, JQuery-confirm. Todas são muito interessantes, mas ainda nao consigo usar.
Não sei por que a NM nao incorpora isso no SC?
att
carlos
temos sc_ajax_message para enviar alertas em eventos ajax.
SweetAlert não dá suporte, não funciona em modo mobile, mas em modo desktop é possível sim implementar:
Um exemplo com SA:
https://v9.infinitusweb.com.br/forum_sc/control_test_sweetalert
Em situações que o evento está ocorrendo em ajax alertas javascript não funcionam nem Jquery.
Temos a macro sc_ajax_javascript que funciona em alguns eventos ajax.