Olá meus amigos.
Estou com um formulário do tipo Registro Único (mestre-detalhe).
Criei um botão PHP que copia o registro atual (tabela mestre), gera um novo ID, copia os registros da tabela filha e grava normalmente no banco. A cópia está funcionando corretamente.
O problema é que, após a inserção, eu quero que o novo registro (copiado) apareça na tela, mas não acontece. Ele volta para o primeiro registro da tabela. O novo registro só aparece corretamente se eu sair da aplicação e entrar novamente.
Alguém já passou por isso ou sabe como fazer o formulário Registro Único posicionar automaticamente no novo registro após um INSERT via botão PHP?
Vou colocar o código abaixo para facilitar a análise.
sc_begin_trans();
//Captura ID origem
$id_origem = (int){ECF_NUMERO};
//Insere orçamento (SEM ECF_NUMERO - Auto Incremento)
$sql_mestre = "
INSERT INTO orcament
(CLI_CODIGO, MO, MATERIAL, DESC_ORC, MO_PERCENTUAL)
VALUES
({CLI_CODIGO}, {MO}, {MATERIAL}, ‘". str_replace(" (Cópia)", “”, {DESC_ORC}) ." (Cópia)’, {MO_PERCENTUAL})
";
sc_exec_sql($sql_mestre);
//Pega ID novo
sc_lookup(idnovo, “SELECT LAST_INSERT_ID()”);
$id_novo = {idnovo[0][0]};
//Copia itens
$sql_itens = "
INSERT INTO itorc
(ECF_NUMERO, PRO_CODIGO, PRO_QUANTIDADE, PRO_VENDA, IOR_TOTAL)
SELECT
$id_novo, PRO_CODIGO, PRO_QUANTIDADE, PRO_VENDA, IOR_TOTAL
FROM itorc
WHERE ECF_NUMERO = $id_origem
";
sc_exec_sql($sql_itens);
// Confirma na base de dados
sc_commit_trans();
OBS.: já tentei diversos codigos:
sc_commit_trans();
sc_redir(form_orcamento, ECF_NUMERO=$id_novo);
echo “”;
sc_exit();
Também tentei usar variável global:
[glo_novo_id] = $id_novo;