Incluir múltiplos registros (Detalhes) num Form Mestre-Detalhes sem a ID Mestre.

Senhore(a)s,

Boa tarde.

Peço desculpas antecipadamente se por acaso o tópico estiver duplicado e/ou resolvido.

Procurei MUITO antes de postar e não encontrei nada relacionado - abri vários Tickets (pagos) relacionados na SC, mas até agora, nada de solução …

Seguinte:

Um cliente precisa Incluir/Associar múltiplos registros (em tempo de execução) de um Form tipo “Entidade Fraca” (Ex.: Form de Livros - com Nome do Livro, Autor, Edição, etc) em um Form Principal (Pessoas) sendo que o cadastro da Pessoa ainda não foi feito no banco e essa Pessoa ainda não tem um ID parra ser associado aos registros dos Livros.

Essa é uma necessidade específica do cliente. Ele NÃO ACEITA, primeiro cadastrar a Pessoa e depois ter que voltar para associar os livros a essa pessoa. Por uma exigência do processo interno dele, ele tem que fazer o cadastro todo (Pessoa e associar os Livros ), tudo de uma única vez.

Há forma rápida de fazer isso no SC?

Obs.: imagem ilustrativa de um outro sistema (não foi feito com SC) que fazer isso - abaixo.

Ah sim como fazer.
Crie uma tabela temporária para o registros do detalhe.
Quando for salvar o mestre capture o id e movimente os registros da tabela temporária para a tabela definitiva de detalhe salvando o id do mestre

Oi, Haroldo,

Obrigado pelo retorno rápido.

Me parece uma boa sacada. Elegante e rápida também, porém como há dezenas de usuários simultâneos, às vezes centenas fazendo a mesma coisa (cadastro), como identificar facilmente que registros temporários são de que usuário (operador que está fazendo o cadastro)?

A outra questão é: algumas vezes os usuários não concluem o cadastro (por motivos diversos), como eliminar esse “lixo temporário”? Fazendo um “garbage collector” no banco para apaga-los por data de criação?

Já passou por algo parecido? Se sim, que solução encontrou?

Grato.

Isso se resolve de maneira simples:
Inclua na tabela temporária uma campo char(32) e insira a sessão do php nele.

Ao filtrar os dados para movimenta-los para tabela itens definitiva vc filtra pela sessão do php, assim vc mantém a compatibilidade multiusuário.

Segunda questão:

incluir uma data hora na tabela temporária e sempre no login : Delete from tabtemp where data < curdate();

e toda vez que entrar na aplicação (quando houver registros na tabela temporária para a sessão atual do PHP) abrir janela de dialogo informando que há registros temporários e se deseja manter ou limpar. (aqui usar a sessão para limpar)

Tem como trabalhar com Cookies também (como fazem os sites de lojas virtuais no carrinho de compra)

Sempre há solução para as mais diversas situações, as vezes algumas mais elaboradas e outras não.

Oi, Haroldo,

Imaginei que, na versão atual (9.3) o SC tratasse isso de forma “nativa”, sem ter que apelar para “gambis” - é por isso que tem colegas “desabafando” por aqui …

De qualquer forma, agradeço imensamente pelas dicas.

Nada melhor que o conhecimento e domínio da ferramenta para contornar essas situações.

Mais uma vez, obrigado!

É, quanto a mestre detalhe o SC precisa evoluir mais.

Deixei a tempos sugestão para NM criar um tipo de campo que monta uma grid baseado num SQL para usar como detalhe de um formulário mas nunca obtive qualquer feedback sobre a sugestão.

Eu tenho meus próprios formatos para mestre detalhe (sem iframe), mas para tal venho construindo classes php para facilitar no processo.

Mas as dicas dadas aqui não são difíceis de implementar.

Qualquer coisa é só gritar que agente acode.

O SC permite consultas e formulário em tabelas temporárias?

A tabela temporária não.
Quando digo tipo temporária é porque conterá os dados temporariamente (geralmente uso com engine MyIsam).
A temporariedade da tabela é controlada pelo programador.

A NetMake respondeu algo referente a isso ?
Mandei um e-mail a quase 2 semanas, mas sem resposta.
O Form com mestre/detalhe deveria incluir de forma única, é muito ruim ter q incluir 1 para depois incluir o outro…

Esse é o padrão do Scriptcase desde que foi lançado, para incluir o registro PAI e continuar na mesma página para digitar os dados do filho ‘linhas’, habilite esta opção:

Oi Jailton, eu me refiro a incluir tudo ao mesmo tempo…
Atualmente você precisa incluir 1 para depois incluir outro.

Acho difícil eles alterarem.

2 Curtidas