Evento onAfterInsert está ocorrendo antes da inserção - SC versão 6

Boa tarde,

Testamos em 2 aplicações nossas e tivemos este problema:
Em um formulário grid editável(view), o evento onAfterInsert não está ocorrendo depois da inserção. Qualquer operação realizada ali irá ocorrer antes da inserção.

Alguém está tendo este problema também?

abs,
Grespon

Grespon,

O onAfterInsert está acontecendo antes do Insert? Você ativou o modo debug para confirmar isto?

att,
Bernhard Bernsmann

Fiz novamente uns testes.
Coloquei um echo"olaaa" no evento onAfterInsert.
O resultado do debug foi mais ou menos assim:

(mysqlt): SET AUTOCOMMIT=0
(mysqlt): BEGIN

(mysqlt): INSERT INTO …
(mysqlt): SELECT …
olaaaa
(mysqlt): COMMIT
(mysqlt): SET AUTOCOMMIT=1

O COMMIT está ocorrendo logo após o evento onAfterInsert.

Em algumas aplicações eu dava um comando sc_redir(“a_propria_aplicação”) no onAfterInsert, pra forçar um reload e colocar os registros na ordem que eu queria na grid. Agora o que acontece é que ele recarrega o formulário antes de completar a inclusão.

Grespon,

Acabo de reportar o bug para nossa equipe.

Uma solução temporária (até o fix do bug), acredito que o Sr. pode utilizar a macro sc_commit e em seguida realizar qualquer procedimento (sc_redir, entre outros).

att,
Bernhard Bernsmann

Bom me deparei com este problema e vou postar o que fiz pra poder ajudar a quem sofreu com isso.

Estou na V7.1 e a solução que a NM sempre dá é a de chamar sc_commit_trans() e então fazer o update na tabela a questão é que esse evento já traz o ultimo id inserido ele chama um “select LAST_INSERT_ID()” e com isso já recupera o id inserido, ou seja não é necessário chamar o sc_commit_trans e nem é preciso atribuir a uma variável o valor de mysql_inser_id(), o que precisa ser feito é no insert da tabela relacionada informar o campo autoincremento que já existe na aplicação no meu caso por exemplo era {PROC_ID}, o SC usa esse campo pra já armazenar o ID que foi inserido pra que ele possa carregar o registro inserido, detalhe se for colocado algum código neste evento pelos meus testes o SC sempre vai voltar para o registro inserido não abrindo um novo formulário em branco, em navegação eu desmarquei a opção de voltar para o registro e mesmo assim o SC continua voltando então aí já não sei se é bug ou se é pelo fato de ter codigo no evento.