[firebase-br] MASTER DETAIL com IBO

Marcos R. Weimer marcosweimer em gmail.com
Sexta Julho 24 13:35:37 -03 2020


Aqui fazemos tudo em CDS, depois lemos/validamos o CDS e gravamos com
querys, o tal do ApplyUpdates usamos apenas para registros simples,
master/detail não, assim evitamos problemas deste tipo.

-=Ma®©oS=-
Marcos R. Weimer
Pessoas quietas têm as mentes mais barulhentas - Stephen Hawking
Viver significa ter algumas alegrias e muito sofrimento - Pepe Mujica
Muitos daqueles que te chamam de louco queriam ter a sua coragem - Silvio
Santos





Em sex., 24 de jul. de 2020 às 13:17, Gustavo Novaes <gutonovaes19 em gmail.com>
escreveu:

> Desculpem-me a insistência.
>
> Esse cenário/ modelo de dados que estou querendo parece-me não é usual,
> então. Ninguem faz dessa forma.
> Como fazem então? Uma entrada/saída de notas fiscais, por exemplo, típico
> MASTER DETAIL. Informa-se os dados principais (master) itens (details). Se
> cancelar, cancela tudo. Só grava a nota completa no banco após lançados os
> itens e o cabeçalho.
>
>
>
> *Gustavo Novaes *
>
>
>
>
> Em qui., 23 de jul. de 2020 às 14:05, Gustavo Novaes <
> gutonovaes19 em gmail.com>
> escreveu:
>
> > Obrigado Cantu, mas...
> >
> > ... o controle do PK/FK até imagino como farei mas, preciso realmente
> > fazer a entrada de dados, usando IboQuery ou IB_Query, com cachedUpdates?
> > Tem algum exemplo,  tutorial ou papel de pão, guardanapo de botequin,
> dando
> > dica?
> > Perdoee-me a brincadeira, obrigado mais uma vez.
> >
> >
> >
> > *Gustavo Novaes *
> >
> >
> >
> >
> > Em qui., 23 de jul. de 2020 às 13:55, Carlos H. Cantu <
> > listas em warmboot.com.br> escreveu:
> >
> >> Com CachedUpdates vc precisa do valor das PKs/FKs antes de mandar os
> >> dados pro servidor, do contrário, não há como manter o relacionamento
> >> entre os registros pois não se sabe quais IDs seriam atribuidos.
> >> Portanto, você terá que incrementar os generators no OnNewRecord e já
> >> atribuir ao campo especifico, bem como atribuir os IDs dos "pais" nos
> >> registros "filhos" conforme eles vão sendo inseridos, pra que quando
> >> forem enviados pro Firebird já estejam definidos.
> >>
> >> []s
> >> Carlos H. Cantu
> >> eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
> >> www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br
> >>
> >> GN> Boa tarde,
> >> GN> Na minha aplicação antiga (bde + paradox) tinha dificuldades em
> fazer
> >> uma
> >> GN> entrada de dados master-detail. Usava cached updates. O usuário
> >> poderia
> >> GN> inserir/editar dados na tabela pai e  na filha. Após gravar, fazia o
> >> apply
> >> GN> updates para persistir no banco.
> >> GN> O Modelo não funcionava bem. Passei a usar um exemplo de querys
> >> aninhadas
> >> GN> (2 tquerys relacionados), 1 provider, 2 clients datasest onde o 2o
> era
> >> GN> ligado ao tdatasetfield da query2. Beleza, assim ficou.
> >>
> >> GN> Agora que estou migrando pro IBO, deparei-me com um problema.
> >> GN> No banco paradox eu tinha uma estrutura semelhante a essa :
> >>
> >> GN>    1. Campo código, ALFA DE 8, CHAVE PRIMARIA
> >> GN>    2. CAMPO NOME, ALFA 60
> >> GN>    3. campo CodigoEndereco (autoincremento)
> >>
> >> GN> Tenho uma tabela Filial
> >>
> >> GN>    1. Campo CodigoDoPai (alfa de 8) PK
> >> GN>    2. Campo CodigoFilial (Alfa de 8) PK
> >> GN>    3. Nome da Filial
> >> GN>    4. Campo CodigoEndereço (autoincremento)
> >>
> >> GN> Tenho uma tabela de Endereços, que serve tando à empresa como à
> filial
> >>
> >> GN>    1. CodEndereco (inteiro) PK
> >> GN>    2. QuemGravou (alfa, 10) (valores vários EMPRESA ou FILIAL) PK
> >> GN>    3. Campos de endereço/localidades...
> >>
> >> GN> No modelo para FB os campos autoincremento passaram para bigint
> >> calculados
> >> GN> via sequence+trigger (na conversão que fiz automatica, via DataPump,
> >> que
> >> GN> gerou o script - mantive assim)
> >>
> >> GN> Pois bem, repetindo o que disse acima "cria ou altera uma empresa ou
> >> uma
> >> GN> filial, infomando codigo, nome e endereço, tudo de uma vez só, em
> >> cache,
> >> GN> que depois vai pro banco).
> >>
> >> GN> Não estou conseguindo fazer esse "efeito" com o IboQuery e não
> >> encontrei um
> >> GN> exemplo.  Já percebi que não poderei trabalhar com a
> SEQUENCE/TRIGGER
> >> (ou
> >> GN> poderei?), terei que controlar "manualmente" os numeradores.
> >>
> >> GN> Podem me ajudar por favor? Algma dica. Não queria ter que fazer no
> >> modelo
> >> GN> QUERY+PROVIDER+CLIENTDATASET.
> >>
> >> GN> Obrigado.
> >>
> >>
> >> GN> *Gustavo Novaes *
> >> GN> ______________________________________________
> >> GN> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> >> GN> Para saber como gerenciar/excluir seu cadastro na lista, use:
> >> GN> http://www.firebase.com.br/fb/artigo.php?id=1107
> >> GN> Para consultar mensagens antigas:
> >> GN> http://www.firebase.com.br/pesquisa_lista.html
> >>
> >>
> >> ______________________________________________
> >> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> >> Para saber como gerenciar/excluir seu cadastro na lista, use:
> >> http://www.firebase.com.br/fb/artigo.php?id=1107
> >> Para consultar mensagens antigas:
> >> http://www.firebase.com.br/pesquisa_lista.html
> >>
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>


Mais detalhes sobre a lista de discussão lista