Sc_redir no mesmo form em edição

Bom dia!
Estou encontrando dificuldades com um sc_redir, preciso que ele faça o seguinte:

  • em um fórmulario (não tem grid) quando o usuário informa o CPF/CNPJ eu rodo um evento ajax que verifica se a empresa existi, se existi eu uso o sc_redir enviado o id como parâmetro para este mesmo formulário alterar para edição, porem ele nunca cai em edição, só inclusão

  • o evento ajax onchange está assim:
    sc_lookup(ds,"SELECT id, cpf_cnpj FROM tabela.empresas WHERE cpf_cnpj = “.sc_sql_injection($cpf_e_cnpj_formatado).” ",“conn_sistema”);
    if (empty({ds[0][0]})){//se a empresa nao existir

    }
    else{//se a empresa existir entrar em edição
    sc_redir(form_empresas.php, id={ds[0][0]}, “_parent” );
    }

qual é a chave primária desse formulário chamado?

Insisto na pergunta mesmo vendo que esta enviando o id com parâmetro do sc_redir.

Outra pergunta: E se no sc_select {ds} estiver vindo como FALSE e não existir {ds[0][0]} ???

A chave primária é o id, nessa caso tô recuperando ela pelo lookup {ds[0][0]}.
Se vier falso, significa que a empresa não existi, nesse caso eu vou continuar preenchendo o form no modo inclusão que ele já está.

Você chegou a criar a variável global id nesta aplicação para que ela receba um valor?

Uma outra opção é fazer o contrário: se o registro não existir, você pode executar os comando sc_apl_conf(form_empresas.php,‘start’,‘new’); para configurar a aplicação para abrir no modo de exclusão e dar um sc_redir para ela sc_redir(form_empresas.php,’’,’_parent’);

E se o registro exibir, pasta inserir os valores nos referidos campos dos mesmos.

Que Deus te abençoe.

Eu perguntei se {ds} vier falso, se seu código esta funcionando corretamente.
Eu acho que não.

Quanto ao comentário do Sr @luisbuzatto, não tem que criar global ID no formulário chamado. O próprio sc se encarrega de tratar o campo e se for chave primária já ir para edição do mesmo.

Bom dia, Haroldo, tudo bem? Espero que sim.

Muito obrigado pela dica. Eu não tinha conhecimento disso. Que Deus te abençoe.

não se pode criar globais ou variáveis php como o mesmo nome dos campos scriptcase.

Que estranho, irmão. Eu já fiz isto.

Criei tanto variáveis globais quanto variáveis locais com o mesmo nome do campo e deu tudo certo. Exemplo:
{codigo} = [codigo];
$codigo = {codigo};

Pelo menos até onde eu trabalhei nunca chegou a dar problema. Mas você falando agora percebo que não é uma boa prática e tratarei de mudá-la. Que Deus te abençoe.

Estude o fonte gerado pelo scriptcase e verás como o scriptcase trata variáveis php e globais.

Entendi. Muito obrigado, irmão. Que Deus te abençoe.

Quando se refere a falso, seria assim:
sc_lookup(ds,"SELECT id, cpf_cnpj FROM tabela.empresas WHERE cpf_cnpj = “.sc_sql_injection($cpf_e_cnpj_formatado).” ",“conn_sistema”);

if ({ds} === false){
echo "Erro de acesso. Mensagem = " . {ds};
}
elseif (empty({ds[0][0]})){//se a empresa nao existir
echo “Empresa não existi”;

}

else{//se a emnpresa existir
sc_redir(portal_form_empresas.php, id={ds[0][0]}, );
}

Porem ainda não consigo redirecionar em modo edição, dei um echo e verifiquei que o ds[0][0] recupera o id do banco sem problemas.

Pois deveria abrir em modo de edição, a não ser que seu formulário esteja com algum código para impedir isso.

Recriei o formulário e adicionei somente o código acima no evento ajax onchange e mesmo assim após o redir ele não retorna em modo atualização.
O fato de ser um formulário em etapas, mudaria alguma coisa na lógica?

Acabei de fazer um teste com um formulário que não é em etapa usando o mesmo código do Ajax onchange e funcionou normalmente, o q me leva a crer que ou é um bug do sc_redir no formulário em etapas, ou esse macro não funciona nesse tipo de formulário.
Olhando na documentação não encontrei nenhuma restrição com relação ao macro neste tipo de formulário, o q me leva a crer q é um bug.

Um detalhe importante. Realmente não sei se é um bug específico de formulários em etapas. Nunca usei esse tipo de formulário.