Mestre/detalhe problemas ao excluir - Resolvido

Ao excluir dados usando o formulário mestre, a aplicação não realiza a exclusão de dados e faz um redirecionamento para a aplicação detalhe (não existem dados na aplicação detalhe).

A ligação mestre/detalhe é feita com a ajuda de um formulário gridview que possui um sc_redir para uma consulta no evento onScriptInit.

O que eu percebi é que quando a ligação mestre/detalhe é feita para um gridview e esse não possui sc_redir no onScriptInit a exclusão funciona 100%.

Outra coisa que eu percebi também é que quando fazemos uma ligação mestre/detalhe direto em uma consulta, elementos como o cabeçalho e os botões não aparecem.

Alguém já passou por isso?

Jcruz,

O sr. está trabalhando com qual versão do SC?

O Sr. tem algum código nos eventos que possam ocasionar este problema? Já testou comentar seus códigos para verificar se o problema acontece?

att,
Bernhard Bernsmann

Bom dia.

O senhor usou a macro sc_commit_trans antes da macro sc_redir?

sc_commit_trans (“Conexã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.

Boa tarde,

Estou usando a versão 6 do SC.

Não existe nenhum código na aplicação mestre e nem na aplicação detalhe, o único código que existe é na aplicação que é usada como ponte nesse relacionamento, nessa aplicação existe um sc_redir() apenas.

Fiz o uso da sc_commit_trans() no onAfterDelete do mestre, mas tbm não adiantou.

Só lembrando que o erro acontece somente quando é feita a exclusão de dados do formulário mestre, por algum motivo isso não acontece e a aplicação mestre executa um redir para uma das aplicações detalhes que estão vinculadas.

O erro não acontece quando o mestre esta ligado a um formulário gridview.

É algo que está acontecendo a umas duas semanas, antes estava tudo bem.

Em modo debug, é isso que ele gera, mas logo em seguida a aplicação se auto-redireciona para outra aplicação

(mssql): SELECT COUNT(*) FROM dbo.tb_email WHERE id_email_tipo = ‘19’

(mssql): BEGIN TRAN

Corrigido na release 7.1.002.

Versão já disponível para download

Ok, vou tentar sua proposta.

Obrigado.

Fiz a atualização para a release 7.01.0003, mas novamente se encontra o problema na aplicação.

Ao remover a macro sc_redir, o processo funciona?

Fui ao código fonte da aplicação e verifiquei que o SC roda esse código ao explcuir:

if ($this->nmgp_opcao == "excluir") 991| { 992| $GLOBALS['script_case_init'] = $this->Ini->sc_page; 993| $_SESSION['sc_session'][$this->Ini->sc_page]['redir_banner_produto']['embutida_form'] = false; 994| $_SESSION['sc_session'][$this->Ini->sc_page]['redir_banner_produto']['embutida_proc'] = true; 995| $_SESSION['sc_session'][$this->Ini->sc_page]['redir_banner_produto']['reg_start'] = ""; 996| require_once($this->Ini->root . $this->Ini->path_link . SC_dir_app_name('redir_banner_produto') . "/redir_banner_produto.php"); 997| require_once($this->Ini->root . $this->Ini->path_link . SC_dir_app_name('redir_banner_produto') . "/redir_banner_produto_apl.php"); 998| $this->redir_banner_produto = new redir_banner_produto_apl; 999| $_SESSION['sc_session'][$this->Ini->sc_page]['redir_banner_departamento']['embutida_form'] = false; 1000| $_SESSION['sc_session'][$this->Ini->sc_page]['redir_banner_departamento']['embutida_proc'] = true; 1001| $_SESSION['sc_session'][$this->Ini->sc_page]['redir_banner_departamento']['reg_start'] = ""; 1002| require_once($this->Ini->root . $this->Ini->path_link . SC_dir_app_name('redir_banner_departamento') . "/redir_banner_departamento.php"); 1003| require_once($this->Ini->root . $this->Ini->path_link . SC_dir_app_name('redir_banner_departamento') . "/redir_banner_departamento_apl.php"); 1004| $this->redir_banner_departamento = new redir_banner_departamento_apl; 1005| }

Esse comportamento é correto?

Segundo o Yuri (por e-mail):

Referente ao problema do detalhe no momento da exclusão do mestre, realize a seguinte operação abaixo: Remova o código referente a macro sc_redir do evento onScriptInit dos formulários detalhe, e adicione no evento Onload. Gere os fontes e teste novamente.

OBS: Ao utilizar a macro sc_begin_trans antes do evento sc_redir, utilize da forma abaixo:
sc_begin_trans ();