esquema cliente - servidor

Delphi

28/09/2005

quando eu faço uma tela de lançamento, tipo uma de vendas, pedido e itens... quando eu registro uma venda, dou um post no cdsvenda (clientdataset mestre). A chave primaria (codvenda) é incrementada através de trigger/generator, automaticamente.
Enquanto eu estou com meu cdsItens(detalhe) em edit mode colocando os itens, como eu recupero o codvenda do client que eu acabei de dar um post, pra colocar na chave estrangeira codvenda dos registros do meu cdsitens?


Grato!


Vitor Rubio

Vitor Rubio

Curtidas 0

Respostas

Crash

Crash

28/09/2005

simples.. deixe para dar applyupdates no fim de tudo. sete o valor do campo codigo para 0 e na key da tabela delhes tb 0... e coloque um tigger no affterinsert:

new.codigo = gen_id(gen_vendas, 1);
update itens_vendas set
  codVenda = new.codigo
where codvenda = 0;


de um applyupdates nas duas tabelas logo que confirmar a venda toda. No caso de transacoes e ibx vc simplismente usaria cacheupdates = true nas querys.

t+


GOSTEI 0
Vitor Rubio

Vitor Rubio

28/09/2005

eu tenho uma trigger parecida com essa, para incrementar o codvenda, só que no BEFORE INSERT, no after insert eu nunca usei. Será que dá mesmo pra recuperar o código antes ... antes de dar o applyupdates e o commitrtaining na transaction?

preciso pegar o código antes de dar applyupdates na venda e antes de dar apply nos itens, enquanto estiver dando post neles...


Se der pra fazer isso que você falou, resolveu um moooooonte de problemas meus e meus programas vão ficar mais rápidos ^^


GOSTEI 0
POSTAR