>>> ==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]

Responder a