GARANTIR DESCONTO

Fórum Inserir registro com Master/Detail #346196

18/09/2007

0

Pessoal,

Fiz várias pesquisas aqui no forum e ainda estou com duvidas. O problema é o seguinte:

Estou trabalhando com DBXpress e master/detail, sem grandes problemas, faço os relacionamentos dos cds e tudo funciona bem.

Quero incluir um novo registro nesta estrutura, pelo que pesquisei aqui, a solução que encontrei foi atraves de um generator, onde rodaria uma rotina (sp) que me retornaria o codigo desta tabela master (pk), antes de gravar, inseriria este codigo no cds master e depois executando o applyupdate.

Minha duvida, o clientdataset não consegue retornar este valor automaticamente? Imaginei algo desta forma:

if cds_master.applyupdates(0) = 0 then
//neste momento ja teria a chave do registro master
if cds_detail.applyupdates(0) = 0 then
Showmessage(´registro gravado com sucesso´);

Assim não precisaria executar um store procedure para buscar a chave da tabela master antes de mandar gravar no banco.

Isto é possível? Ou estou viajando.

Abraços

Rodolfo


Rodolfo.pirolo

Rodolfo.pirolo

Responder

Posts

18/09/2007

Mmoreira

Cara posso estar falando uma grande besteira mas ate onde sei isso que voce esta querendo fazer nao é possivel pois o valor desta chave primaria do cds master nao foi enviada para o mesmo. O que eu faco neste caso é no AffterInsert do CdsMaster é uma rodar uma funcao que acessa um generator no Banco de Dados e me retorna o novo codigo unico .. ai pronto no CdsFilho este codigo ja é informado.
No meu caso eu trabalho com Firebird e funciona perfeitamente.
Qualquer duvida posta ai.
Abs!


Responder

Gostei + 0

18/09/2007

Raserafim

já que vc utilia o ClientDataSet, então tudo fica mais fácil.

eu faço da seguinte forma.

antes de salvar eu pego o próimo código disponível, então coloco no registro Master e em todos os registros Detalhe

dá uma olhada neste post que vai te ajudar:
[url]http://forum.devmedia.com.br/viewtopic.php?t=89900&highlight=[/url]


Responder

Gostei + 0

19/09/2007

Rodolfo.pirolo

Mas era exatamente isto que não queria fazer.

Não gostaria de ter que rodar uma rotina antes de mandar gravar o cds_master, pensei que o cds tivesse algum evento que retorne o registro que foi gravado.

Então, vamos fazer o que todo mundo faz.

Obrigado pelas respostas.

Abraços

Rodolfo


Responder

Gostei + 0

19/09/2007

Raserafim

rodolfo, realmente seria interessante se tivesse uma forma de não fazser isso e o ClientDataSet retornasse isso.

eu não conheço.

mas sugiro que tente mais um pouco e nos avise se encontrar alguma outra forma.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar