[firebase-br] MASTER DETAIL com IBO

Marcos R. Weimer marcosweimer em gmail.com
Sexta Julho 24 08:25:26 -03 2020


Gustavo

Se está usando delphi "mais novo", migre para FireDac, aqui usamos IBO por
anos (desde o delphi 6) e com a atualização do delphi a poucos anos
acabamos fazendo testes com o FireDac e os resultados (desempenho) em
alguns casos específicos (insert de vários registros em lotes) foram bem
melhores (além de economizar na licença do IBO). Não lembro exatamente os
valores por que já faz tempo, aqui estamos migrando aos poucos.


-=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 qui., 23 de jul. de 2020 às 15:08, Carlos H. Cantu <
listas em warmboot.com.br> escreveu:

> Acho que o arquivo OptimizingQuerysAndTransaction.rtf que fica na
> pasta docs do IBO tb fala sobre CachedUpdates.
>
> []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> Obrigado Cantu, mas...
>
> GN> ... o controle do PK/FK até imagino como farei mas, preciso realmente
> fazer
> GN> a entrada de dados, usando IboQuery ou IB_Query, com cachedUpdates? Tem
> GN> algum exemplo,  tutorial ou papel de pão, guardanapo de botequin, dando
> GN> dica?
> GN> Perdoee-me a brincadeira, obrigado mais uma vez.
>
>
>
> GN> *Gustavo Novaes *
>
>
>
>
> GN> Em qui., 23 de jul. de 2020 às 13:55, Carlos H. Cantu <
> GN> 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