>>> ==OPF== >>> Cliente := TCliente.Retrieve(ID); <<-- monta query, pesquisa, etc. >>> Cliente.Nome := 'Outro Nome'; >>> Cliente.Save; <<-- cache, controle transacional, tudo aqui dentro. >>> >>>>>>>>> E olha que eu escolhi um modelo de dados sem herança, pra ficar mumu >>>>>>>>> pra TDataset. >>> >>> Ta tirei o EDIT, quer dizer só mando o valor, sem dar um EDIT, mas tenho um >>> SAVE = POST, os cache/transaction no OPF não existem ? onde eu faço varias >>> alterações e mando salvar tudo de uma vez para que se der um problema eu >>> possa fazer um ROLLBACK ??? >>> Este exemplo ta meio desproporcional...
>> Por favor, esclareça melhor a sua dúvida (ou as dúvidas). Onde eu implemento uma TRANSAÇÂO ? se der pau para fazer um ROLLBACK..... TIPO usado seu exemplo... : try cliente.insert; Cliente.Nome := 'fulano'; contrato.insert; Contrato.data := 'hoje'; nota.insert; nota.id := '00001'; itens.insert; itens.nota := 'item 001'; cliente.save; contrato.save; nota.save; itens.save; ALL.APPLYUPDATE ( -1 ); <<- e somente aqui salva tudo e se der um pau exception all.roolback(); <<-- volta tudo sem cadastrar nadinha nos bancos !!! end; >>> Pra quem acha que EDIT´s são melhores que DBEDIT´s, isso ai Fudeu com tudo >>> mesmo porque os controles ficaram mais ainda longe das mãos dos >>> programadores.... não que eu não ache isso maravilhoso, muito pelo >>> contrario, quanto menos codigo melhor... > Que controles você precisa? EU !, De nenhum.... Quando menos tiver que me preocupar com controles disso-daquilo melhor, ganho em produtividade... eu disse PRA QUEM ACHA, afinal a discusão era DBWARE ou não... >>> BOM mas o que o OPF do RETRIEVE usou para se ligar ao BANCO ? não foi um >>> DBWARE ? tipo um TTABLE ? TQUERY ? TDATABASE ? e para visualizar as coisas, >>> vou ter que fazer um label1.caption := cliente.nome ? >>> Explique mais, ou mostre onde posso conseguir mais coisa.... to começando a >>> gostar do bixim.... >Cliente := TCliente.Retrieve(ID); >TClienteEditPresenter.Run(Cliente); > >Em duas linhas você traz o cliente, mostra pro usuário, o usuário altera >o que quer, clica OK, e o que o usuário alterou é enviado para o banco >em uma única transação. > >TClienteEditPresenter.Run; > >Em uma linha você faz tudo o que eu falei acima, mas ao invés de >alterar, você cria um novo cliente. Detalhe - nem precisa se preocupar >em criar instância de coisa nenhuma. Nem destruir (use o FastMM se você >não acredita). Acho que vou precisar experimentar para ver como é o trem ai... pra continuar a thread.. hehehhe.... Pois tem que ter uma ligação pra esse RUN ai uai... ele tem que estar ligado a um FORM que vc construiu... o o negocio é magico d+ Vejo um exemplo que pra LOGIN o cara faz uma aplicação completa agora vc vem com 2 linha que abre, localiza, edit, salva, create, destroiu e nem ligou ela ao banco ele adinhou tudo... ai ficou vago... heheheheh.... >>>>>> ==DBAware== >>>>>> >>>>>> DBAware é orientado a TDataset (win32) e ainda assim fica pendurado em >>>>>> um componente (DB*) e a um datasource. Se você quer um componente >>>>>> 'Combo' mais envenenado, ele tem que entender DBAware. Se o seu Dataset >>>>>> estiver em um DataModule e por desencargo do destino a ligação quebrar >>>>>> (nisso o Delphi melhorou um bocado), você tem que reabrir o form e >>>>>> refazer a bendita. >>> >>> é isso de quebrar realmente acontecia muito com D2.... mas no D6 nunca >>> aconteceu comigo.... E eu te juro que na época eu achava uma coisa "normal". >>>>>> ==MVP== >>>>>> >>>>>> MVP é totalmente desacoplado, é o framework que entende o componente, e >>>>>> não o contrário. O formulário que usa o padrão MVP *não tem código*, >>>>>> você pode mandar os .pas e os .dfm para uma empresa de design, entregar >>>>>> uma licença de Delphi pra eles, eles usam qualquer componente que eles >>>>>> quiserem, você tras os novos formulários para o seu projeto e recompila. >>>>>> A única exigência é que os componentes continuem com o mesmo nome, >>>>>> porque MVP pode ser bom, mas não é feiticeiro. >>> >>> HUmmm isso realmente parece bom... Isso é só o começo. >>>>>> Teria mais um monte pra falar, mas encerro aqui minha participação nessa >>>>>> thread com esse mini-artigo (a menos que os colegas tenham dúvidas). >>> >>> Vixe... varias... mas vamos deixar para quando vc chegar no BETA ai eu vou >>> ser um que vai querer testar isso ai... porque em PRÉ-ALFA, num vai dar.... Pré alfa não significa cangalha. Significa que ainda tem mais código pra vir. Eu, no seu lugar, baixaria e fuçaria até virar do avesso. Pra quem gosta de Assembly isso é um prato cheio. O framework está estável, como eu já te disse, tenho ele em produção. BLZ vamos ver no que vai dar..... Mas assim como troquei o CLIPPER por DELPHI vou acabar trocando o DELPHI por PHP um dia..... ;-) [As partes desta mensagem que não continham texto foram removidas]