DELETE - Botão php

Olá pessoal, …

Seguinte, criei um botão php e nele coloquei o código da excluir os filhos e o pai
Obs.: Haverá condicionamento para excluir da tabela principal, ou se irá para outra tabela de solicitações, conforme o parâmetro do usuário.

Fiz os DELETE nas duas tabelas filhas, e por fim na tabela filho (formulário de 1 registro, que é chamado por uma grid de consulta).
Após os delete, naturalmente vou ficar sem o registro que foi apresentado ao carregar o formulário!, e recebi a seguinte mensagem do SC:

ERRO
Undefined property: form_web_gerencia_tbl_cgche_ini::$nm_bases_access
in_array() expects parameter 2 to be array, null given

Como é apresentado o botão [OK], clico nele e o mesmo retorna para o formulário, com a mensagem de “Registros não encontrado”, pois exclui pelo botão.
No botão tentei utilizar o sc_exit() / sc_exit(ok) para que retornasse a GRID de consulta, porém o mesmo chama a tela do SC, e é interrompido a sessão de desenvolvimento do SC7.

Como proceder para retornar do botão que criei em php, que foi adicionado ao formulário de 1 registro, para a GRID de CONSULTA, esta que chamou o formulário de 1 registro ?

Att,

Jocimar

analise a macro sc_exit.

Cara se eu entendi bem, voce quer mudar o local que botão OK retorna, correto?
Tente usar ees código no final do seu script do botão PHP:

//altera action do botao ok; echo "<script type='text/javascript'> $('document').ready(function(){ $('form').submit(function(e){ e.preventDefault(); window.location='../nome_da_app_retornar'; }); }); </script>";

Obrigado pelos retorno !

Haroldo, tentei usar, como descrito o sc_exit() / sc_exit(ok), mas quando estou desenvolvendo o ambiente de desenvolvimento é fechado na janela que estou testando. Como eu testo: Abro a aplicação: app_Login, faço a autenticação, e do ambiente de desenvolvimento, mando gerar o fonte e retornando a app_Login, no menu árvore, seleciono a aplicação para testar, e ao utilizar a macro o meu ambiente de desenvolvimento é fechado na janela que estou testando (app_Login), e o meu ambiente de desenvolvimento, quando retorno, também já não funciona (não consigo abrir nenhuma app), e volta para tela de login / password do SC7

Almeida, na verdade não preciso mudar o botão de OK, quero apenas clicar nele e retornar para GRID de CONSULTA que chamou o formulário.

Grato,

Jocimar

Estou com problemas na versão 7.1, alterar propriedades de projeto, editar os usuários do SC, o IDE fecha sozinho.

No seu caso, se foi o que entendi, você está deletando o registro corrente do formulário e os filhos desses registro, por isso oformulario esta se perdendo, porque não usar a onvalidate para testar a condiçãod e deleção e a onafterdelete para deletar os filhos? E na OnvalidateSucess retornar a grid?

Ok Haroldo!

Vou fazer como proposto!
O propósito é que se o usuário não têm permissão de aplicar a ação de excluir direto da tabela principal, então será gerado um registro em outra tabela, onde ficam as solicitações do que pretende e a exclusão ficará para encargo de outro usuário.

Grato,

Jocimar

Use as macros sc_commit_trans() e sc_redir() após a exclusão dos registros
[]s

Uso esse código que lhe passei para fazer isso, apartir de um form chamo um botão php, após clicar em ok eu retorno para um grid.
Agora se você testou o código e não funcionou tudo bem, mais aconselho a pelo menos testar.

Almeida,

Utilizei o script e funcionou redondinho, porém a mensagem de erro do SC7 ficou em destaque na tela, pois excluí o registro pai, porém o retorno para a GRID funcionou!
Desculpe-me não ter lido com mais atenção da primeira vez!

Allan,

Não havia tentado com o sc_redir(), funcionou belezinha, porém, a GRID que retorno é executada a partir de um campo tipo Imagem HTML, e ao retornar para GRID da onde foi chamado o FORM de 1 registro, o mesmo não volta mais para a primeira GRID, a que contém um campo Imagem HTML
Então, é assim:
Menu árvore:

  • GRID (Com campo Tipo Imagem HTML)
    – GRID com registros filhos
    — FORM de 1 registro (executado a partir de ligação de aplicação e botão - inclusão- ), o botão é disponível apenas na ligação de aplicação.

Quando faço sc_redir do FORM para GRID com registros filhos, o mesmo, ao clicar em sair/retornar, volta para o FORM, ou seja, vai para frente…

Vou fazer mais alguns testes para ver o que fica melhor, mas o tópico está resolvido…

Obrigado pessoal,

Jocimar

Jocimar,

O problema agora é o erro que o sc gera?

Esse erro é gerado ao clicar no botão de DELETE ou ao clicar no botão de OK?
Marque a opção para mostrar a linha do erro, acesse o código fonte e copie umas 5 linhas acima e umas 5 linhas abaixo para ver se ajuda
agente esclarecer esse erro.

Jocimar,
Tive este problema do botão Retornar tb.
Resolvi substituindo o botão Retornar padrão do SC por um botão PHP. No código dele coloquei um sc_redir, no seu caso para o GRID (Com campo Tipo Imagem HTML)
[]S

Allan,

Utilizei da forma como você descreveu, pois mesmo aparecendo a mensagem do SC7, que no caso se perde por excluir o registro pai (do formulário), como disse o Haroldo, o retorno ficou transparente para o SC7, e na própria GRID que retornei também mudei o botão para retornar para primeira GRID.

Grato a todos,

Jocimar

Haroldo, hoje fiz mais testes com a forma como mencionou.
Resolvi da seguinte forma:
onValidate
Usei para as condições IF do usuário que deve solicitar a exclusão, onde é inserido novo registro/tupla na tabela de solicitações.

on ValidateFailure
Usei para as condições IF do usuário que deve solicitar a exclusão (onde também retornou true em onValidate), e aqui utilizei o sc_redir()

Não utilizei mais nenhum recurso dos eventos, pois nas dependências refiz para criar script para que excluísse também os registros filhos, já que aqui não é necessário inserir registro/tupla na tabela de solicitações.

Uma coisa que reparei é que numa condição IF utilizando sc_btn_delete junto a mais alguma condição em onValidate, a mesma não funciona. Então tive que fazer o IF para sc_btn_delete e se verdadeiro, então criar novo IF para a condição das informações do sistema, para daí funcionar o código.

Assim não funciona
if ( sc_btn_delete && ret_usuchetpm() == “Solicitacao” ){
}

Assim funciona
if ( sc_btn_delete ){
if ( ret_usuchetpm() == “Solicitacao” ){
}
}

Na condição acima para não funcionar numa única condição IF, é que o SC deve estar considerando o parênteses de fechamento da minha função como parênteses final da condição IF, ignorando a execução do mesmo. Corrijam-me se estiver errado, porém foi a única coisa que passou-me.

Att,

Jocimar