Autor Tópico: "[RESOLVIDO]" Macro sc_redir não funciona após inclusão!  (Lida 3187 vezes)

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
"[RESOLVIDO]" Macro sc_redir não funciona após inclusão!
« Online: Junho 21, 2013, 04:40:01 pm »
Olá pessoal, estou com uma dúvida bem interessante!

Tenho um formulário de "Cadastro de Alunos". O usuário ao inserir um novo aluno, "automaticamente" pela macro sc_redir, o sistema passa para o próximo formulário, no caso o de "Matrícula". A macro realmente após o INSERT esta redirecionando para o próximo formulário, porém NÃO esta inserindo os dados no Banco de Dados Mysql.

Quando eu tiro a maco sc_redir, o formulário de Cadastro de Aluno funciona beleza, adiciona no banco. Quando coloco a macro, ele direciona mas não adiciona os dados no banco.

Estou utilizando no evento onAfterInsert  e testei no onValidateSuccess. Ambos redireciona, mas não da o insert.

Alguém sabe o que pode ser?

Obrigado!
« Última modificação: Junho 22, 2013, 12:42:14 pm por FredKeyster »
F. A.
Analista de Sistemas

Jocimar

  • Expert
  • *****
  • Mensagens: 619
Re:Macro sc_redir não funciona após inclusão!
« Responder #1 Online: Junho 21, 2013, 04:52:52 pm »
Fred,

Acredito que terá que dar commit antes do redir

Att,

Jocimar
Jocimar de Oliveira

George Carvalho

  • Expert
  • *****
  • Mensagens: 1369
    • Email
Re:Macro sc_redir não funciona após inclusão!
« Responder #2 Online: Junho 21, 2013, 04:53:39 pm »
Está faltando a macro sc_commit_trans ("Conexão")

Nas aplicações de formulário, em eventos que cotenham qualquer macro que dependa de atualização na base de dados (sc_AfterInsert, sc_AfterUpdate, sc_AfterDelete, sc_BeforeInsert, sc_BeforeUpdate ou sc_BeforeDelete) estão automaticamente protejidas por controle de transação, desde que a conexão seja a mesma da aplicação.

Caso o usuário, em alguma destes eventos, venha a utilizar um redirecionamento de aplicação (macro "sc_redir") deverá, antes do redir, utilizar esta macro para garantir as transações efetuadas anteriormente.

O parâmetro "conexão" é opcional, sendo necessário, apenas, se o comando for executado em uma base de dados diferente da especificada para a aplicação.
George Carvalho
Porto de Galinhas/PE

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Macro sc_redir não funciona após inclusão!
« Responder #3 Online: Junho 21, 2013, 04:57:46 pm »
Já tentei com o "sc_commit();" e principalmente e com "sc_commit_trans"  e não funcionou! A não ser que eu não tenha colocado no local correto. Por exemplo, coloquei no mesmo evento onAfterinsert assim:

sc_commit_trans();
sc_redir(form_matricula.php);


Será que tenho que colocar o "sc_commit_trans();" em outro local?
F. A.
Analista de Sistemas

George Carvalho

  • Expert
  • *****
  • Mensagens: 1369
    • Email
Re:Macro sc_redir não funciona após inclusão!
« Responder #4 Online: Junho 21, 2013, 05:32:03 pm »
O local esta correto, sua aplicação só tem uma conexão?

Fui olhar uma aplicação minha e tem sc_commit_trans (""); não sei se é isto.
George Carvalho
Porto de Galinhas/PE

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Macro sc_redir não funciona após inclusão!
« Responder #5 Online: Junho 21, 2013, 05:49:34 pm »
A minha só tem uma conexão!

Testei com sc_commit_trans (""); Mas continua a mesma coisa.
Isso acontece tanto no ambiente de produção como o de desenvolvimento.

Mais alguma sugestão?
F. A.
Analista de Sistemas

George Carvalho

  • Expert
  • *****
  • Mensagens: 1369
    • Email
Re:Macro sc_redir não funciona após inclusão!
« Responder #6 Online: Junho 21, 2013, 08:15:56 pm »
Infelizmente não tenho mais sugestões.
George Carvalho
Porto de Galinhas/PE

saulobborges

  • Expert
  • *****
  • Mensagens: 1392
    • SGi Sistemas
    • Email
Re:Macro sc_redir não funciona após inclusão!
« Responder #7 Online: Junho 21, 2013, 08:32:49 pm »
Fred dá ua olhadinha no código gerado pelo SC e verifica se o sc_redir esta depois do insert do banco ou dentro de alguma condição que o faça ser executado antes, aí dá pra você saber o que esta acontecendo.

Uma maneira fácil de achar pelo menos o sc_redir é buscar pelo nome da aplicação que você esta direcionando aí vai subindo a partir daí no código e descendo pra ver se você encontra o insert.

Dependendo de onde estiver você pode testar se o insert retornou algum erro ou não e aí sim executar o sc_redir, tipo:

if(!isset({sc_error_insert}){
sc_redir("sua_aplicacao)";
}else{
echo "{sc_error_insert}";
}

Não testei o código acima mas pode ser que tenha algum erro no seu insert, por isso que esta direcionando porém não esta inserindo.

Notem que o uso da macro sc_commit_trans não é necessária se a intenção é redirecionar dentro de eventos pré definidos no SC, ela só é necessária se dentro de um destes eventos você precisa executar uma ação no banco como um outro insert, delete ou update e deseja que a transação seja controla impedindo que dados sejam gravados caso ocorra algum erro na conexão.

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Macro sc_redir não funciona após inclusão!
« Responder #8 Online: Junho 22, 2013, 10:09:54 am »
Olá Saulo, fiz como recomendado:

if(!isset({sc_error_insert})){
   sc_redir(form_matricula.php);
}else{
   echo ({sc_error_insert});
   
}

Porém ele não retorna erro algum, apenas redireciona a aplicação sem da o inserto no banco. Estou começando a achar que é Bug no SC7, visto que esse INSERT é nativo dele. Estou sem alternativas pra testar agora...  =/. Você tem mais alguma sugestão?
F. A.
Analista de Sistemas

Almeida

  • Expert
  • *****
  • Mensagens: 610
    • Email
Re:Macro sc_redir não funciona após inclusão!
« Responder #9 Online: Junho 22, 2013, 10:37:26 am »
Use a macro commit e logo depois de um window.location para ver se vai dar certo.

Se der certo ai pode ser algum erro na macro sc_redir.

Att.
Eliezer Almeida
eliezeralmeidago@hotmail.com
www.infotecsoft.com.br - Modernidade e Eficiência

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Macro sc_redir não funciona após inclusão!
« Responder #10 Online: Junho 22, 2013, 12:17:00 pm »
Consegui resolver na unha mesmo! Usando o header ("Location:..."); Acredito que o redir na V7 esta bugado!
F. A.
Analista de Sistemas

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:"[RESOLVIDO]" Macro sc_redir não funciona após inclusão!
« Responder #11 Online: Junho 22, 2013, 12:44:08 pm »
Olá Almeida, não testei com o  "window.location". Mas pelo que esta ocorrendo, o insert é nativo do SC não deveria esta fazendo isso. Tive que fazer de forma manual mesmo.

Muito obrigado pela ajuda, obrigado a todos!
F. A.
Analista de Sistemas

Bernhard

  • Administrator
  • Expert
  • *****
  • Mensagens: 1619
Re:"[RESOLVIDO]" Macro sc_redir não funciona após inclusão!
« Responder #12 Online: Junho 26, 2013, 06:32:51 pm »
Boa noite,

Vou verificar este problema com nossa equipe de bugs.

att,
Bernhard Bernsmann

Yuri Esteves

  • Administrator
  • Expert
  • *****
  • Mensagens: 818
    • Email
Re:"[RESOLVIDO]" Macro sc_redir não funciona após inclusão!
« Responder #13 Online: Junho 26, 2013, 07:52:28 pm »
Para funcionar é necessário utilizar a macro sc_commit_trans, caso não esteja inserindo corretamente, ligue o modo debug da aplicação e veja o comando apresentado.

Exemplo para funcionar.

sc_commit_trans();
sc_redir(grid_tb_aluno.php);

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:"[RESOLVIDO]" Macro sc_redir não funciona após inclusão!
« Responder #14 Online: Junho 26, 2013, 09:17:56 pm »
Olá Yuri, eu fiz desse mesma forma:

Exemplo para funcionar.

sc_commit_trans();
sc_redir(grid_tb_aluno.php);

Mas não resolveu!
F. A.
Analista de Sistemas