** RESOLVIDO ** Ajuda com "sc_confirm" e "sc_exec_sql"

Boa tarde a todos.

Tenho a seguinte situação:
Na tela de clientes, além dos dados Pessoais, também cadastro os Dados Profissionais dele.

Nessa tela existe um Botão para Atualizar Dados da Empresa.
Se este botão for clicado:

  • Uma mensagem de confirmação apareçe
  • E caso clique em OK, a tabela de Empresas será Atualizada.

Estou fazendo da seguinte forma, porém não está funcionando ainda.
Alguém tem alguma sugestão de como fazer o sc_exec_sql funcionar APENAS se for clicado no OK do sc_confirm ??

sc_confirm(“Atualizar Dados da Empresa?”)
sc_exec_sql(“UPDATE empresa SET CEP={E_CEP}, TelefoneGeral={E_Fone} WHERE idEmpresa = {Empresa_idEmpresa}”);

Desde já agradeço a atenção.

André,

Até hoje tbm não consegui utilizar essa macro sc_confirm… uma solução que encontrei foi essa:

Criar um novo botão do tipo Javascript com o seguinte código:

confirmar = confirm("Atualizar dados da empresa?")
if (confirmar==true)
  {
     nm_atualiza('alterar'); // rotina a ser executada quando o botão ok for clicado
  }

Depois, esconder o botão “Atualizar” padrão da aplicação na barra de ferramentas e colocar o novo botão criado no lugar dele.

Att.
Robson

Bom Dia,

Eu fiz um teste em uma aplicação do tipo controle e o que está abaixo da macro sc_confirm, só é executada depois que eu clico em “OK”… Qual o tipo de aplicação utilizada por vocês??

Rodrigo Lins.

Rodrigo,

Acabei de testar num formulário simples (único registro), coloquei o sc_confirm nos eventos onBeforeUpdate e tbm no onValidate, mas não consegui…

Ahh… entendi agora… fui eu que não percebi um detalhe que estava no manual: esta macro só funciona com botões php e não com os botões padrões da aplicação, certo?

Criei um novo botão php e o sc_confirm funcionou certinho, apareceu a mensagem e só executou a função se pressionado o “OK”!

Muito obrigado!

Att.
Robson

Bom Dia,

Correto Robson, esta macro só funciona com botões do tipo PHP, se você quer colocar nos eventos, pode fazer alguma coisa parecido com isto:

echo"";

// sc_exit(sel);

Espero ter ajudado.

Rodrigo Lins.

Rodrigo,

Gostei da sugestão, fica muito mais prático desta forma!

Vou aproveitar pra tirar outra dúvida sobre os botões PHP: existe como passar variáveis ou dados da aplicação para o evento deste botão?
Tentei de diversas formas, mas quando o botão é executado ele carrega uma nova página e não tem acesso aos dados da aplicação que originou o evento.

Se eu colocar o código abaixo num botão PHP, a aplicação retorna o erro que o campo/variável não está definido…
echo {meu_campo};

Tive este problema ao tentar realizar uma “adaptação” numa consulta, conforme a msg abaixo:
http://www.netmake.com.br/forum/index.php?topic=1268.msg3896#msg3896

E imagino que o André terá esse mesmo problema se tentar executar a macro sc_exec_sql no botão php, pois não terá como recuperar os valores dos campos:
sc_exec_sql(“UPDATE empresa SET CEP={E_CEP}, TelefoneGeral={E_Fone} WHERE idEmpresa = {Empresa_idEmpresa}”);

Agradeço desde já!

Att.
Robson

Bom Dia Robson,

Estou achando estranho, porque fiz o teste fazendo referencia ao próprio campo dentro do botão e funcionou, porém, você (ou quem não conseguiu) pode tentar trabalhar com variável global da seguinte forma:

  • No campo informar “Gravar Variável” e informar um nome qualquer.
  • Dentro do botão PHP é só fazer referência ao nome criado da variável entre colchetes ( [] ).
    Segue abaixo uma imagem que mostra o código do botão PHP e a configuração do campo.

OBS: Lembrando que nos 2 casos aqui funcionou normalmente. E se não estiverem vendo a imagem me avisem, que se for o caso tento colocar em outro local, mas aqui está mostrando que foi anexado ao post…

Espero ter ajudado.

Rodrigo Lins.


variavel_botao.png

Olá Rodrigo,

Perfeito! trabalhando com variáveis globais o botão está funcionando certinho aqui…

Naquele outro tópico que citei, a aplicação é uma consulta e não um formulário, daí o problema já é outro… Coloquei lá uma “alternativa” que encontrei, não é muito eficiente mas quebra um galho hehe

Muito obrigado pela ajuda!

Att.
Robson

Olá Rodrigo,

Utilizei este exemplo, mas na minha situação, ao clicar no botão de inserir dados, as mensagens do javascript aparecem normalmente, mas em nenhuma das situações (confirmar ou cancelar) os dados são iseridos no banco, e a janela da aplicação é fechada.

O que eu gostaria é o seguinte: fazer a verificação dos campos, de mandeira a alertar o usuário que existem campos em branco e se ele deseja prosseguir. Caso ele prossiga, os dados serão inseridos no banco e a aplicação chamará uma outra. Caso cancele, deve permanecer na mesma aplicação.

Alguém poderia me ajudar com esse código javascript?

Abraço.